phonelib 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1894) hide show
  1. checksums.yaml +8 -8
  2. data/README.rdoc +11 -0
  3. data/data/extended_data.dat +0 -0
  4. data/data/libphonenumber/AUTHORS +4 -0
  5. data/data/libphonenumber/CONTRIBUTORS +68 -0
  6. data/data/libphonenumber/LICENSE +176 -0
  7. data/data/libphonenumber/LICENSE.Chromium +37 -0
  8. data/data/libphonenumber/README.md +112 -0
  9. data/data/libphonenumber/codereview.settings +4 -0
  10. data/data/libphonenumber/cpp/CMakeLists.txt +573 -0
  11. data/data/libphonenumber/cpp/LICENSE +13 -0
  12. data/data/libphonenumber/cpp/README +284 -0
  13. data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.cc +960 -0
  14. data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.h +29 -0
  15. data/data/libphonenumber/cpp/src/phonenumbers/asyoutypeformatter.cc +774 -0
  16. data/data/libphonenumber/cpp/src/phonenumbers/asyoutypeformatter.h +243 -0
  17. data/data/libphonenumber/cpp/src/phonenumbers/base/basictypes.h +208 -0
  18. data/data/libphonenumber/cpp/src/phonenumbers/base/logging.h +41 -0
  19. data/data/libphonenumber/cpp/src/phonenumbers/base/memory/scoped_ptr.h +450 -0
  20. data/data/libphonenumber/cpp/src/phonenumbers/base/memory/singleton.h +95 -0
  21. data/data/libphonenumber/cpp/src/phonenumbers/base/memory/singleton_posix.h +53 -0
  22. data/data/libphonenumber/cpp/src/phonenumbers/base/strings/string_piece.cc +221 -0
  23. data/data/libphonenumber/cpp/src/phonenumbers/base/strings/string_piece.h +194 -0
  24. data/data/libphonenumber/cpp/src/phonenumbers/base/synchronization/lock.h +89 -0
  25. data/data/libphonenumber/cpp/src/phonenumbers/base/synchronization/lock_posix.h +63 -0
  26. data/data/libphonenumber/cpp/src/phonenumbers/base/template_util.h +108 -0
  27. data/data/libphonenumber/cpp/src/phonenumbers/base/thread_checker.h +70 -0
  28. data/data/libphonenumber/cpp/src/phonenumbers/callback.h +88 -0
  29. data/data/libphonenumber/cpp/src/phonenumbers/default_logger.cc +58 -0
  30. data/data/libphonenumber/cpp/src/phonenumbers/default_logger.h +105 -0
  31. data/data/libphonenumber/cpp/src/phonenumbers/encoding_utils.h +51 -0
  32. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.cc +94 -0
  33. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/area_code_map.h +75 -0
  34. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/default_map_storage.cc +65 -0
  35. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/default_map_storage.h +76 -0
  36. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/geocoding_data.h +77 -0
  37. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/mapping_file_provider.cc +175 -0
  38. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/mapping_file_provider.h +75 -0
  39. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.cc +216 -0
  40. data/data/libphonenumber/cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.h +165 -0
  41. data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +11422 -0
  42. data/data/libphonenumber/cpp/src/phonenumbers/logger.cc +27 -0
  43. data/data/libphonenumber/cpp/src/phonenumbers/logger.h +103 -0
  44. data/data/libphonenumber/cpp/src/phonenumbers/matcher_api.h +54 -0
  45. data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +12330 -0
  46. data/data/libphonenumber/cpp/src/phonenumbers/metadata.h +29 -0
  47. data/data/libphonenumber/cpp/src/phonenumbers/normalize_utf8.h +50 -0
  48. data/data/libphonenumber/cpp/src/phonenumbers/phonenumber.cc +87 -0
  49. data/data/libphonenumber/cpp/src/phonenumbers/phonenumber.h +40 -0
  50. data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatch.cc +91 -0
  51. data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatch.h +125 -0
  52. data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatcher.cc +908 -0
  53. data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatcher.h +201 -0
  54. data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.cc +2799 -0
  55. data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.h +826 -0
  56. data/data/libphonenumber/cpp/src/phonenumbers/regex_based_matcher.cc +68 -0
  57. data/data/libphonenumber/cpp/src/phonenumbers/regex_based_matcher.h +61 -0
  58. data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter.h +168 -0
  59. data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_icu.cc +237 -0
  60. data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_icu.h +41 -0
  61. data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_re2.cc +161 -0
  62. data/data/libphonenumber/cpp/src/phonenumbers/regexp_adapter_re2.h +40 -0
  63. data/data/libphonenumber/cpp/src/phonenumbers/regexp_cache.cc +60 -0
  64. data/data/libphonenumber/cpp/src/phonenumbers/regexp_cache.h +77 -0
  65. data/data/libphonenumber/cpp/src/phonenumbers/regexp_factory.h +44 -0
  66. data/data/libphonenumber/cpp/src/phonenumbers/region_code.h +40 -0
  67. data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +2795 -0
  68. data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.h +29 -0
  69. data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.cc +403 -0
  70. data/data/libphonenumber/cpp/src/phonenumbers/shortnumberinfo.h +237 -0
  71. data/data/libphonenumber/cpp/src/phonenumbers/stl_util.h +51 -0
  72. data/data/libphonenumber/cpp/src/phonenumbers/string_byte_sink.cc +33 -0
  73. data/data/libphonenumber/cpp/src/phonenumbers/string_byte_sink.h +40 -0
  74. data/data/libphonenumber/cpp/src/phonenumbers/stringutil.cc +448 -0
  75. data/data/libphonenumber/cpp/src/phonenumbers/stringutil.h +176 -0
  76. data/data/libphonenumber/cpp/src/phonenumbers/test_metadata.cc +888 -0
  77. data/data/libphonenumber/cpp/src/phonenumbers/unicodestring.cc +114 -0
  78. data/data/libphonenumber/cpp/src/phonenumbers/unicodestring.h +133 -0
  79. data/data/libphonenumber/cpp/src/phonenumbers/utf/README +1 -0
  80. data/data/libphonenumber/cpp/src/phonenumbers/utf/rune.c +358 -0
  81. data/data/libphonenumber/cpp/src/phonenumbers/utf/stringpiece.h +23 -0
  82. data/data/libphonenumber/cpp/src/phonenumbers/utf/stringprintf.h +22 -0
  83. data/data/libphonenumber/cpp/src/phonenumbers/utf/unicodetext.cc +520 -0
  84. data/data/libphonenumber/cpp/src/phonenumbers/utf/unicodetext.h +461 -0
  85. data/data/libphonenumber/cpp/src/phonenumbers/utf/unilib.cc +68 -0
  86. data/data/libphonenumber/cpp/src/phonenumbers/utf/unilib.h +99 -0
  87. data/data/libphonenumber/cpp/src/phonenumbers/utf/utf.h +240 -0
  88. data/data/libphonenumber/cpp/src/phonenumbers/utf/utfdef.h +27 -0
  89. data/data/libphonenumber/cpp/test/phonenumbers/asyoutypeformatter_test.cc +1237 -0
  90. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/area_code_map_test.cc +201 -0
  91. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_data_test.cc +176 -0
  92. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_test_data.h +50 -0
  93. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/geocoding_test_program.cc +43 -0
  94. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/mapping_file_provider_test.cc +91 -0
  95. data/data/libphonenumber/cpp/test/phonenumbers/geocoding/phonenumber_offline_geocoder_test.cc +205 -0
  96. data/data/libphonenumber/cpp/test/phonenumbers/logger_test.cc +172 -0
  97. data/data/libphonenumber/cpp/test/phonenumbers/phonenumbermatch_test.cc +92 -0
  98. data/data/libphonenumber/cpp/test/phonenumbers/phonenumbermatcher_test.cc +1226 -0
  99. data/data/libphonenumber/cpp/test/phonenumbers/phonenumberutil_test.cc +3915 -0
  100. data/data/libphonenumber/cpp/test/phonenumbers/regexp_adapter_test.cc +322 -0
  101. data/data/libphonenumber/cpp/test/phonenumbers/regexp_cache_test.cc +60 -0
  102. data/data/libphonenumber/cpp/test/phonenumbers/run_tests.cc +21 -0
  103. data/data/libphonenumber/cpp/test/phonenumbers/shortnumberinfo_test.cc +468 -0
  104. data/data/libphonenumber/cpp/test/phonenumbers/stringutil_test.cc +306 -0
  105. data/data/libphonenumber/cpp/test/phonenumbers/test_util.cc +63 -0
  106. data/data/libphonenumber/cpp/test/phonenumbers/test_util.h +199 -0
  107. data/data/libphonenumber/cpp/test/phonenumbers/unicodestring_test.cc +236 -0
  108. data/data/libphonenumber/cpp/test/phonenumbers/utf/unicodetext_test.cc +45 -0
  109. data/data/libphonenumber/debian/README.source +21 -0
  110. data/data/libphonenumber/debian/changelog +5 -0
  111. data/data/libphonenumber/debian/compat +1 -0
  112. data/data/libphonenumber/debian/control +73 -0
  113. data/data/libphonenumber/debian/copyright +74 -0
  114. data/data/libphonenumber/debian/libphonenumber6-dev.install +3 -0
  115. data/data/libphonenumber/debian/libphonenumber6-java.jlibs +1 -0
  116. data/data/libphonenumber/debian/libphonenumber6-java.poms +39 -0
  117. data/data/libphonenumber/debian/libphonenumber6.install +1 -0
  118. data/data/libphonenumber/debian/maven.cleanIgnoreRules +17 -0
  119. data/data/libphonenumber/debian/maven.ignoreRules +23 -0
  120. data/data/libphonenumber/debian/maven.properties +4 -0
  121. data/data/libphonenumber/debian/maven.publishedRules +19 -0
  122. data/data/libphonenumber/debian/maven.rules +31 -0
  123. data/data/libphonenumber/debian/patches/0003-maven-exclude-demo.patch +13 -0
  124. data/data/libphonenumber/debian/patches/series +1 -0
  125. data/data/libphonenumber/debian/rules +89 -0
  126. data/data/libphonenumber/debian/source/format +1 -0
  127. data/data/libphonenumber/debian/watch +3 -0
  128. data/data/libphonenumber/java/build.xml +303 -0
  129. data/data/libphonenumber/java/carrier/pom.xml +46 -0
  130. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/PhoneNumberToCarrierMapper.java +124 -0
  131. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1242_en +0 -0
  132. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1246_en +0 -0
  133. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1264_en +0 -0
  134. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1441_en +0 -0
  135. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1473_en +0 -0
  136. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1649_en +0 -0
  137. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1671_en +0 -0
  138. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1684_en +0 -0
  139. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1758_en +0 -0
  140. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1767_en +0 -0
  141. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1784_en +0 -0
  142. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1787_en +0 -0
  143. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1809_en +0 -0
  144. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1868_en +0 -0
  145. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1869_en +0 -0
  146. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1939_en +0 -0
  147. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/20_en +0 -0
  148. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/211_en +0 -0
  149. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/212_en +0 -0
  150. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/213_en +0 -0
  151. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/216_en +0 -0
  152. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/220_en +0 -0
  153. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/221_en +0 -0
  154. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/222_en +0 -0
  155. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/223_en +0 -0
  156. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/224_en +0 -0
  157. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/225_en +0 -0
  158. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en +0 -0
  159. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/227_en +0 -0
  160. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/228_en +0 -0
  161. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/229_en +0 -0
  162. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en +0 -0
  163. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en +0 -0
  164. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/232_en +0 -0
  165. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/233_en +0 -0
  166. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en +0 -0
  167. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/235_en +0 -0
  168. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/236_en +0 -0
  169. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/237_en +0 -0
  170. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/238_en +0 -0
  171. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/239_en +0 -0
  172. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/240_en +0 -0
  173. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/241_en +0 -0
  174. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/242_en +0 -0
  175. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/243_en +0 -0
  176. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/244_en +0 -0
  177. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/245_en +0 -0
  178. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/248_en +0 -0
  179. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/249_en +0 -0
  180. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/250_en +0 -0
  181. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/251_en +0 -0
  182. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/252_en +0 -0
  183. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/253_en +0 -0
  184. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/254_en +0 -0
  185. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en +0 -0
  186. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en +0 -0
  187. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/257_en +0 -0
  188. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/258_en +0 -0
  189. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/260_en +0 -0
  190. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/261_en +0 -0
  191. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/263_en +0 -0
  192. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/265_en +0 -0
  193. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/267_en +0 -0
  194. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/268_en +0 -0
  195. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/27_en +0 -0
  196. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/297_en +0 -0
  197. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/298_en +0 -0
  198. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/299_en +0 -0
  199. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/30_en +0 -0
  200. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/31_en +0 -0
  201. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/32_en +0 -0
  202. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/33_en +0 -0
  203. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/350_en +0 -0
  204. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/351_en +0 -0
  205. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/352_en +0 -0
  206. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/353_en +0 -0
  207. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/354_en +0 -0
  208. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/355_en +0 -0
  209. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/356_en +0 -0
  210. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/357_en +0 -0
  211. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/358_en +0 -0
  212. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/359_en +0 -0
  213. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/36_en +0 -0
  214. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/370_en +0 -0
  215. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/372_en +0 -0
  216. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/373_en +0 -0
  217. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en +0 -0
  218. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_be +0 -0
  219. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_en +0 -0
  220. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/375_ru +0 -0
  221. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/376_en +0 -0
  222. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_en +0 -0
  223. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/381_en +0 -0
  224. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/385_en +0 -0
  225. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/386_en +0 -0
  226. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/387_en +0 -0
  227. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/389_en +0 -0
  228. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/39_en +0 -0
  229. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/40_en +0 -0
  230. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/41_en +0 -0
  231. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/420_en +0 -0
  232. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/421_en +0 -0
  233. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/43_en +0 -0
  234. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/45_en +0 -0
  235. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/47_en +0 -0
  236. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/48_en +0 -0
  237. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/49_en +0 -0
  238. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/501_en +0 -0
  239. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/505_en +0 -0
  240. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/506_en +0 -0
  241. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/507_en +0 -0
  242. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/51_en +0 -0
  243. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/53_en +0 -0
  244. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/54_en +0 -0
  245. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/55_en +0 -0
  246. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/56_en +0 -0
  247. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/57_en +0 -0
  248. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/58_en +0 -0
  249. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/591_en +0 -0
  250. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/595_en +0 -0
  251. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/597_en +0 -0
  252. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/598_en +0 -0
  253. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/599_en +0 -0
  254. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/60_en +0 -0
  255. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/61_en +0 -0
  256. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/62_en +0 -0
  257. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/63_en +0 -0
  258. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/64_en +0 -0
  259. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/65_en +0 -0
  260. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en +0 -0
  261. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/670_en +0 -0
  262. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/673_en +0 -0
  263. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/675_en +0 -0
  264. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/676_en +0 -0
  265. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/677_en +0 -0
  266. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/678_en +0 -0
  267. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/679_en +0 -0
  268. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/685_en +0 -0
  269. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/686_en +0 -0
  270. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/7_en +0 -0
  271. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/84_en +0 -0
  272. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_en +0 -0
  273. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/855_en +0 -0
  274. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/856_en +0 -0
  275. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/86_en +0 -0
  276. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/880_en +0 -0
  277. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/90_en +0 -0
  278. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en +0 -0
  279. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/92_en +0 -0
  280. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/93_en +0 -0
  281. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/94_en +0 -0
  282. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/95_en +0 -0
  283. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/960_en +0 -0
  284. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/961_en +0 -0
  285. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/962_en +0 -0
  286. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/964_en +0 -0
  287. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/965_ar +0 -0
  288. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/965_en +0 -0
  289. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/966_en +0 -0
  290. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/967_en +0 -0
  291. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/968_en +0 -0
  292. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/970_en +0 -0
  293. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/971_en +0 -0
  294. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/972_en +0 -0
  295. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/973_en +0 -0
  296. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/974_en +0 -0
  297. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/975_en +0 -0
  298. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/977_en +0 -0
  299. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_en +0 -0
  300. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/992_en +0 -0
  301. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/993_en +0 -0
  302. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/994_en +0 -0
  303. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/995_en +0 -0
  304. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/996_en +0 -0
  305. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/998_en +0 -0
  306. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config +0 -0
  307. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/PhoneNumberToCarrierMapperTest.java +121 -0
  308. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/1650_en +0 -0
  309. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/244_en +0 -0
  310. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/44_en +0 -0
  311. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/44_sv +0 -0
  312. data/data/libphonenumber/java/carrier/test/com/google/i18n/phonenumbers/carrier/testing_data/config +0 -0
  313. data/data/libphonenumber/java/demo/README +16 -0
  314. data/data/libphonenumber/java/demo/build.xml +59 -0
  315. data/data/libphonenumber/java/demo/pom.xml +107 -0
  316. data/data/libphonenumber/java/demo/src/com/google/phonenumbers/PhoneNumberParserServlet.java +298 -0
  317. data/data/libphonenumber/java/demo/war/WEB-INF/appengine-web.xml +11 -0
  318. data/data/libphonenumber/java/demo/war/WEB-INF/lib/commons-fileupload-1.2.1.jar +0 -0
  319. data/data/libphonenumber/java/demo/war/WEB-INF/lib/commons-io-1.4.jar +0 -0
  320. data/data/libphonenumber/java/demo/war/WEB-INF/logging.properties +13 -0
  321. data/data/libphonenumber/java/demo/war/WEB-INF/web.xml +18 -0
  322. data/data/libphonenumber/java/demo/war/favicon.ico +0 -0
  323. data/data/libphonenumber/java/demo/war/phonenumberparser.jsp +39 -0
  324. data/data/libphonenumber/java/demo/war/stylesheets/main.css +26 -0
  325. data/data/libphonenumber/java/geocoder/pom.xml +54 -0
  326. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/PhoneNumberToTimeZonesMapper.java +192 -0
  327. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java +228 -0
  328. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1201_en +0 -0
  329. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1202_en +0 -0
  330. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1203_en +0 -0
  331. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1204_en +0 -0
  332. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1205_en +0 -0
  333. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1206_en +0 -0
  334. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1207_en +0 -0
  335. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1208_en +0 -0
  336. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1209_en +0 -0
  337. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1210_en +0 -0
  338. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1212_en +0 -0
  339. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1213_en +0 -0
  340. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1214_en +0 -0
  341. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1215_en +0 -0
  342. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1216_en +0 -0
  343. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1217_en +0 -0
  344. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1218_en +0 -0
  345. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1219_en +0 -0
  346. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1224_en +0 -0
  347. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1225_en +0 -0
  348. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1226_en +0 -0
  349. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1228_en +0 -0
  350. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1229_en +0 -0
  351. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1231_en +0 -0
  352. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1234_en +0 -0
  353. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1236_en +0 -0
  354. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1239_en +0 -0
  355. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1240_en +0 -0
  356. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1242_en +0 -0
  357. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1248_en +0 -0
  358. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1250_en +0 -0
  359. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1251_en +0 -0
  360. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1252_en +0 -0
  361. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1253_en +0 -0
  362. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1254_en +0 -0
  363. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1256_en +0 -0
  364. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1260_en +0 -0
  365. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1262_en +0 -0
  366. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1267_en +0 -0
  367. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1269_en +0 -0
  368. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1270_en +0 -0
  369. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1272_en +0 -0
  370. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1276_en +0 -0
  371. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1281_en +0 -0
  372. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1289_en +0 -0
  373. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1301_en +0 -0
  374. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1302_en +0 -0
  375. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1303_en +0 -0
  376. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1304_en +0 -0
  377. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1305_en +0 -0
  378. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1306_en +0 -0
  379. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1307_en +0 -0
  380. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1308_en +0 -0
  381. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1309_en +0 -0
  382. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1310_en +0 -0
  383. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1312_en +0 -0
  384. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1313_en +0 -0
  385. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1314_en +0 -0
  386. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1315_en +0 -0
  387. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1316_en +0 -0
  388. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1317_en +0 -0
  389. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1318_en +0 -0
  390. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1319_en +0 -0
  391. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1320_en +0 -0
  392. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1321_en +0 -0
  393. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1323_en +0 -0
  394. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1325_en +0 -0
  395. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1330_en +0 -0
  396. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1331_en +0 -0
  397. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1334_en +0 -0
  398. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1336_en +0 -0
  399. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1337_en +0 -0
  400. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1339_en +0 -0
  401. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1345_en +0 -0
  402. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1346_en +0 -0
  403. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1347_en +0 -0
  404. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1351_en +0 -0
  405. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1352_en +0 -0
  406. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1360_en +0 -0
  407. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1361_en +0 -0
  408. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1364_en +0 -0
  409. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1365_en +0 -0
  410. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1385_en +0 -0
  411. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1386_en +0 -0
  412. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1401_en +0 -0
  413. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1402_en +0 -0
  414. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1403_en +0 -0
  415. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1404_en +0 -0
  416. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1405_en +0 -0
  417. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1406_en +0 -0
  418. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1407_en +0 -0
  419. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1408_en +0 -0
  420. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1409_en +0 -0
  421. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1410_en +0 -0
  422. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1412_en +0 -0
  423. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1413_en +0 -0
  424. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1414_en +0 -0
  425. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1415_en +0 -0
  426. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1416_en +0 -0
  427. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1417_en +0 -0
  428. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1418_en +0 -0
  429. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1419_en +0 -0
  430. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1423_en +0 -0
  431. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1424_en +0 -0
  432. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1425_en +0 -0
  433. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1430_en +0 -0
  434. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1431_en +0 -0
  435. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1432_en +0 -0
  436. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1434_en +0 -0
  437. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1435_en +0 -0
  438. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1437_en +0 -0
  439. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1438_en +0 -0
  440. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1440_en +0 -0
  441. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1441_en +0 -0
  442. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1443_en +0 -0
  443. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1450_en +0 -0
  444. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1469_en +0 -0
  445. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1478_en +0 -0
  446. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1479_en +0 -0
  447. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1480_en +0 -0
  448. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1484_en +0 -0
  449. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1501_en +0 -0
  450. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1502_en +0 -0
  451. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1503_en +0 -0
  452. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1504_en +0 -0
  453. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1505_en +0 -0
  454. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1506_en +0 -0
  455. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1507_en +0 -0
  456. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1508_en +0 -0
  457. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1509_en +0 -0
  458. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1510_en +0 -0
  459. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1512_en +0 -0
  460. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1513_en +0 -0
  461. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1514_en +0 -0
  462. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1515_en +0 -0
  463. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1516_en +0 -0
  464. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1517_en +0 -0
  465. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1518_en +0 -0
  466. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1519_en +0 -0
  467. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1520_en +0 -0
  468. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1530_en +0 -0
  469. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1540_en +0 -0
  470. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1541_en +0 -0
  471. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1551_en +0 -0
  472. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1559_en +0 -0
  473. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1561_en +0 -0
  474. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1562_en +0 -0
  475. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1563_en +0 -0
  476. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1567_en +0 -0
  477. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1570_en +0 -0
  478. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1571_en +0 -0
  479. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1573_en +0 -0
  480. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1574_en +0 -0
  481. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1575_en +0 -0
  482. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1580_en +0 -0
  483. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1585_en +0 -0
  484. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1586_en +0 -0
  485. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1587_en +0 -0
  486. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1601_en +0 -0
  487. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1602_en +0 -0
  488. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1603_en +0 -0
  489. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1604_en +0 -0
  490. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1605_en +0 -0
  491. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1606_en +0 -0
  492. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1607_en +0 -0
  493. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1608_en +0 -0
  494. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1609_en +0 -0
  495. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1610_en +0 -0
  496. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1612_en +0 -0
  497. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1613_en +0 -0
  498. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1614_en +0 -0
  499. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1615_en +0 -0
  500. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1616_en +0 -0
  501. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1617_en +0 -0
  502. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1618_en +0 -0
  503. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1619_en +0 -0
  504. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1620_en +0 -0
  505. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1623_en +0 -0
  506. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1626_en +0 -0
  507. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1630_en +0 -0
  508. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1631_en +0 -0
  509. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1636_en +0 -0
  510. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1639_en +0 -0
  511. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1641_en +0 -0
  512. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1646_en +0 -0
  513. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1647_en +0 -0
  514. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1649_en +0 -0
  515. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1650_en +0 -0
  516. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1651_en +0 -0
  517. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1657_en +0 -0
  518. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1660_en +0 -0
  519. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1661_en +0 -0
  520. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1662_en +0 -0
  521. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1667_en +0 -0
  522. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1669_en +0 -0
  523. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1671_en +0 -0
  524. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1678_en +0 -0
  525. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1682_en +0 -0
  526. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1701_en +0 -0
  527. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1702_en +0 -0
  528. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1703_en +0 -0
  529. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1704_en +0 -0
  530. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1705_en +0 -0
  531. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1706_en +0 -0
  532. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1707_en +0 -0
  533. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1708_en +0 -0
  534. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1709_en +0 -0
  535. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1712_en +0 -0
  536. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1713_en +0 -0
  537. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1714_en +0 -0
  538. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1715_en +0 -0
  539. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1716_en +0 -0
  540. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1717_en +0 -0
  541. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1718_en +0 -0
  542. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1719_en +0 -0
  543. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1720_en +0 -0
  544. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1724_en +0 -0
  545. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1725_en +0 -0
  546. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1726_en +0 -0
  547. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1727_en +0 -0
  548. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1730_en +0 -0
  549. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1731_en +0 -0
  550. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1732_en +0 -0
  551. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1734_en +0 -0
  552. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1737_en +0 -0
  553. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1740_en +0 -0
  554. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1754_en +0 -0
  555. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1757_en +0 -0
  556. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1760_en +0 -0
  557. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1763_en +0 -0
  558. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1765_en +0 -0
  559. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1769_en +0 -0
  560. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1770_en +0 -0
  561. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1772_en +0 -0
  562. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1773_en +0 -0
  563. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1774_en +0 -0
  564. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1775_en +0 -0
  565. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1778_en +0 -0
  566. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1779_en +0 -0
  567. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1780_en +0 -0
  568. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1781_en +0 -0
  569. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1782_en +0 -0
  570. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1785_en +0 -0
  571. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1786_en +0 -0
  572. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1801_en +0 -0
  573. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1802_en +0 -0
  574. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1803_en +0 -0
  575. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1804_en +0 -0
  576. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1805_en +0 -0
  577. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1806_en +0 -0
  578. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1807_en +0 -0
  579. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1808_en +0 -0
  580. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1809_en +0 -0
  581. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1810_en +0 -0
  582. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1812_en +0 -0
  583. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1813_en +0 -0
  584. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1814_en +0 -0
  585. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1815_en +0 -0
  586. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1816_en +0 -0
  587. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1817_en +0 -0
  588. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1818_en +0 -0
  589. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1819_en +0 -0
  590. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1828_en +0 -0
  591. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1830_en +0 -0
  592. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1831_en +0 -0
  593. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1832_en +0 -0
  594. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1838_en +0 -0
  595. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1843_en +0 -0
  596. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1845_en +0 -0
  597. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1847_en +0 -0
  598. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1848_en +0 -0
  599. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1850_en +0 -0
  600. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1851_en +0 -0
  601. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1856_en +0 -0
  602. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1857_en +0 -0
  603. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1858_en +0 -0
  604. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1859_en +0 -0
  605. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1860_en +0 -0
  606. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1862_en +0 -0
  607. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1863_en +0 -0
  608. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1864_en +0 -0
  609. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1865_en +0 -0
  610. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1867_en +0 -0
  611. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1870_en +0 -0
  612. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1872_en +0 -0
  613. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1873_en +0 -0
  614. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1876_en +0 -0
  615. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1878_en +0 -0
  616. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1888_en +0 -0
  617. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1901_en +0 -0
  618. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1902_en +0 -0
  619. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1903_en +0 -0
  620. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1904_en +0 -0
  621. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1905_en +0 -0
  622. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1906_en +0 -0
  623. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1907_en +0 -0
  624. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1908_en +0 -0
  625. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1909_en +0 -0
  626. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1910_en +0 -0
  627. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1912_en +0 -0
  628. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1913_en +0 -0
  629. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1914_en +0 -0
  630. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1915_en +0 -0
  631. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1916_en +0 -0
  632. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1917_en +0 -0
  633. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1918_en +0 -0
  634. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1919_en +0 -0
  635. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1920_en +0 -0
  636. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1925_en +0 -0
  637. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1928_en +0 -0
  638. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1929_en +0 -0
  639. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1930_en +0 -0
  640. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1931_en +0 -0
  641. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1936_en +0 -0
  642. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1937_en +0 -0
  643. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1938_en +0 -0
  644. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1940_en +0 -0
  645. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1941_en +0 -0
  646. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1947_en +0 -0
  647. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1949_en +0 -0
  648. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1951_en +0 -0
  649. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1952_en +0 -0
  650. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1954_en +0 -0
  651. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1956_en +0 -0
  652. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1959_en +0 -0
  653. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1970_en +0 -0
  654. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1971_en +0 -0
  655. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1972_en +0 -0
  656. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1973_en +0 -0
  657. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1978_en +0 -0
  658. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1979_en +0 -0
  659. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1980_en +0 -0
  660. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1984_en +0 -0
  661. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1985_en +0 -0
  662. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1989_en +0 -0
  663. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/20_en +0 -0
  664. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/212_en +0 -0
  665. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/212_fr +0 -0
  666. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/213_en +0 -0
  667. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/216_en +0 -0
  668. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/220_en +0 -0
  669. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/221_en +0 -0
  670. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/222_en +0 -0
  671. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/222_fr +0 -0
  672. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/224_en +0 -0
  673. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/225_en +0 -0
  674. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/225_fr +0 -0
  675. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/226_en +0 -0
  676. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_en +0 -0
  677. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_es +0 -0
  678. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/228_fr +0 -0
  679. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/229_en +0 -0
  680. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/229_fr +0 -0
  681. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_en +0 -0
  682. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_es +0 -0
  683. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/230_fr +0 -0
  684. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/232_en +0 -0
  685. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/233_en +0 -0
  686. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/234_en +0 -0
  687. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/237_en +0 -0
  688. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/238_en +0 -0
  689. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/238_pt +0 -0
  690. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/239_en +0 -0
  691. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/239_pt +0 -0
  692. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/241_en +0 -0
  693. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/242_en +0 -0
  694. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/242_fr +0 -0
  695. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/243_en +0 -0
  696. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/243_fr +0 -0
  697. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/244_en +0 -0
  698. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/244_pt +0 -0
  699. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_en +0 -0
  700. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_pt +0 -0
  701. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/247_en +0 -0
  702. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/249_en +0 -0
  703. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/251_en +0 -0
  704. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/252_en +0 -0
  705. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/254_en +0 -0
  706. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/256_en +0 -0
  707. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/257_en +0 -0
  708. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/258_en +0 -0
  709. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/258_pt +0 -0
  710. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/260_en +0 -0
  711. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/261_en +0 -0
  712. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/263_en +0 -0
  713. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/264_en +0 -0
  714. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/266_en +0 -0
  715. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/267_en +0 -0
  716. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/268_en +0 -0
  717. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/269_en +0 -0
  718. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/269_fr +0 -0
  719. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/27_en +0 -0
  720. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/290_en +0 -0
  721. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/290_fr +0 -0
  722. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/299_en +0 -0
  723. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/30_el +0 -0
  724. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/30_en +0 -0
  725. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/31_en +0 -0
  726. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/31_nl +0 -0
  727. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_de +0 -0
  728. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_en +0 -0
  729. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_fr +0 -0
  730. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/32_nl +0 -0
  731. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/33_en +0 -0
  732. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/33_fr +0 -0
  733. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/34_en +0 -0
  734. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/34_es +0 -0
  735. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/351_en +0 -0
  736. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/351_pt +0 -0
  737. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_de +0 -0
  738. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_en +0 -0
  739. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/352_fr +0 -0
  740. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/353_en +0 -0
  741. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/354_en +0 -0
  742. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/355_en +0 -0
  743. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_en +0 -0
  744. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_fi +0 -0
  745. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/358_se +0 -0
  746. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/359_bg +0 -0
  747. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/359_en +0 -0
  748. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/36_en +0 -0
  749. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/36_hu +0 -0
  750. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/370_en +0 -0
  751. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/371_en +0 -0
  752. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/372_en +0 -0
  753. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_en +0 -0
  754. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_ro +0 -0
  755. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/373_ru +0 -0
  756. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_am +0 -0
  757. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_en +0 -0
  758. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/374_ru +0 -0
  759. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_be +0 -0
  760. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_en +0 -0
  761. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/375_ru +0 -0
  762. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/381_en +0 -0
  763. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/381_sr +0 -0
  764. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/389_en +0 -0
  765. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/39_en +0 -0
  766. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/39_it +0 -0
  767. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/40_en +0 -0
  768. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/40_ro +0 -0
  769. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_de +0 -0
  770. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_en +0 -0
  771. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_fr +0 -0
  772. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/41_it +0 -0
  773. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/420_en +0 -0
  774. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/421_en +0 -0
  775. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/43_de +0 -0
  776. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/43_en +0 -0
  777. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/44_en +0 -0
  778. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/46_en +0 -0
  779. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/46_sv +0 -0
  780. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/47_en +0 -0
  781. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/48_en +0 -0
  782. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/48_pl +0 -0
  783. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/49_de +0 -0
  784. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/49_en +0 -0
  785. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/51_en +0 -0
  786. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/53_en +0 -0
  787. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/54_en +0 -0
  788. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/54_es +0 -0
  789. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/55_en +0 -0
  790. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/55_pt +0 -0
  791. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_en +0 -0
  792. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/56_es +0 -0
  793. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/57_en +0 -0
  794. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/58_en +0 -0
  795. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/58_es +0 -0
  796. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/599_en +0 -0
  797. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/62_en +0 -0
  798. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/62_id +0 -0
  799. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/66_en +0 -0
  800. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/66_th +0 -0
  801. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/686_en +0 -0
  802. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_en +0 -0
  803. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/7_ru +0 -0
  804. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/81_en +0 -0
  805. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/81_ja +0 -0
  806. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ar +0 -0
  807. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_cs +0 -0
  808. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_en +0 -0
  809. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_fr +0 -0
  810. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ko +0 -0
  811. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_zh +0 -0
  812. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_zh_Hant +0 -0
  813. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/84_en +0 -0
  814. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/84_vi +0 -0
  815. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_en +0 -0
  816. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_zh +0 -0
  817. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_en +0 -0
  818. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_zh +0 -0
  819. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/886_zh_Hant +0 -0
  820. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/90_en +0 -0
  821. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/90_tr +0 -0
  822. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/91_en +0 -0
  823. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/94_en +0 -0
  824. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/962_en +0 -0
  825. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/966_ar +0 -0
  826. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/966_en +0 -0
  827. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_en +0 -0
  828. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_fa +0 -0
  829. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config +0 -0
  830. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/timezones/data/map_data +0 -0
  831. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/PhoneNumberToTimeZonesMapperTest.java +136 -0
  832. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java +163 -0
  833. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1201_de +0 -0
  834. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1201_en +0 -0
  835. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1212_en +0 -0
  836. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1617_en +0 -0
  837. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1650_de +0 -0
  838. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1650_en +0 -0
  839. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/1989_en +0 -0
  840. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/54_en +0 -0
  841. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/82_en +0 -0
  842. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/82_ko +0 -0
  843. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/testing_data/config +0 -0
  844. data/data/libphonenumber/java/geocoder/test/com/google/i18n/phonenumbers/timezones/testing_data/map_data +0 -0
  845. data/data/libphonenumber/java/internal/prefixmapper/pom.xml +36 -0
  846. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/DefaultMapStorage.java +94 -0
  847. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/FlyweightMapStorage.java +263 -0
  848. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/MappingFileProvider.java +229 -0
  849. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMap.java +216 -0
  850. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMapStorageStrategy.java +108 -0
  851. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PrefixFileReader.java +143 -0
  852. data/data/libphonenumber/java/internal/prefixmapper/src/com/google/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMap.java +126 -0
  853. data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/FlyweightMapStorageTest.java +107 -0
  854. data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/MappingFileProviderTest.java +93 -0
  855. data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PhonePrefixMapTest.java +193 -0
  856. data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PrefixFileReaderTest.java +75 -0
  857. data/data/libphonenumber/java/internal/prefixmapper/test/com/google/i18n/phonenumbers/prefixmapper/PrefixTimeZonesMapTest.java +176 -0
  858. data/data/libphonenumber/java/lib/junit-4.8.1.jar +0 -0
  859. data/data/libphonenumber/java/libphonenumber/pom.xml +33 -0
  860. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java +79 -0
  861. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java +656 -0
  862. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java +941 -0
  863. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataLoader.java +34 -0
  864. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataManager.java +138 -0
  865. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/NumberParseException.java +62 -0
  866. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatch.java +123 -0
  867. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java +725 -0
  868. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +3232 -0
  869. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java +1053 -0
  870. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/Phonenumber.java +285 -0
  871. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/RegexCache.java +78 -0
  872. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java +587 -0
  873. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberUtil.java +80 -0
  874. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java +268 -0
  875. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_255 +0 -0
  876. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_27 +0 -0
  877. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_30 +0 -0
  878. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_31 +0 -0
  879. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_34 +0 -0
  880. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_350 +0 -0
  881. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_351 +0 -0
  882. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_352 +0 -0
  883. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_358 +0 -0
  884. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_359 +0 -0
  885. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_36 +0 -0
  886. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_372 +0 -0
  887. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_373 +0 -0
  888. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 +0 -0
  889. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 +0 -0
  890. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_381 +0 -0
  891. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_385 +0 -0
  892. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_43 +0 -0
  893. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_44 +0 -0
  894. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 +0 -0
  895. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_505 +0 -0
  896. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_506 +0 -0
  897. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_54 +0 -0
  898. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_55 +0 -0
  899. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_58 +0 -0
  900. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595 +0 -0
  901. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_61 +0 -0
  902. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_62 +0 -0
  903. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 +0 -0
  904. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_66 +0 -0
  905. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_675 +0 -0
  906. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_676 +0 -0
  907. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_679 +0 -0
  908. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_7 +0 -0
  909. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_81 +0 -0
  910. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_84 +0 -0
  911. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_855 +0 -0
  912. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_90 +0 -0
  913. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_91 +0 -0
  914. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_94 +0 -0
  915. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_95 +0 -0
  916. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_971 +0 -0
  917. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_972 +0 -0
  918. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_995 +0 -0
  919. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 +0 -0
  920. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 +0 -0
  921. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 +0 -0
  922. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 +0 -0
  923. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 +0 -0
  924. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 +0 -0
  925. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 +0 -0
  926. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 +0 -0
  927. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 +0 -0
  928. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC +0 -0
  929. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD +0 -0
  930. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE +0 -0
  931. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF +0 -0
  932. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG +0 -0
  933. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI +0 -0
  934. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL +0 -0
  935. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM +0 -0
  936. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO +0 -0
  937. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR +0 -0
  938. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS +0 -0
  939. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT +0 -0
  940. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU +0 -0
  941. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW +0 -0
  942. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX +0 -0
  943. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ +0 -0
  944. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA +0 -0
  945. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB +0 -0
  946. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD +0 -0
  947. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE +0 -0
  948. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF +0 -0
  949. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG +0 -0
  950. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH +0 -0
  951. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI +0 -0
  952. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ +0 -0
  953. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL +0 -0
  954. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM +0 -0
  955. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN +0 -0
  956. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO +0 -0
  957. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ +0 -0
  958. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR +0 -0
  959. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS +0 -0
  960. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT +0 -0
  961. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW +0 -0
  962. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY +0 -0
  963. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ +0 -0
  964. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA +0 -0
  965. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC +0 -0
  966. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD +0 -0
  967. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF +0 -0
  968. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG +0 -0
  969. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH +0 -0
  970. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI +0 -0
  971. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK +0 -0
  972. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL +0 -0
  973. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM +0 -0
  974. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +0 -0
  975. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO +0 -0
  976. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR +0 -0
  977. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU +0 -0
  978. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV +0 -0
  979. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW +0 -0
  980. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX +0 -0
  981. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY +0 -0
  982. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ +0 -0
  983. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE +0 -0
  984. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ +0 -0
  985. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK +0 -0
  986. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM +0 -0
  987. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO +0 -0
  988. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ +0 -0
  989. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC +0 -0
  990. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE +0 -0
  991. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG +0 -0
  992. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH +0 -0
  993. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER +0 -0
  994. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES +0 -0
  995. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET +0 -0
  996. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI +0 -0
  997. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ +0 -0
  998. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK +0 -0
  999. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM +0 -0
  1000. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO +0 -0
  1001. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR +0 -0
  1002. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA +0 -0
  1003. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB +0 -0
  1004. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD +0 -0
  1005. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE +0 -0
  1006. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF +0 -0
  1007. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG +0 -0
  1008. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH +0 -0
  1009. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI +0 -0
  1010. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL +0 -0
  1011. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM +0 -0
  1012. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN +0 -0
  1013. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP +0 -0
  1014. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ +0 -0
  1015. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR +0 -0
  1016. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT +0 -0
  1017. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU +0 -0
  1018. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW +0 -0
  1019. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY +0 -0
  1020. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +0 -0
  1021. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN +0 -0
  1022. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR +0 -0
  1023. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT +0 -0
  1024. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU +0 -0
  1025. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID +0 -0
  1026. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE +0 -0
  1027. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL +0 -0
  1028. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM +0 -0
  1029. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
  1030. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO +0 -0
  1031. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ +0 -0
  1032. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR +0 -0
  1033. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS +0 -0
  1034. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT +0 -0
  1035. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE +0 -0
  1036. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM +0 -0
  1037. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO +0 -0
  1038. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP +0 -0
  1039. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE +0 -0
  1040. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG +0 -0
  1041. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH +0 -0
  1042. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI +0 -0
  1043. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM +0 -0
  1044. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN +0 -0
  1045. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP +0 -0
  1046. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR +0 -0
  1047. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW +0 -0
  1048. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY +0 -0
  1049. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ +0 -0
  1050. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA +0 -0
  1051. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB +0 -0
  1052. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC +0 -0
  1053. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI +0 -0
  1054. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK +0 -0
  1055. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR +0 -0
  1056. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS +0 -0
  1057. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT +0 -0
  1058. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU +0 -0
  1059. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV +0 -0
  1060. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY +0 -0
  1061. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA +0 -0
  1062. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC +0 -0
  1063. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD +0 -0
  1064. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME +0 -0
  1065. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF +0 -0
  1066. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG +0 -0
  1067. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH +0 -0
  1068. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK +0 -0
  1069. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML +0 -0
  1070. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM +0 -0
  1071. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN +0 -0
  1072. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO +0 -0
  1073. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP +0 -0
  1074. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ +0 -0
  1075. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR +0 -0
  1076. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS +0 -0
  1077. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT +0 -0
  1078. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU +0 -0
  1079. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV +0 -0
  1080. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW +0 -0
  1081. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX +0 -0
  1082. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY +0 -0
  1083. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ +0 -0
  1084. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA +0 -0
  1085. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC +0 -0
  1086. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE +0 -0
  1087. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF +0 -0
  1088. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG +0 -0
  1089. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI +0 -0
  1090. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL +0 -0
  1091. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO +0 -0
  1092. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP +0 -0
  1093. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR +0 -0
  1094. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU +0 -0
  1095. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ +0 -0
  1096. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM +0 -0
  1097. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA +0 -0
  1098. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE +0 -0
  1099. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF +0 -0
  1100. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG +0 -0
  1101. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH +0 -0
  1102. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK +0 -0
  1103. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL +0 -0
  1104. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM +0 -0
  1105. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR +0 -0
  1106. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS +0 -0
  1107. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT +0 -0
  1108. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW +0 -0
  1109. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY +0 -0
  1110. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA +0 -0
  1111. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE +0 -0
  1112. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO +0 -0
  1113. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS +0 -0
  1114. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU +0 -0
  1115. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW +0 -0
  1116. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA +0 -0
  1117. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB +0 -0
  1118. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC +0 -0
  1119. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD +0 -0
  1120. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE +0 -0
  1121. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG +0 -0
  1122. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH +0 -0
  1123. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI +0 -0
  1124. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ +0 -0
  1125. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK +0 -0
  1126. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL +0 -0
  1127. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM +0 -0
  1128. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN +0 -0
  1129. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO +0 -0
  1130. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR +0 -0
  1131. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS +0 -0
  1132. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST +0 -0
  1133. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV +0 -0
  1134. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX +0 -0
  1135. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY +0 -0
  1136. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ +0 -0
  1137. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA +0 -0
  1138. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC +0 -0
  1139. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD +0 -0
  1140. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG +0 -0
  1141. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH +0 -0
  1142. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ +0 -0
  1143. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK +0 -0
  1144. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL +0 -0
  1145. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM +0 -0
  1146. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN +0 -0
  1147. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO +0 -0
  1148. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR +0 -0
  1149. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT +0 -0
  1150. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV +0 -0
  1151. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW +0 -0
  1152. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ +0 -0
  1153. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA +0 -0
  1154. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG +0 -0
  1155. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US +0 -0
  1156. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY +0 -0
  1157. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ +0 -0
  1158. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA +0 -0
  1159. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC +0 -0
  1160. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE +0 -0
  1161. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG +0 -0
  1162. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI +0 -0
  1163. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN +0 -0
  1164. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU +0 -0
  1165. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF +0 -0
  1166. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS +0 -0
  1167. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE +0 -0
  1168. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT +0 -0
  1169. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA +0 -0
  1170. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM +0 -0
  1171. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW +0 -0
  1172. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC +0 -0
  1173. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD +0 -0
  1174. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE +0 -0
  1175. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF +0 -0
  1176. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG +0 -0
  1177. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI +0 -0
  1178. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL +0 -0
  1179. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM +0 -0
  1180. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO +0 -0
  1181. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR +0 -0
  1182. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS +0 -0
  1183. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT +0 -0
  1184. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU +0 -0
  1185. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW +0 -0
  1186. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX +0 -0
  1187. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ +0 -0
  1188. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA +0 -0
  1189. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB +0 -0
  1190. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD +0 -0
  1191. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE +0 -0
  1192. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF +0 -0
  1193. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG +0 -0
  1194. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH +0 -0
  1195. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI +0 -0
  1196. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ +0 -0
  1197. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL +0 -0
  1198. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM +0 -0
  1199. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN +0 -0
  1200. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO +0 -0
  1201. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ +0 -0
  1202. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR +0 -0
  1203. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS +0 -0
  1204. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT +0 -0
  1205. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW +0 -0
  1206. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY +0 -0
  1207. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ +0 -0
  1208. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA +0 -0
  1209. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC +0 -0
  1210. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD +0 -0
  1211. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH +0 -0
  1212. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI +0 -0
  1213. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK +0 -0
  1214. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL +0 -0
  1215. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM +0 -0
  1216. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN +0 -0
  1217. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO +0 -0
  1218. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR +0 -0
  1219. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU +0 -0
  1220. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV +0 -0
  1221. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW +0 -0
  1222. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX +0 -0
  1223. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY +0 -0
  1224. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ +0 -0
  1225. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE +0 -0
  1226. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ +0 -0
  1227. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK +0 -0
  1228. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM +0 -0
  1229. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO +0 -0
  1230. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ +0 -0
  1231. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC +0 -0
  1232. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE +0 -0
  1233. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG +0 -0
  1234. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH +0 -0
  1235. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES +0 -0
  1236. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET +0 -0
  1237. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI +0 -0
  1238. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ +0 -0
  1239. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK +0 -0
  1240. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM +0 -0
  1241. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO +0 -0
  1242. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR +0 -0
  1243. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA +0 -0
  1244. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB +0 -0
  1245. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD +0 -0
  1246. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE +0 -0
  1247. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF +0 -0
  1248. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG +0 -0
  1249. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH +0 -0
  1250. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI +0 -0
  1251. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL +0 -0
  1252. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM +0 -0
  1253. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN +0 -0
  1254. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP +0 -0
  1255. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR +0 -0
  1256. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT +0 -0
  1257. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU +0 -0
  1258. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW +0 -0
  1259. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY +0 -0
  1260. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK +0 -0
  1261. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN +0 -0
  1262. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR +0 -0
  1263. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT +0 -0
  1264. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU +0 -0
  1265. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID +0 -0
  1266. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE +0 -0
  1267. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL +0 -0
  1268. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM +0 -0
  1269. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN +0 -0
  1270. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ +0 -0
  1271. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR +0 -0
  1272. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS +0 -0
  1273. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT +0 -0
  1274. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE +0 -0
  1275. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM +0 -0
  1276. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO +0 -0
  1277. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP +0 -0
  1278. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE +0 -0
  1279. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG +0 -0
  1280. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH +0 -0
  1281. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI +0 -0
  1282. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM +0 -0
  1283. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN +0 -0
  1284. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR +0 -0
  1285. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW +0 -0
  1286. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY +0 -0
  1287. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ +0 -0
  1288. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA +0 -0
  1289. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB +0 -0
  1290. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC +0 -0
  1291. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI +0 -0
  1292. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK +0 -0
  1293. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR +0 -0
  1294. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS +0 -0
  1295. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT +0 -0
  1296. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU +0 -0
  1297. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV +0 -0
  1298. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY +0 -0
  1299. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA +0 -0
  1300. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC +0 -0
  1301. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD +0 -0
  1302. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME +0 -0
  1303. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF +0 -0
  1304. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG +0 -0
  1305. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH +0 -0
  1306. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK +0 -0
  1307. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML +0 -0
  1308. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM +0 -0
  1309. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN +0 -0
  1310. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO +0 -0
  1311. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP +0 -0
  1312. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ +0 -0
  1313. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR +0 -0
  1314. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS +0 -0
  1315. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT +0 -0
  1316. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU +0 -0
  1317. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV +0 -0
  1318. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW +0 -0
  1319. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX +0 -0
  1320. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY +0 -0
  1321. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ +0 -0
  1322. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA +0 -0
  1323. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC +0 -0
  1324. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF +0 -0
  1325. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG +0 -0
  1326. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI +0 -0
  1327. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL +0 -0
  1328. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO +0 -0
  1329. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP +0 -0
  1330. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR +0 -0
  1331. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU +0 -0
  1332. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ +0 -0
  1333. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM +0 -0
  1334. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA +0 -0
  1335. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE +0 -0
  1336. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF +0 -0
  1337. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG +0 -0
  1338. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH +0 -0
  1339. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK +0 -0
  1340. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL +0 -0
  1341. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM +0 -0
  1342. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR +0 -0
  1343. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT +0 -0
  1344. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW +0 -0
  1345. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY +0 -0
  1346. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA +0 -0
  1347. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE +0 -0
  1348. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO +0 -0
  1349. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS +0 -0
  1350. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU +0 -0
  1351. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW +0 -0
  1352. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA +0 -0
  1353. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB +0 -0
  1354. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC +0 -0
  1355. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD +0 -0
  1356. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE +0 -0
  1357. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG +0 -0
  1358. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH +0 -0
  1359. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI +0 -0
  1360. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ +0 -0
  1361. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK +0 -0
  1362. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL +0 -0
  1363. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM +0 -0
  1364. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN +0 -0
  1365. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR +0 -0
  1366. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST +0 -0
  1367. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV +0 -0
  1368. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX +0 -0
  1369. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY +0 -0
  1370. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ +0 -0
  1371. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC +0 -0
  1372. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD +0 -0
  1373. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG +0 -0
  1374. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH +0 -0
  1375. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ +0 -0
  1376. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL +0 -0
  1377. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM +0 -0
  1378. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN +0 -0
  1379. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO +0 -0
  1380. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR +0 -0
  1381. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT +0 -0
  1382. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV +0 -0
  1383. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW +0 -0
  1384. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ +0 -0
  1385. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA +0 -0
  1386. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG +0 -0
  1387. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US +0 -0
  1388. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY +0 -0
  1389. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ +0 -0
  1390. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA +0 -0
  1391. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC +0 -0
  1392. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE +0 -0
  1393. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG +0 -0
  1394. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI +0 -0
  1395. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN +0 -0
  1396. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU +0 -0
  1397. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF +0 -0
  1398. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS +0 -0
  1399. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE +0 -0
  1400. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT +0 -0
  1401. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA +0 -0
  1402. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM +0 -0
  1403. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW +0 -0
  1404. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/internal/MatcherApi.java +38 -0
  1405. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/internal/RegexBasedMatcher.java +52 -0
  1406. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java +1173 -0
  1407. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMapForTesting.java +142 -0
  1408. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ExampleNumbersTest.java +256 -0
  1409. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MetadataManagerTest.java +51 -0
  1410. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberMatchTest.java +70 -0
  1411. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberMatcherTest.java +1090 -0
  1412. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +2570 -0
  1413. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhonenumberTest.java +112 -0
  1414. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/RegexCacheTest.java +55 -0
  1415. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/RegionCode.java +61 -0
  1416. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ShortNumberInfoTest.java +344 -0
  1417. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ShortNumberUtilTest.java +140 -0
  1418. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/TestMetadataTestCase.java +46 -0
  1419. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_800 +0 -0
  1420. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_979 +0 -0
  1421. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AD +0 -0
  1422. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AE +0 -0
  1423. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO +0 -0
  1424. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AR +0 -0
  1425. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AU +0 -0
  1426. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BB +0 -0
  1427. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BR +0 -0
  1428. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS +0 -0
  1429. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BY +0 -0
  1430. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CA +0 -0
  1431. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC +0 -0
  1432. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CN +0 -0
  1433. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX +0 -0
  1434. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_DE +0 -0
  1435. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_FR +0 -0
  1436. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GB +0 -0
  1437. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_GG +0 -0
  1438. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_HU +0 -0
  1439. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_IT +0 -0
  1440. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_JP +0 -0
  1441. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_KR +0 -0
  1442. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX +0 -0
  1443. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_NZ +0 -0
  1444. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_PL +0 -0
  1445. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_RE +0 -0
  1446. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_SG +0 -0
  1447. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_US +0 -0
  1448. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_YT +0 -0
  1449. data/data/libphonenumber/java/pom.xml +186 -0
  1450. data/data/libphonenumber/java/release_notes.txt +963 -0
  1451. data/data/libphonenumber/javadoc/allclasses-frame.html +49 -0
  1452. data/data/libphonenumber/javadoc/allclasses-noframe.html +49 -0
  1453. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/AsYouTypeFormatter.html +302 -0
  1454. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/NumberParseException.ErrorType.html +369 -0
  1455. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/NumberParseException.html +311 -0
  1456. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberMatch.html +378 -0
  1457. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.Leniency.html +330 -0
  1458. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.MatchType.html +373 -0
  1459. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.PhoneNumberFormat.html +365 -0
  1460. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.PhoneNumberType.html +469 -0
  1461. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.ValidationResult.html +357 -0
  1462. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/PhoneNumberUtil.html +1405 -0
  1463. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-frame.html +68 -0
  1464. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-summary.html +211 -0
  1465. data/data/libphonenumber/javadoc/com/google/i18n/phonenumbers/package-tree.html +161 -0
  1466. data/data/libphonenumber/javadoc/constant-values.html +142 -0
  1467. data/data/libphonenumber/javadoc/deprecated-list.html +142 -0
  1468. data/data/libphonenumber/javadoc/help-doc.html +209 -0
  1469. data/data/libphonenumber/javadoc/index-all.html +413 -0
  1470. data/data/libphonenumber/javadoc/index.html +36 -0
  1471. data/data/libphonenumber/javadoc/overview-tree.html +163 -0
  1472. data/data/libphonenumber/javadoc/package-list +1 -0
  1473. data/data/libphonenumber/javadoc/resources/inherit.gif +0 -0
  1474. data/data/libphonenumber/javadoc/serialized-form.html +184 -0
  1475. data/data/libphonenumber/javadoc/stylesheet.css +29 -0
  1476. data/data/libphonenumber/javascript/README +99 -0
  1477. data/data/libphonenumber/javascript/build.xml +137 -0
  1478. data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter.js +1108 -0
  1479. data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter_test.html +38 -0
  1480. data/data/libphonenumber/javascript/i18n/phonenumbers/asyoutypeformatter_test.js +1205 -0
  1481. data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.html +53 -0
  1482. data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +510 -0
  1483. data/data/libphonenumber/javascript/i18n/phonenumbers/demo.html +62 -0
  1484. data/data/libphonenumber/javascript/i18n/phonenumbers/demo.js +161 -0
  1485. data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +5167 -0
  1486. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatafortesting.js +616 -0
  1487. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +5167 -0
  1488. data/data/libphonenumber/javascript/i18n/phonenumbers/phonemetadata.pb.js +2283 -0
  1489. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumber.pb.js +520 -0
  1490. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil.js +4194 -0
  1491. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil_test.html +37 -0
  1492. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil_test.js +3322 -0
  1493. data/data/libphonenumber/javascript/i18n/phonenumbers/regioncodefortesting.js +66 -0
  1494. data/data/libphonenumber/pom.xml +26 -0
  1495. data/data/libphonenumber/resources/PhoneNumberAlternateFormats.xml +1853 -0
  1496. data/data/{PhoneNumberMetaData.xml → libphonenumber/resources/PhoneNumberMetadata.xml} +0 -0
  1497. data/data/libphonenumber/resources/PhoneNumberMetadataForTesting.xml +938 -0
  1498. data/data/libphonenumber/resources/ShortNumberMetadata.xml +8725 -0
  1499. data/data/libphonenumber/resources/carrier/README +2 -0
  1500. data/data/libphonenumber/resources/carrier/ar/965.txt +17 -0
  1501. data/data/libphonenumber/resources/carrier/be/375.txt +28 -0
  1502. data/data/libphonenumber/resources/carrier/en/1.txt +459 -0
  1503. data/data/libphonenumber/resources/carrier/en/20.txt +17 -0
  1504. data/data/libphonenumber/resources/carrier/en/211.txt +18 -0
  1505. data/data/libphonenumber/resources/carrier/en/212.txt +107 -0
  1506. data/data/libphonenumber/resources/carrier/en/213.txt +20 -0
  1507. data/data/libphonenumber/resources/carrier/en/216.txt +26 -0
  1508. data/data/libphonenumber/resources/carrier/en/220.txt +19 -0
  1509. data/data/libphonenumber/resources/carrier/en/221.txt +23 -0
  1510. data/data/libphonenumber/resources/carrier/en/222.txt +19 -0
  1511. data/data/libphonenumber/resources/carrier/en/223.txt +15 -0
  1512. data/data/libphonenumber/resources/carrier/en/224.txt +21 -0
  1513. data/data/libphonenumber/resources/carrier/en/225.txt +52 -0
  1514. data/data/libphonenumber/resources/carrier/en/226.txt +36 -0
  1515. data/data/libphonenumber/resources/carrier/en/227.txt +24 -0
  1516. data/data/libphonenumber/resources/carrier/en/228.txt +16 -0
  1517. data/data/libphonenumber/resources/carrier/en/229.txt +26 -0
  1518. data/data/libphonenumber/resources/carrier/en/230.txt +61 -0
  1519. data/data/libphonenumber/resources/carrier/en/231.txt +19 -0
  1520. data/data/libphonenumber/resources/carrier/en/232.txt +21 -0
  1521. data/data/libphonenumber/resources/carrier/en/233.txt +23 -0
  1522. data/data/libphonenumber/resources/carrier/en/234.txt +245 -0
  1523. data/data/libphonenumber/resources/carrier/en/235.txt +15 -0
  1524. data/data/libphonenumber/resources/carrier/en/236.txt +18 -0
  1525. data/data/libphonenumber/resources/carrier/en/237.txt +27 -0
  1526. data/data/libphonenumber/resources/carrier/en/238.txt +20 -0
  1527. data/data/libphonenumber/resources/carrier/en/239.txt +16 -0
  1528. data/data/libphonenumber/resources/carrier/en/240.txt +17 -0
  1529. data/data/libphonenumber/resources/carrier/en/241.txt +35 -0
  1530. data/data/libphonenumber/resources/carrier/en/242.txt +16 -0
  1531. data/data/libphonenumber/resources/carrier/en/243.txt +23 -0
  1532. data/data/libphonenumber/resources/carrier/en/244.txt +19 -0
  1533. data/data/libphonenumber/resources/carrier/en/245.txt +16 -0
  1534. data/data/libphonenumber/resources/carrier/en/248.txt +16 -0
  1535. data/data/libphonenumber/resources/carrier/en/249.txt +19 -0
  1536. data/data/libphonenumber/resources/carrier/en/250.txt +15 -0
  1537. data/data/libphonenumber/resources/carrier/en/251.txt +15 -0
  1538. data/data/libphonenumber/resources/carrier/en/252.txt +22 -0
  1539. data/data/libphonenumber/resources/carrier/en/253.txt +17 -0
  1540. data/data/libphonenumber/resources/carrier/en/254.txt +44 -0
  1541. data/data/libphonenumber/resources/carrier/en/255.txt +21 -0
  1542. data/data/libphonenumber/resources/carrier/en/256.txt +26 -0
  1543. data/data/libphonenumber/resources/carrier/en/257.txt +25 -0
  1544. data/data/libphonenumber/resources/carrier/en/258.txt +18 -0
  1545. data/data/libphonenumber/resources/carrier/en/260.txt +17 -0
  1546. data/data/libphonenumber/resources/carrier/en/261.txt +18 -0
  1547. data/data/libphonenumber/resources/carrier/en/263.txt +17 -0
  1548. data/data/libphonenumber/resources/carrier/en/265.txt +16 -0
  1549. data/data/libphonenumber/resources/carrier/en/267.txt +54 -0
  1550. data/data/libphonenumber/resources/carrier/en/268.txt +15 -0
  1551. data/data/libphonenumber/resources/carrier/en/27.txt +70 -0
  1552. data/data/libphonenumber/resources/carrier/en/297.txt +29 -0
  1553. data/data/libphonenumber/resources/carrier/en/298.txt +18 -0
  1554. data/data/libphonenumber/resources/carrier/en/299.txt +17 -0
  1555. data/data/libphonenumber/resources/carrier/en/30.txt +20 -0
  1556. data/data/libphonenumber/resources/carrier/en/31.txt +65 -0
  1557. data/data/libphonenumber/resources/carrier/en/32.txt +18 -0
  1558. data/data/libphonenumber/resources/carrier/en/33.txt +72 -0
  1559. data/data/libphonenumber/resources/carrier/en/350.txt +19 -0
  1560. data/data/libphonenumber/resources/carrier/en/351.txt +26 -0
  1561. data/data/libphonenumber/resources/carrier/en/352.txt +23 -0
  1562. data/data/libphonenumber/resources/carrier/en/353.txt +20 -0
  1563. data/data/libphonenumber/resources/carrier/en/354.txt +44 -0
  1564. data/data/libphonenumber/resources/carrier/en/355.txt +18 -0
  1565. data/data/libphonenumber/resources/carrier/en/356.txt +27 -0
  1566. data/data/libphonenumber/resources/carrier/en/357.txt +19 -0
  1567. data/data/libphonenumber/resources/carrier/en/358.txt +44 -0
  1568. data/data/libphonenumber/resources/carrier/en/359.txt +18 -0
  1569. data/data/libphonenumber/resources/carrier/en/36.txt +17 -0
  1570. data/data/libphonenumber/resources/carrier/en/370.txt +50 -0
  1571. data/data/libphonenumber/resources/carrier/en/372.txt +30 -0
  1572. data/data/libphonenumber/resources/carrier/en/373.txt +44 -0
  1573. data/data/libphonenumber/resources/carrier/en/374.txt +29 -0
  1574. data/data/libphonenumber/resources/carrier/en/375.txt +28 -0
  1575. data/data/libphonenumber/resources/carrier/en/376.txt +15 -0
  1576. data/data/libphonenumber/resources/carrier/en/380.txt +15 -0
  1577. data/data/libphonenumber/resources/carrier/en/381.txt +23 -0
  1578. data/data/libphonenumber/resources/carrier/en/385.txt +19 -0
  1579. data/data/libphonenumber/resources/carrier/en/386.txt +23 -0
  1580. data/data/libphonenumber/resources/carrier/en/387.txt +20 -0
  1581. data/data/libphonenumber/resources/carrier/en/389.txt +23 -0
  1582. data/data/libphonenumber/resources/carrier/en/39.txt +23 -0
  1583. data/data/libphonenumber/resources/carrier/en/40.txt +20 -0
  1584. data/data/libphonenumber/resources/carrier/en/41.txt +18 -0
  1585. data/data/libphonenumber/resources/carrier/en/420.txt +32 -0
  1586. data/data/libphonenumber/resources/carrier/en/421.txt +28 -0
  1587. data/data/libphonenumber/resources/carrier/en/43.txt +26 -0
  1588. data/data/libphonenumber/resources/carrier/en/45.txt +364 -0
  1589. data/data/libphonenumber/resources/carrier/en/47.txt +239 -0
  1590. data/data/libphonenumber/resources/carrier/en/48.txt +118 -0
  1591. data/data/libphonenumber/resources/carrier/en/49.txt +44 -0
  1592. data/data/libphonenumber/resources/carrier/en/501.txt +16 -0
  1593. data/data/libphonenumber/resources/carrier/en/505.txt +101 -0
  1594. data/data/libphonenumber/resources/carrier/en/506.txt +49 -0
  1595. data/data/libphonenumber/resources/carrier/en/507.txt +84 -0
  1596. data/data/libphonenumber/resources/carrier/en/51.txt +584 -0
  1597. data/data/libphonenumber/resources/carrier/en/53.txt +15 -0
  1598. data/data/libphonenumber/resources/carrier/en/54.txt +98 -0
  1599. data/data/libphonenumber/resources/carrier/en/55.txt +9479 -0
  1600. data/data/libphonenumber/resources/carrier/en/56.txt +538 -0
  1601. data/data/libphonenumber/resources/carrier/en/57.txt +38 -0
  1602. data/data/libphonenumber/resources/carrier/en/58.txt +18 -0
  1603. data/data/libphonenumber/resources/carrier/en/591.txt +51 -0
  1604. data/data/libphonenumber/resources/carrier/en/595.txt +19 -0
  1605. data/data/libphonenumber/resources/carrier/en/597.txt +33 -0
  1606. data/data/libphonenumber/resources/carrier/en/598.txt +25 -0
  1607. data/data/libphonenumber/resources/carrier/en/599.txt +47 -0
  1608. data/data/libphonenumber/resources/carrier/en/60.txt +113 -0
  1609. data/data/libphonenumber/resources/carrier/en/61.txt +92 -0
  1610. data/data/libphonenumber/resources/carrier/en/62.txt +701 -0
  1611. data/data/libphonenumber/resources/carrier/en/63.txt +53 -0
  1612. data/data/libphonenumber/resources/carrier/en/64.txt +22 -0
  1613. data/data/libphonenumber/resources/carrier/en/65.txt +403 -0
  1614. data/data/libphonenumber/resources/carrier/en/66.txt +47 -0
  1615. data/data/libphonenumber/resources/carrier/en/670.txt +16 -0
  1616. data/data/libphonenumber/resources/carrier/en/673.txt +22 -0
  1617. data/data/libphonenumber/resources/carrier/en/675.txt +29 -0
  1618. data/data/libphonenumber/resources/carrier/en/676.txt +39 -0
  1619. data/data/libphonenumber/resources/carrier/en/677.txt +38 -0
  1620. data/data/libphonenumber/resources/carrier/en/678.txt +31 -0
  1621. data/data/libphonenumber/resources/carrier/en/679.txt +23 -0
  1622. data/data/libphonenumber/resources/carrier/en/685.txt +17 -0
  1623. data/data/libphonenumber/resources/carrier/en/686.txt +20 -0
  1624. data/data/libphonenumber/resources/carrier/en/7.txt +24 -0
  1625. data/data/libphonenumber/resources/carrier/en/84.txt +24 -0
  1626. data/data/libphonenumber/resources/carrier/en/852.txt +282 -0
  1627. data/data/libphonenumber/resources/carrier/en/855.txt +34 -0
  1628. data/data/libphonenumber/resources/carrier/en/856.txt +18 -0
  1629. data/data/libphonenumber/resources/carrier/en/86.txt +43 -0
  1630. data/data/libphonenumber/resources/carrier/en/880.txt +20 -0
  1631. data/data/libphonenumber/resources/carrier/en/90.txt +26 -0
  1632. data/data/libphonenumber/resources/carrier/en/91.txt +1647 -0
  1633. data/data/libphonenumber/resources/carrier/en/92.txt +49 -0
  1634. data/data/libphonenumber/resources/carrier/en/93.txt +27 -0
  1635. data/data/libphonenumber/resources/carrier/en/94.txt +19 -0
  1636. data/data/libphonenumber/resources/carrier/en/95.txt +16 -0
  1637. data/data/libphonenumber/resources/carrier/en/960.txt +16 -0
  1638. data/data/libphonenumber/resources/carrier/en/961.txt +25 -0
  1639. data/data/libphonenumber/resources/carrier/en/962.txt +18 -0
  1640. data/data/libphonenumber/resources/carrier/en/964.txt +19 -0
  1641. data/data/libphonenumber/resources/carrier/en/965.txt +17 -0
  1642. data/data/libphonenumber/resources/carrier/en/966.txt +27 -0
  1643. data/data/libphonenumber/resources/carrier/en/967.txt +21 -0
  1644. data/data/libphonenumber/resources/carrier/en/968.txt +18 -0
  1645. data/data/libphonenumber/resources/carrier/en/970.txt +16 -0
  1646. data/data/libphonenumber/resources/carrier/en/971.txt +18 -0
  1647. data/data/libphonenumber/resources/carrier/en/972.txt +32 -0
  1648. data/data/libphonenumber/resources/carrier/en/973.txt +30 -0
  1649. data/data/libphonenumber/resources/carrier/en/974.txt +18 -0
  1650. data/data/libphonenumber/resources/carrier/en/975.txt +15 -0
  1651. data/data/libphonenumber/resources/carrier/en/977.txt +25 -0
  1652. data/data/libphonenumber/resources/carrier/en/98.txt +29 -0
  1653. data/data/libphonenumber/resources/carrier/en/992.txt +23 -0
  1654. data/data/libphonenumber/resources/carrier/en/993.txt +17 -0
  1655. data/data/libphonenumber/resources/carrier/en/994.txt +20 -0
  1656. data/data/libphonenumber/resources/carrier/en/995.txt +34 -0
  1657. data/data/libphonenumber/resources/carrier/en/996.txt +22 -0
  1658. data/data/libphonenumber/resources/carrier/en/998.txt +33 -0
  1659. data/data/libphonenumber/resources/carrier/ru/375.txt +28 -0
  1660. data/data/libphonenumber/resources/geocoding/am/374.txt +177 -0
  1661. data/data/libphonenumber/resources/geocoding/ar/82.txt +34 -0
  1662. data/data/libphonenumber/resources/geocoding/ar/966.txt +27 -0
  1663. data/data/libphonenumber/resources/geocoding/be/375.txt +144 -0
  1664. data/data/libphonenumber/resources/geocoding/bg/359.txt +2105 -0
  1665. data/data/libphonenumber/resources/geocoding/cs/82.txt +35 -0
  1666. data/data/libphonenumber/resources/geocoding/de/32.txt +59 -0
  1667. data/data/libphonenumber/resources/geocoding/de/352.txt +229 -0
  1668. data/data/libphonenumber/resources/geocoding/de/41.txt +37 -0
  1669. data/data/libphonenumber/resources/geocoding/de/43.txt +1037 -0
  1670. data/data/libphonenumber/resources/geocoding/de/49.txt +5219 -0
  1671. data/data/libphonenumber/resources/geocoding/el/30.txt +259 -0
  1672. data/data/libphonenumber/resources/geocoding/en/1.txt +36228 -0
  1673. data/data/libphonenumber/resources/geocoding/en/20.txt +45 -0
  1674. data/data/libphonenumber/resources/geocoding/en/212.txt +85 -0
  1675. data/data/libphonenumber/resources/geocoding/en/213.txt +30 -0
  1676. data/data/libphonenumber/resources/geocoding/en/216.txt +26 -0
  1677. data/data/libphonenumber/resources/geocoding/en/220.txt +59 -0
  1678. data/data/libphonenumber/resources/geocoding/en/221.txt +19 -0
  1679. data/data/libphonenumber/resources/geocoding/en/222.txt +28 -0
  1680. data/data/libphonenumber/resources/geocoding/en/224.txt +38 -0
  1681. data/data/libphonenumber/resources/geocoding/en/225.txt +28 -0
  1682. data/data/libphonenumber/resources/geocoding/en/226.txt +50 -0
  1683. data/data/libphonenumber/resources/geocoding/en/228.txt +24 -0
  1684. data/data/libphonenumber/resources/geocoding/en/229.txt +52 -0
  1685. data/data/libphonenumber/resources/geocoding/en/230.txt +25 -0
  1686. data/data/libphonenumber/resources/geocoding/en/232.txt +20 -0
  1687. data/data/libphonenumber/resources/geocoding/en/233.txt +86 -0
  1688. data/data/libphonenumber/resources/geocoding/en/234.txt +79 -0
  1689. data/data/libphonenumber/resources/geocoding/en/237.txt +125 -0
  1690. data/data/libphonenumber/resources/geocoding/en/238.txt +54 -0
  1691. data/data/libphonenumber/resources/geocoding/en/239.txt +35 -0
  1692. data/data/libphonenumber/resources/geocoding/en/241.txt +48 -0
  1693. data/data/libphonenumber/resources/geocoding/en/242.txt +23 -0
  1694. data/data/libphonenumber/resources/geocoding/en/243.txt +22 -0
  1695. data/data/libphonenumber/resources/geocoding/en/244.txt +54 -0
  1696. data/data/libphonenumber/resources/geocoding/en/245.txt +36 -0
  1697. data/data/libphonenumber/resources/geocoding/en/247.txt +27 -0
  1698. data/data/libphonenumber/resources/geocoding/en/249.txt +28 -0
  1699. data/data/libphonenumber/resources/geocoding/en/251.txt +385 -0
  1700. data/data/libphonenumber/resources/geocoding/en/252.txt +21 -0
  1701. data/data/libphonenumber/resources/geocoding/en/254.txt +46 -0
  1702. data/data/libphonenumber/resources/geocoding/en/256.txt +30 -0
  1703. data/data/libphonenumber/resources/geocoding/en/257.txt +28 -0
  1704. data/data/libphonenumber/resources/geocoding/en/258.txt +27 -0
  1705. data/data/libphonenumber/resources/geocoding/en/260.txt +26 -0
  1706. data/data/libphonenumber/resources/geocoding/en/261.txt +40 -0
  1707. data/data/libphonenumber/resources/geocoding/en/263.txt +116 -0
  1708. data/data/libphonenumber/resources/geocoding/en/264.txt +1046 -0
  1709. data/data/libphonenumber/resources/geocoding/en/266.txt +18 -0
  1710. data/data/libphonenumber/resources/geocoding/en/267.txt +35 -0
  1711. data/data/libphonenumber/resources/geocoding/en/268.txt +54 -0
  1712. data/data/libphonenumber/resources/geocoding/en/269.txt +32 -0
  1713. data/data/libphonenumber/resources/geocoding/en/27.txt +57 -0
  1714. data/data/libphonenumber/resources/geocoding/en/290.txt +24 -0
  1715. data/data/libphonenumber/resources/geocoding/en/299.txt +43 -0
  1716. data/data/libphonenumber/resources/geocoding/en/30.txt +261 -0
  1717. data/data/libphonenumber/resources/geocoding/en/31.txt +137 -0
  1718. data/data/libphonenumber/resources/geocoding/en/32.txt +59 -0
  1719. data/data/libphonenumber/resources/geocoding/en/33.txt +5592 -0
  1720. data/data/libphonenumber/resources/geocoding/en/34.txt +123 -0
  1721. data/data/libphonenumber/resources/geocoding/en/351.txt +67 -0
  1722. data/data/libphonenumber/resources/geocoding/en/352.txt +228 -0
  1723. data/data/libphonenumber/resources/geocoding/en/353.txt +71 -0
  1724. data/data/libphonenumber/resources/geocoding/en/354.txt +23 -0
  1725. data/data/libphonenumber/resources/geocoding/en/355.txt +188 -0
  1726. data/data/libphonenumber/resources/geocoding/en/358.txt +38 -0
  1727. data/data/libphonenumber/resources/geocoding/en/359.txt +2102 -0
  1728. data/data/libphonenumber/resources/geocoding/en/36.txt +70 -0
  1729. data/data/libphonenumber/resources/geocoding/en/370.txt +64 -0
  1730. data/data/libphonenumber/resources/geocoding/en/371.txt +53 -0
  1731. data/data/libphonenumber/resources/geocoding/en/372.txt +35 -0
  1732. data/data/libphonenumber/resources/geocoding/en/373.txt +62 -0
  1733. data/data/libphonenumber/resources/geocoding/en/374.txt +184 -0
  1734. data/data/libphonenumber/resources/geocoding/en/375.txt +142 -0
  1735. data/data/libphonenumber/resources/geocoding/en/381.txt +50 -0
  1736. data/data/libphonenumber/resources/geocoding/en/389.txt +28 -0
  1737. data/data/libphonenumber/resources/geocoding/en/39.txt +137 -0
  1738. data/data/libphonenumber/resources/geocoding/en/40.txt +98 -0
  1739. data/data/libphonenumber/resources/geocoding/en/41.txt +37 -0
  1740. data/data/libphonenumber/resources/geocoding/en/420.txt +37 -0
  1741. data/data/libphonenumber/resources/geocoding/en/421.txt +42 -0
  1742. data/data/libphonenumber/resources/geocoding/en/43.txt +1036 -0
  1743. data/data/libphonenumber/resources/geocoding/en/44.txt +852 -0
  1744. data/data/libphonenumber/resources/geocoding/en/46.txt +265 -0
  1745. data/data/libphonenumber/resources/geocoding/en/47.txt +49 -0
  1746. data/data/libphonenumber/resources/geocoding/en/48.txt +65 -0
  1747. data/data/libphonenumber/resources/geocoding/en/49.txt +5218 -0
  1748. data/data/libphonenumber/resources/geocoding/en/51.txt +42 -0
  1749. data/data/libphonenumber/resources/geocoding/en/53.txt +33 -0
  1750. data/data/libphonenumber/resources/geocoding/en/54.txt +236 -0
  1751. data/data/libphonenumber/resources/geocoding/en/55.txt +84 -0
  1752. data/data/libphonenumber/resources/geocoding/en/56.txt +40 -0
  1753. data/data/libphonenumber/resources/geocoding/en/57.txt +186 -0
  1754. data/data/libphonenumber/resources/geocoding/en/58.txt +73 -0
  1755. data/data/libphonenumber/resources/geocoding/en/599.txt +22 -0
  1756. data/data/libphonenumber/resources/geocoding/en/62.txt +324 -0
  1757. data/data/libphonenumber/resources/geocoding/en/66.txt +40 -0
  1758. data/data/libphonenumber/resources/geocoding/en/686.txt +50 -0
  1759. data/data/libphonenumber/resources/geocoding/en/7.txt +355 -0
  1760. data/data/libphonenumber/resources/geocoding/en/81.txt +1547 -0
  1761. data/data/libphonenumber/resources/geocoding/en/82.txt +35 -0
  1762. data/data/libphonenumber/resources/geocoding/en/84.txt +80 -0
  1763. data/data/libphonenumber/resources/geocoding/en/86.txt +145812 -0
  1764. data/data/libphonenumber/resources/geocoding/en/886.txt +30 -0
  1765. data/data/libphonenumber/resources/geocoding/en/90.txt +182 -0
  1766. data/data/libphonenumber/resources/geocoding/en/91.txt +2669 -0
  1767. data/data/libphonenumber/resources/geocoding/en/94.txt +46 -0
  1768. data/data/libphonenumber/resources/geocoding/en/962.txt +32 -0
  1769. data/data/libphonenumber/resources/geocoding/en/966.txt +29 -0
  1770. data/data/libphonenumber/resources/geocoding/en/98.txt +53 -0
  1771. data/data/libphonenumber/resources/geocoding/es/228.txt +23 -0
  1772. data/data/libphonenumber/resources/geocoding/es/230.txt +23 -0
  1773. data/data/libphonenumber/resources/geocoding/es/34.txt +124 -0
  1774. data/data/libphonenumber/resources/geocoding/es/54.txt +238 -0
  1775. data/data/libphonenumber/resources/geocoding/es/56.txt +42 -0
  1776. data/data/libphonenumber/resources/geocoding/es/57.txt +186 -0
  1777. data/data/libphonenumber/resources/geocoding/es/58.txt +72 -0
  1778. data/data/libphonenumber/resources/geocoding/fa/98.txt +50 -0
  1779. data/data/libphonenumber/resources/geocoding/fi/358.txt +39 -0
  1780. data/data/libphonenumber/resources/geocoding/fr/212.txt +84 -0
  1781. data/data/libphonenumber/resources/geocoding/fr/222.txt +29 -0
  1782. data/data/libphonenumber/resources/geocoding/fr/225.txt +30 -0
  1783. data/data/libphonenumber/resources/geocoding/fr/228.txt +24 -0
  1784. data/data/libphonenumber/resources/geocoding/fr/229.txt +55 -0
  1785. data/data/libphonenumber/resources/geocoding/fr/230.txt +23 -0
  1786. data/data/libphonenumber/resources/geocoding/fr/242.txt +25 -0
  1787. data/data/libphonenumber/resources/geocoding/fr/243.txt +24 -0
  1788. data/data/libphonenumber/resources/geocoding/fr/269.txt +34 -0
  1789. data/data/libphonenumber/resources/geocoding/fr/290.txt +24 -0
  1790. data/data/libphonenumber/resources/geocoding/fr/32.txt +59 -0
  1791. data/data/libphonenumber/resources/geocoding/fr/33.txt +5593 -0
  1792. data/data/libphonenumber/resources/geocoding/fr/352.txt +231 -0
  1793. data/data/libphonenumber/resources/geocoding/fr/41.txt +37 -0
  1794. data/data/libphonenumber/resources/geocoding/fr/82.txt +33 -0
  1795. data/data/libphonenumber/resources/geocoding/hu/36.txt +71 -0
  1796. data/data/libphonenumber/resources/geocoding/id/62.txt +325 -0
  1797. data/data/libphonenumber/resources/geocoding/it/39.txt +248 -0
  1798. data/data/libphonenumber/resources/geocoding/it/41.txt +37 -0
  1799. data/data/libphonenumber/resources/geocoding/ja/81.txt +1546 -0
  1800. data/data/libphonenumber/resources/geocoding/ko/82.txt +35 -0
  1801. data/data/libphonenumber/resources/geocoding/nl/31.txt +145 -0
  1802. data/data/libphonenumber/resources/geocoding/nl/32.txt +59 -0
  1803. data/data/libphonenumber/resources/geocoding/pl/48.txt +66 -0
  1804. data/data/libphonenumber/resources/geocoding/pt/238.txt +58 -0
  1805. data/data/libphonenumber/resources/geocoding/pt/239.txt +37 -0
  1806. data/data/libphonenumber/resources/geocoding/pt/244.txt +59 -0
  1807. data/data/libphonenumber/resources/geocoding/pt/245.txt +37 -0
  1808. data/data/libphonenumber/resources/geocoding/pt/258.txt +29 -0
  1809. data/data/libphonenumber/resources/geocoding/pt/351.txt +69 -0
  1810. data/data/libphonenumber/resources/geocoding/pt/55.txt +86 -0
  1811. data/data/libphonenumber/resources/geocoding/ro/373.txt +61 -0
  1812. data/data/libphonenumber/resources/geocoding/ro/40.txt +99 -0
  1813. data/data/libphonenumber/resources/geocoding/ru/373.txt +61 -0
  1814. data/data/libphonenumber/resources/geocoding/ru/374.txt +177 -0
  1815. data/data/libphonenumber/resources/geocoding/ru/375.txt +143 -0
  1816. data/data/libphonenumber/resources/geocoding/ru/7.txt +108 -0
  1817. data/data/libphonenumber/resources/geocoding/se/358.txt +38 -0
  1818. data/data/libphonenumber/resources/geocoding/sr/381.txt +51 -0
  1819. data/data/libphonenumber/resources/geocoding/sv/46.txt +266 -0
  1820. data/data/libphonenumber/resources/geocoding/th/66.txt +39 -0
  1821. data/data/libphonenumber/resources/geocoding/tr/90.txt +182 -0
  1822. data/data/libphonenumber/resources/geocoding/vi/84.txt +80 -0
  1823. data/data/libphonenumber/resources/geocoding/zh/82.txt +35 -0
  1824. data/data/libphonenumber/resources/geocoding/zh/86.txt +145812 -0
  1825. data/data/libphonenumber/resources/geocoding/zh/886.txt +30 -0
  1826. data/data/libphonenumber/resources/geocoding/zh_Hant/82.txt +35 -0
  1827. data/data/libphonenumber/resources/geocoding/zh_Hant/886.txt +30 -0
  1828. data/data/libphonenumber/resources/phonemetadata.proto +282 -0
  1829. data/data/libphonenumber/resources/phonenumber.proto +123 -0
  1830. data/data/libphonenumber/resources/test/carrier/en/1.txt +16 -0
  1831. data/data/libphonenumber/resources/test/carrier/en/244.txt +16 -0
  1832. data/data/libphonenumber/resources/test/carrier/en/44.txt +17 -0
  1833. data/data/libphonenumber/resources/test/carrier/sv/44.txt +15 -0
  1834. data/data/libphonenumber/resources/test/geocoding/de/1.txt +16 -0
  1835. data/data/libphonenumber/resources/test/geocoding/en/1.txt +21 -0
  1836. data/data/libphonenumber/resources/test/geocoding/en/54.txt +15 -0
  1837. data/data/libphonenumber/resources/test/geocoding/en/82.txt +30 -0
  1838. data/data/libphonenumber/resources/test/geocoding/ko/82.txt +29 -0
  1839. data/data/libphonenumber/resources/test/timezones/map_data.txt +24 -0
  1840. data/data/libphonenumber/resources/timezones/map_data.txt +1996 -0
  1841. data/data/libphonenumber/tools/cpp/CMakeLists.txt +57 -0
  1842. data/data/libphonenumber/tools/cpp/gtest.cmake +47 -0
  1843. data/data/libphonenumber/tools/cpp/src/base/basictypes.h +312 -0
  1844. data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data.cc +654 -0
  1845. data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data.h +37 -0
  1846. data/data/libphonenumber/tools/cpp/src/cpp-build/generate_geocoding_data_main.cc +21 -0
  1847. data/data/libphonenumber/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc +39 -0
  1848. data/data/libphonenumber/tools/cpp/test/cpp-build/run_tests.cc +21 -0
  1849. data/data/libphonenumber/tools/java/common/pom.xml +61 -0
  1850. data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java +514 -0
  1851. data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/Command.java +51 -0
  1852. data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/CommandDispatcher.java +78 -0
  1853. data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/CopyrightNotice.java +66 -0
  1854. data/data/libphonenumber/tools/java/common/src/com/google/i18n/phonenumbers/FileUtils.java +52 -0
  1855. data/data/libphonenumber/tools/java/common/test/com/google/i18n/phonenumbers/BuildMetadataFromXmlTest.java +657 -0
  1856. data/data/libphonenumber/tools/java/cpp-build/pom.xml +149 -0
  1857. data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/BuildMetadataCppFromXml.java +219 -0
  1858. data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/CppMetadataGenerator.java +197 -0
  1859. data/data/libphonenumber/tools/java/cpp-build/src/com/google/i18n/phonenumbers/EntryPoint.java +33 -0
  1860. data/data/libphonenumber/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
  1861. data/data/libphonenumber/tools/java/cpp-build/test/com/google/i18n/phonenumbers/BuildMetadataCppFromXmlTest.java +185 -0
  1862. data/data/libphonenumber/tools/java/cpp-build/test/com/google/i18n/phonenumbers/CppMetadataGeneratorTest.java +122 -0
  1863. data/data/libphonenumber/tools/java/data/README +16 -0
  1864. data/data/libphonenumber/tools/java/data/pom.xml +111 -0
  1865. data/data/libphonenumber/tools/java/data/src/com/google/i18n/phonenumbers/CombineGeoData.java +287 -0
  1866. data/data/libphonenumber/tools/java/data/src/com/google/i18n/phonenumbers/CombineGeoDataServlet.java +46 -0
  1867. data/data/libphonenumber/tools/java/data/test/com/google/i18n/phonenumbers/CombineGeoDataTest.java +233 -0
  1868. data/data/libphonenumber/tools/java/data/webapp/WEB-INF/appengine-web.xml +8 -0
  1869. data/data/libphonenumber/tools/java/data/webapp/WEB-INF/logging.properties +13 -0
  1870. data/data/libphonenumber/tools/java/data/webapp/WEB-INF/web.xml +18 -0
  1871. data/data/libphonenumber/tools/java/data/webapp/index.html +22 -0
  1872. data/data/libphonenumber/tools/java/java-build/pom.xml +113 -0
  1873. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java +389 -0
  1874. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java +349 -0
  1875. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/EntryPoint.java +39 -0
  1876. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/JSArrayBuilder.java +142 -0
  1877. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/AbstractPhonePrefixDataIOHandler.java +62 -0
  1878. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixData.java +483 -0
  1879. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataEntryPoint.java +58 -0
  1880. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapData.java +143 -0
  1881. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapDataEntryPoint.java +60 -0
  1882. data/data/libphonenumber/tools/java/java-build/src/com/google/i18n/phonenumbers/buildtools/PhonePrefixDataIOHandler.java +59 -0
  1883. data/data/libphonenumber/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
  1884. data/data/libphonenumber/tools/java/java-build/test/com/google/i18n/phonenumbers/buildtools/GeneratePhonePrefixDataTest.java +291 -0
  1885. data/data/libphonenumber/tools/java/java-build/test/com/google/i18n/phonenumbers/buildtools/GenerateTimeZonesMapDataTest.java +136 -0
  1886. data/data/libphonenumber/tools/java/pom.xml +29 -0
  1887. data/data/libphonenumber/tools/script/continuous-integration.sh +96 -0
  1888. data/data/phone_data.dat +0 -0
  1889. data/lib/phonelib/core.rb +36 -1
  1890. data/lib/phonelib/data_importer.rb +268 -0
  1891. data/lib/phonelib/phone.rb +67 -0
  1892. data/lib/phonelib/version.rb +1 -1
  1893. data/lib/tasks/phonelib_tasks.rake +2 -70
  1894. metadata +1892 -7
@@ -0,0 +1,201 @@
1
+ // Copyright (C) 2011 The Libphonenumber Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // Author: Lara Rennie
16
+ // Author: Tao Huang
17
+ //
18
+ // This is a direct port from PhoneNumberMatcher.java.
19
+ // Changes to this class should also happen to the Java version, whenever it
20
+ // makes sense.
21
+
22
+ #ifndef I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
23
+ #define I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
24
+
25
+ #include <string>
26
+ #include <vector>
27
+
28
+ #include "phonenumbers/base/basictypes.h"
29
+ #include "phonenumbers/base/memory/scoped_ptr.h"
30
+ #include "phonenumbers/callback.h"
31
+ #include "phonenumbers/regexp_adapter.h"
32
+
33
+ namespace i18n {
34
+ namespace phonenumbers {
35
+
36
+ template <class R, class A1, class A2, class A3, class A4>
37
+ class ResultCallback4;
38
+
39
+ using std::string;
40
+ using std::vector;
41
+
42
+ class AlternateFormats;
43
+ class NumberFormat;
44
+ class PhoneNumber;
45
+ class PhoneNumberMatch;
46
+ class PhoneNumberMatcherRegExps;
47
+ class PhoneNumberUtil;
48
+
49
+ class PhoneNumberMatcher {
50
+ friend class PhoneNumberMatcherTest;
51
+ public:
52
+ // Leniency when finding potential phone numbers in text segments. The levels
53
+ // here are ordered in increasing strictness.
54
+ enum Leniency {
55
+ // Phone numbers accepted are possible, but not necessarily valid.
56
+ POSSIBLE,
57
+ // Phone numbers accepted are possible and valid.
58
+ VALID,
59
+ // Phone numbers accepted are valid and are grouped in a possible way for
60
+ // this locale. For example, a US number written as "65 02 53 00 00" is not
61
+ // accepted at this leniency level, whereas "650 253 0000" or "6502530000"
62
+ // are. Numbers with more than one '/' symbol are also dropped at this
63
+ // level.
64
+ // Warning: The next two levels might result in lower coverage especially
65
+ // for regions outside of country code "+1". If you are not sure about which
66
+ // level to use, you can send an e-mail to the discussion group
67
+ // http://groups.google.com/group/libphonenumber-discuss/
68
+ STRICT_GROUPING,
69
+ // Phone numbers accepted are valid and are grouped in the same way that we
70
+ // would have formatted it, or as a single block. For example, a US number
71
+ // written as "650 2530000" is not accepted at this leniency level, whereas
72
+ // "650 253 0000" or "6502530000" are.
73
+ EXACT_GROUPING,
74
+ };
75
+
76
+ // Constructs a phone number matcher.
77
+ PhoneNumberMatcher(const PhoneNumberUtil& util,
78
+ const string& text,
79
+ const string& region_code,
80
+ Leniency leniency,
81
+ int max_tries);
82
+
83
+ // Wrapper to construct a phone number matcher, with no limitation on the
84
+ // number of retries and VALID Leniency.
85
+ PhoneNumberMatcher(const string& text,
86
+ const string& region_code);
87
+
88
+ ~PhoneNumberMatcher();
89
+
90
+ // Returns true if the text sequence has another match.
91
+ bool HasNext();
92
+
93
+ // Gets next match from text sequence.
94
+ bool Next(PhoneNumberMatch* match);
95
+
96
+ private:
97
+ // The potential states of a PhoneNumberMatcher.
98
+ enum State {
99
+ NOT_READY,
100
+ READY,
101
+ DONE,
102
+ };
103
+
104
+ // Attempts to extract a match from a candidate string. Returns true if a
105
+ // match is found, otherwise returns false. The value "offset" refers to the
106
+ // start index of the candidate string within the overall text.
107
+ bool Find(int index, PhoneNumberMatch* match);
108
+
109
+ // Checks a number was formatted with a national prefix, if the number was
110
+ // found in national format, and a national prefix is required for that
111
+ // number. Returns false if the number needed to have a national prefix and
112
+ // none was found.
113
+ bool IsNationalPrefixPresentIfRequired(const PhoneNumber& number) const;
114
+
115
+ // Attempts to extract a match from candidate. Returns true if the match was
116
+ // found, otherwise returns false.
117
+ bool ExtractMatch(const string& candidate, int offset,
118
+ PhoneNumberMatch* match);
119
+
120
+ // Attempts to extract a match from a candidate string if the whole candidate
121
+ // does not qualify as a match. Returns true if a match is found, otherwise
122
+ // returns false.
123
+ bool ExtractInnerMatch(const string& candidate, int offset,
124
+ PhoneNumberMatch* match);
125
+
126
+ // Parses a phone number from the candidate using PhoneNumberUtil::Parse() and
127
+ // verifies it matches the requested leniency. If parsing and verification
128
+ // succeed, returns true, otherwise this method returns false;
129
+ bool ParseAndVerify(const string& candidate, int offset,
130
+ PhoneNumberMatch* match);
131
+
132
+ bool CheckNumberGroupingIsValid(
133
+ const PhoneNumber& phone_number,
134
+ const string& candidate,
135
+ ResultCallback4<bool, const PhoneNumberUtil&, const PhoneNumber&,
136
+ const string&, const vector<string>&>* checker) const;
137
+
138
+ void GetNationalNumberGroups(
139
+ const PhoneNumber& number,
140
+ const NumberFormat* formatting_pattern,
141
+ vector<string>* digit_blocks) const;
142
+
143
+ bool AllNumberGroupsAreExactlyPresent(
144
+ const PhoneNumberUtil& util,
145
+ const PhoneNumber& phone_number,
146
+ const string& normalized_candidate,
147
+ const vector<string>& formatted_number_groups) const;
148
+
149
+ bool VerifyAccordingToLeniency(Leniency leniency, const PhoneNumber& number,
150
+ const string& candidate) const;
151
+
152
+ // In interface for testing purposes.
153
+ static bool ContainsMoreThanOneSlashInNationalNumber(
154
+ const PhoneNumber& number,
155
+ const string& candidate,
156
+ const PhoneNumberUtil& util);
157
+
158
+ // Helper method to determine if a character is a Latin-script letter or not.
159
+ // For our purposes, combining marks should also return true since we assume
160
+ // they have been added to a preceding Latin character.
161
+ static bool IsLatinLetter(char32 letter);
162
+
163
+ // Helper class holding useful regular expressions.
164
+ const PhoneNumberMatcherRegExps* reg_exps_;
165
+
166
+ // Helper class holding loaded data containing alternate ways phone numbers
167
+ // might be formatted for certain regions.
168
+ const AlternateFormats* alternate_formats_;
169
+
170
+ // The phone number utility;
171
+ const PhoneNumberUtil& phone_util_;
172
+
173
+ // The text searched for phone numbers;
174
+ const string text_;
175
+
176
+ // The region(country) to assume for phone numbers without an international
177
+ // prefix.
178
+ const string preferred_region_;
179
+
180
+ // The degree of validation requested.
181
+ Leniency leniency_;
182
+
183
+ // The maximum number of retries after matching an invalid number.
184
+ int max_tries_;
185
+
186
+ // The iteration tristate.
187
+ State state_;
188
+
189
+ // The last successful match, NULL unless in State.READY.
190
+ scoped_ptr<PhoneNumberMatch> last_match_;
191
+
192
+ // The next index to start searching at. Undefined in State.DONE.
193
+ int search_index_;
194
+
195
+ DISALLOW_COPY_AND_ASSIGN(PhoneNumberMatcher);
196
+ };
197
+
198
+ } // namespace phonenumbers
199
+ } // namespace i18n
200
+
201
+ #endif // I18N_PHONENUMBERS_PHONENUMBERMATCHER_H_
@@ -0,0 +1,2799 @@
1
+ // Copyright (C) 2009 The Libphonenumber Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ // Author: Shaopeng Jia
16
+ // Open-sourced by: Philippe Liard
17
+
18
+ #include "phonenumbers/phonenumberutil.h"
19
+
20
+ #include <string.h>
21
+ #include <algorithm>
22
+ #include <cctype>
23
+ #include <iterator>
24
+ #include <map>
25
+ #include <utility>
26
+ #include <vector>
27
+
28
+ #include <google/protobuf/message_lite.h>
29
+ #include <unicode/uchar.h>
30
+ #include <unicode/utf8.h>
31
+
32
+ #include "phonenumbers/asyoutypeformatter.h"
33
+ #include "phonenumbers/base/basictypes.h"
34
+ #include "phonenumbers/base/logging.h"
35
+ #include "phonenumbers/base/memory/singleton.h"
36
+ #include "phonenumbers/default_logger.h"
37
+ #include "phonenumbers/encoding_utils.h"
38
+ #include "phonenumbers/metadata.h"
39
+ #include "phonenumbers/normalize_utf8.h"
40
+ #include "phonenumbers/phonemetadata.pb.h"
41
+ #include "phonenumbers/phonenumber.h"
42
+ #include "phonenumbers/phonenumber.pb.h"
43
+ #include "phonenumbers/regexp_adapter.h"
44
+ #include "phonenumbers/regexp_cache.h"
45
+ #include "phonenumbers/regexp_factory.h"
46
+ #include "phonenumbers/region_code.h"
47
+ #include "phonenumbers/stl_util.h"
48
+ #include "phonenumbers/stringutil.h"
49
+ #include "phonenumbers/utf/unicodetext.h"
50
+ #include "phonenumbers/utf/utf.h"
51
+
52
+ namespace i18n {
53
+ namespace phonenumbers {
54
+
55
+ using std::make_pair;
56
+ using std::sort;
57
+
58
+ using google::protobuf::RepeatedPtrField;
59
+
60
+ // static constants
61
+ const size_t PhoneNumberUtil::kMinLengthForNsn;
62
+ const size_t PhoneNumberUtil::kMaxLengthForNsn;
63
+ const size_t PhoneNumberUtil::kMaxLengthCountryCode;
64
+ const int PhoneNumberUtil::kNanpaCountryCode;
65
+
66
+ // static
67
+ const char PhoneNumberUtil::kPlusChars[] = "+\xEF\xBC\x8B"; /* "++" */
68
+ // To find out the unicode code-point of the characters below in vim, highlight
69
+ // the character and type 'ga'. Note that the - is used to express ranges of
70
+ // full-width punctuation below, as well as being present in the expression
71
+ // itself. In emacs, you can use M-x unicode-what to query information about the
72
+ // unicode character.
73
+ // static
74
+ const char PhoneNumberUtil::kValidPunctuation[] =
75
+ /* "-x‐-―−ー--/  ­<U+200B><U+2060> ()()[].\\[\\]/~⁓∼" */
76
+ "-x\xE2\x80\x90-\xE2\x80\x95\xE2\x88\x92\xE3\x83\xBC\xEF\xBC\x8D-\xEF\xBC"
77
+ "\x8F \xC2\xA0\xC2\xAD\xE2\x80\x8B\xE2\x81\xA0\xE3\x80\x80()\xEF\xBC\x88"
78
+ "\xEF\xBC\x89\xEF\xBC\xBB\xEF\xBC\xBD.\\[\\]/~\xE2\x81\x93\xE2\x88\xBC";
79
+
80
+ // static
81
+ const char PhoneNumberUtil::kCaptureUpToSecondNumberStart[] = "(.*)[\\\\/] *x";
82
+
83
+ // static
84
+ const char PhoneNumberUtil::kRegionCodeForNonGeoEntity[] = "001";
85
+
86
+ namespace {
87
+
88
+ // The prefix that needs to be inserted in front of a Colombian landline
89
+ // number when dialed from a mobile phone in Colombia.
90
+ const char kColombiaMobileToFixedLinePrefix[] = "3";
91
+
92
+ // The kPlusSign signifies the international prefix.
93
+ const char kPlusSign[] = "+";
94
+
95
+ const char kStarSign[] = "*";
96
+
97
+ const char kRfc3966ExtnPrefix[] = ";ext=";
98
+ const char kRfc3966Prefix[] = "tel:";
99
+ const char kRfc3966PhoneContext[] = ";phone-context=";
100
+ const char kRfc3966IsdnSubaddress[] = ";isub=";
101
+
102
+ const char kDigits[] = "\\p{Nd}";
103
+ // We accept alpha characters in phone numbers, ASCII only. We store lower-case
104
+ // here only since our regular expressions are case-insensitive.
105
+ const char kValidAlpha[] = "a-z";
106
+
107
+ // Default extension prefix to use when formatting. This will be put in front of
108
+ // any extension component of the number, after the main national number is
109
+ // formatted. For example, if you wish the default extension formatting to be "
110
+ // extn: 3456", then you should specify " extn: " here as the default extension
111
+ // prefix. This can be overridden by region-specific preferences.
112
+ const char kDefaultExtnPrefix[] = " ext. ";
113
+
114
+ // One-character symbols that can be used to indicate an extension.
115
+ const char kSingleExtnSymbolsForMatching[] =
116
+ "x\xEF\xBD\x98#\xEF\xBC\x83~\xEF\xBD\x9E";
117
+
118
+ bool LoadCompiledInMetadata(PhoneMetadataCollection* metadata) {
119
+ if (!metadata->ParseFromArray(metadata_get(), metadata_size())) {
120
+ LOG(ERROR) << "Could not parse binary data.";
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+
126
+ // Returns a pointer to the description inside the metadata of the appropriate
127
+ // type.
128
+ const PhoneNumberDesc* GetNumberDescByType(
129
+ const PhoneMetadata& metadata,
130
+ PhoneNumberUtil::PhoneNumberType type) {
131
+ switch (type) {
132
+ case PhoneNumberUtil::PREMIUM_RATE:
133
+ return &metadata.premium_rate();
134
+ case PhoneNumberUtil::TOLL_FREE:
135
+ return &metadata.toll_free();
136
+ case PhoneNumberUtil::MOBILE:
137
+ return &metadata.mobile();
138
+ case PhoneNumberUtil::FIXED_LINE:
139
+ case PhoneNumberUtil::FIXED_LINE_OR_MOBILE:
140
+ return &metadata.fixed_line();
141
+ case PhoneNumberUtil::SHARED_COST:
142
+ return &metadata.shared_cost();
143
+ case PhoneNumberUtil::VOIP:
144
+ return &metadata.voip();
145
+ case PhoneNumberUtil::PERSONAL_NUMBER:
146
+ return &metadata.personal_number();
147
+ case PhoneNumberUtil::PAGER:
148
+ return &metadata.pager();
149
+ case PhoneNumberUtil::UAN:
150
+ return &metadata.uan();
151
+ case PhoneNumberUtil::VOICEMAIL:
152
+ return &metadata.voicemail();
153
+ default:
154
+ return &metadata.general_desc();
155
+ }
156
+ }
157
+
158
+ // A helper function that is used by Format and FormatByPattern.
159
+ void PrefixNumberWithCountryCallingCode(
160
+ int country_calling_code,
161
+ PhoneNumberUtil::PhoneNumberFormat number_format,
162
+ string* formatted_number) {
163
+ switch (number_format) {
164
+ case PhoneNumberUtil::E164:
165
+ formatted_number->insert(0, StrCat(kPlusSign, country_calling_code));
166
+ return;
167
+ case PhoneNumberUtil::INTERNATIONAL:
168
+ formatted_number->insert(0, StrCat(kPlusSign, country_calling_code, " "));
169
+ return;
170
+ case PhoneNumberUtil::RFC3966:
171
+ formatted_number->insert(0, StrCat(kRfc3966Prefix, kPlusSign,
172
+ country_calling_code, "-"));
173
+ return;
174
+ case PhoneNumberUtil::NATIONAL:
175
+ default:
176
+ // Do nothing.
177
+ return;
178
+ }
179
+ }
180
+
181
+ // Returns true when one national number is the suffix of the other or both are
182
+ // the same.
183
+ bool IsNationalNumberSuffixOfTheOther(const PhoneNumber& first_number,
184
+ const PhoneNumber& second_number) {
185
+ const string& first_number_national_number =
186
+ SimpleItoa(static_cast<uint64>(first_number.national_number()));
187
+ const string& second_number_national_number =
188
+ SimpleItoa(static_cast<uint64>(second_number.national_number()));
189
+ // Note that HasSuffixString returns true if the numbers are equal.
190
+ return HasSuffixString(first_number_national_number,
191
+ second_number_national_number) ||
192
+ HasSuffixString(second_number_national_number,
193
+ first_number_national_number);
194
+ }
195
+
196
+ char32 ToUnicodeCodepoint(const char* unicode_char) {
197
+ char32 codepoint;
198
+ EncodingUtils::DecodeUTF8Char(unicode_char, &codepoint);
199
+ return codepoint;
200
+ }
201
+
202
+ // Helper initialiser method to create the regular-expression pattern to match
203
+ // extensions, allowing the one-codepoint extension symbols provided by
204
+ // single_extn_symbols.
205
+ // Note that there are currently three capturing groups for the extension itself
206
+ // - if this number is changed, MaybeStripExtension needs to be updated.
207
+ string CreateExtnPattern(const string& single_extn_symbols) {
208
+ static const string capturing_extn_digits = StrCat("([", kDigits, "]{1,7})");
209
+ // The first regular expression covers RFC 3966 format, where the extension is
210
+ // added using ";ext=". The second more generic one starts with optional white
211
+ // space and ends with an optional full stop (.), followed by zero or more
212
+ // spaces/tabs and then the numbers themselves. The third one covers the
213
+ // special case of American numbers where the extension is written with a hash
214
+ // at the end, such as "- 503#".
215
+ // Note that the only capturing groups should be around the digits that you
216
+ // want to capture as part of the extension, or else parsing will fail!
217
+ // Canonical-equivalence doesn't seem to be an option with RE2, so we allow
218
+ // two options for representing the ó - the character itself, and one in the
219
+ // unicode decomposed form with the combining acute accent.
220
+ return (StrCat(
221
+ kRfc3966ExtnPrefix, capturing_extn_digits, "|"
222
+ /* "[  \\t,]*(?:e?xt(?:ensi(?:ó?|ó))?n?|e?xtn?|single_extn_symbols|"
223
+ "int|int|anexo)"
224
+ "[:\\..]?[  \\t,-]*", capturing_extn_digits, "#?|" */
225
+ "[ \xC2\xA0\\t,]*(?:e?xt(?:ensi(?:o\xCC\x81?|\xC3\xB3))?n?|"
226
+ "(?:\xEF\xBD\x85)?\xEF\xBD\x98\xEF\xBD\x94(?:\xEF\xBD\x8E)?|"
227
+ "[", single_extn_symbols, "]|int|"
228
+ "\xEF\xBD\x89\xEF\xBD\x8E\xEF\xBD\x94|anexo)"
229
+ "[:\\.\xEF\xBC\x8E]?[ \xC2\xA0\\t,-]*", capturing_extn_digits,
230
+ "#?|[- ]+([", kDigits, "]{1,5})#"));
231
+ }
232
+
233
+ // Normalizes a string of characters representing a phone number by replacing
234
+ // all characters found in the accompanying map with the values therein, and
235
+ // stripping all other characters if remove_non_matches is true.
236
+ // Parameters:
237
+ // number - a pointer to a string of characters representing a phone number to
238
+ // be normalized.
239
+ // normalization_replacements - a mapping of characters to what they should be
240
+ // replaced by in the normalized version of the phone number
241
+ // remove_non_matches - indicates whether characters that are not able to be
242
+ // replaced should be stripped from the number. If this is false, they will be
243
+ // left unchanged in the number.
244
+ void NormalizeHelper(const map<char32, char>& normalization_replacements,
245
+ bool remove_non_matches,
246
+ string* number) {
247
+ DCHECK(number);
248
+ UnicodeText number_as_unicode;
249
+ number_as_unicode.PointToUTF8(number->data(), number->size());
250
+ string normalized_number;
251
+ char unicode_char[5];
252
+ for (UnicodeText::const_iterator it = number_as_unicode.begin();
253
+ it != number_as_unicode.end();
254
+ ++it) {
255
+ map<char32, char>::const_iterator found_glyph_pair =
256
+ normalization_replacements.find(*it);
257
+ if (found_glyph_pair != normalization_replacements.end()) {
258
+ normalized_number.push_back(found_glyph_pair->second);
259
+ } else if (!remove_non_matches) {
260
+ // Find out how long this unicode char is so we can append it all.
261
+ int char_len = it.get_utf8(unicode_char);
262
+ normalized_number.append(unicode_char, char_len);
263
+ }
264
+ // If neither of the above are true, we remove this character.
265
+ }
266
+ number->assign(normalized_number);
267
+ }
268
+
269
+ PhoneNumberUtil::ValidationResult TestNumberLengthAgainstPattern(
270
+ const RegExp& number_pattern, const string& number) {
271
+ string extracted_number;
272
+ if (number_pattern.FullMatch(number, &extracted_number)) {
273
+ return PhoneNumberUtil::IS_POSSIBLE;
274
+ }
275
+ if (number_pattern.PartialMatch(number, &extracted_number)) {
276
+ return PhoneNumberUtil::TOO_LONG;
277
+ } else {
278
+ return PhoneNumberUtil::TOO_SHORT;
279
+ }
280
+ }
281
+
282
+ } // namespace
283
+
284
+ void PhoneNumberUtil::SetLogger(Logger* logger) {
285
+ logger_.reset(logger);
286
+ Logger::set_logger_impl(logger_.get());
287
+ }
288
+
289
+ class PhoneNumberRegExpsAndMappings {
290
+ private:
291
+ void InitializeMapsAndSets() {
292
+ diallable_char_mappings_.insert(make_pair('+', '+'));
293
+ diallable_char_mappings_.insert(make_pair('*', '*'));
294
+ // Here we insert all punctuation symbols that we wish to respect when
295
+ // formatting alpha numbers, as they show the intended number groupings.
296
+ all_plus_number_grouping_symbols_.insert(
297
+ make_pair(ToUnicodeCodepoint("-"), '-'));
298
+ all_plus_number_grouping_symbols_.insert(
299
+ make_pair(ToUnicodeCodepoint("\xEF\xBC\x8D" /* "-" */), '-'));
300
+ all_plus_number_grouping_symbols_.insert(
301
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x90" /* "‐" */), '-'));
302
+ all_plus_number_grouping_symbols_.insert(
303
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x91" /* "‑" */), '-'));
304
+ all_plus_number_grouping_symbols_.insert(
305
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x92" /* "‒" */), '-'));
306
+ all_plus_number_grouping_symbols_.insert(
307
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x93" /* "–" */), '-'));
308
+ all_plus_number_grouping_symbols_.insert(
309
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x94" /* "—" */), '-'));
310
+ all_plus_number_grouping_symbols_.insert(
311
+ make_pair(ToUnicodeCodepoint("\xE2\x80\x95" /* "―" */), '-'));
312
+ all_plus_number_grouping_symbols_.insert(
313
+ make_pair(ToUnicodeCodepoint("\xE2\x88\x92" /* "−" */), '-'));
314
+ all_plus_number_grouping_symbols_.insert(
315
+ make_pair(ToUnicodeCodepoint("/"), '/'));
316
+ all_plus_number_grouping_symbols_.insert(
317
+ make_pair(ToUnicodeCodepoint("\xEF\xBC\x8F" /* "/" */), '/'));
318
+ all_plus_number_grouping_symbols_.insert(
319
+ make_pair(ToUnicodeCodepoint(" "), ' '));
320
+ all_plus_number_grouping_symbols_.insert(
321
+ make_pair(ToUnicodeCodepoint("\xE3\x80\x80" /* " " */), ' '));
322
+ all_plus_number_grouping_symbols_.insert(
323
+ make_pair(ToUnicodeCodepoint("\xE2\x81\xA0"), ' '));
324
+ all_plus_number_grouping_symbols_.insert(
325
+ make_pair(ToUnicodeCodepoint("."), '.'));
326
+ all_plus_number_grouping_symbols_.insert(
327
+ make_pair(ToUnicodeCodepoint("\xEF\xBC\x8E" /* "." */), '.'));
328
+ // Only the upper-case letters are added here - the lower-case versions are
329
+ // added programmatically.
330
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("A"), '2'));
331
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("B"), '2'));
332
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("C"), '2'));
333
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("D"), '3'));
334
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("E"), '3'));
335
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("F"), '3'));
336
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("G"), '4'));
337
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("H"), '4'));
338
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("I"), '4'));
339
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("J"), '5'));
340
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("K"), '5'));
341
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("L"), '5'));
342
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("M"), '6'));
343
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("N"), '6'));
344
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("O"), '6'));
345
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("P"), '7'));
346
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("Q"), '7'));
347
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("R"), '7'));
348
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("S"), '7'));
349
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("T"), '8'));
350
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("U"), '8'));
351
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("V"), '8'));
352
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("W"), '9'));
353
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("X"), '9'));
354
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("Y"), '9'));
355
+ alpha_mappings_.insert(make_pair(ToUnicodeCodepoint("Z"), '9'));
356
+ map<char32, char> lower_case_mappings;
357
+ map<char32, char> alpha_letters;
358
+ for (map<char32, char>::const_iterator it = alpha_mappings_.begin();
359
+ it != alpha_mappings_.end();
360
+ ++it) {
361
+ // Convert all the upper-case ASCII letters to lower-case.
362
+ if (it->first < 128) {
363
+ char letter_as_upper = static_cast<char>(it->first);
364
+ char32 letter_as_lower = static_cast<char32>(tolower(letter_as_upper));
365
+ lower_case_mappings.insert(make_pair(letter_as_lower, it->second));
366
+ // Add the letters in both variants to the alpha_letters map. This just
367
+ // pairs each letter with its upper-case representation so that it can
368
+ // be retained when normalising alpha numbers.
369
+ alpha_letters.insert(make_pair(letter_as_lower, letter_as_upper));
370
+ alpha_letters.insert(make_pair(it->first, letter_as_upper));
371
+ }
372
+ }
373
+ // In the Java version we don't insert the lower-case mappings in the map,
374
+ // because we convert to upper case on the fly. Doing this here would
375
+ // involve pulling in all of ICU, which we don't want to do if we don't have
376
+ // to.
377
+ alpha_mappings_.insert(lower_case_mappings.begin(),
378
+ lower_case_mappings.end());
379
+ alpha_phone_mappings_.insert(alpha_mappings_.begin(),
380
+ alpha_mappings_.end());
381
+ all_plus_number_grouping_symbols_.insert(alpha_letters.begin(),
382
+ alpha_letters.end());
383
+ // Add the ASCII digits so that they don't get deleted by NormalizeHelper().
384
+ for (char c = '0'; c <= '9'; ++c) {
385
+ diallable_char_mappings_.insert(make_pair(c, c));
386
+ alpha_phone_mappings_.insert(make_pair(c, c));
387
+ all_plus_number_grouping_symbols_.insert(make_pair(c, c));
388
+ }
389
+
390
+ mobile_token_mappings_.insert(make_pair(52, '1'));
391
+ mobile_token_mappings_.insert(make_pair(54, '9'));
392
+ }
393
+
394
+ // Small string helpers since StrCat has a maximum number of arguments. These
395
+ // are both used to build valid_phone_number_.
396
+ const string punctuation_and_star_sign_;
397
+ const string min_length_phone_number_pattern_;
398
+
399
+ // Regular expression of viable phone numbers. This is location independent.
400
+ // Checks we have at least three leading digits, and only valid punctuation,
401
+ // alpha characters and digits in the phone number. Does not include extension
402
+ // data. The symbol 'x' is allowed here as valid punctuation since it is often
403
+ // used as a placeholder for carrier codes, for example in Brazilian phone
404
+ // numbers. We also allow multiple plus-signs at the start.
405
+ // Corresponds to the following:
406
+ // [digits]{minLengthNsn}|
407
+ // plus_sign*(([punctuation]|[star])*[digits]){3,}
408
+ // ([punctuation]|[star]|[digits]|[alpha])*
409
+ //
410
+ // The first reg-ex is to allow short numbers (two digits long) to be parsed
411
+ // if they are entered as "15" etc, but only if there is no punctuation in
412
+ // them. The second expression restricts the number of digits to three or
413
+ // more, but then allows them to be in international form, and to have
414
+ // alpha-characters and punctuation.
415
+ const string valid_phone_number_;
416
+
417
+ // Regexp of all possible ways to write extensions, for use when parsing. This
418
+ // will be run as a case-insensitive regexp match. Wide character versions are
419
+ // also provided after each ASCII version.
420
+ // For parsing, we are slightly more lenient in our interpretation than for
421
+ // matching. Here we allow a "comma" as a possible extension indicator. When
422
+ // matching, this is hardly ever used to indicate this.
423
+ const string extn_patterns_for_parsing_;
424
+
425
+ public:
426
+ scoped_ptr<const AbstractRegExpFactory> regexp_factory_;
427
+ scoped_ptr<RegExpCache> regexp_cache_;
428
+
429
+ // A map that contains characters that are essential when dialling. That means
430
+ // any of the characters in this map must not be removed from a number when
431
+ // dialing, otherwise the call will not reach the intended destination.
432
+ map<char32, char> diallable_char_mappings_;
433
+ // These mappings map a character (key) to a specific digit that should
434
+ // replace it for normalization purposes.
435
+ map<char32, char> alpha_mappings_;
436
+ // For performance reasons, store a map of combining alpha_mappings with ASCII
437
+ // digits.
438
+ map<char32, char> alpha_phone_mappings_;
439
+
440
+ // Separate map of all symbols that we wish to retain when formatting alpha
441
+ // numbers. This includes digits, ascii letters and number grouping symbols
442
+ // such as "-" and " ".
443
+ map<char32, char> all_plus_number_grouping_symbols_;
444
+
445
+ // Map of country calling codes that use a mobile token before the area code.
446
+ // One example of when this is relevant is when determining the length of the
447
+ // national destination code, which should be the length of the area code plus
448
+ // the length of the mobile token.
449
+ map<int, char> mobile_token_mappings_;
450
+
451
+ // Pattern that makes it easy to distinguish whether a region has a unique
452
+ // international dialing prefix or not. If a region has a unique international
453
+ // prefix (e.g. 011 in USA), it will be represented as a string that contains
454
+ // a sequence of ASCII digits. If there are multiple available international
455
+ // prefixes in a region, they will be represented as a regex string that
456
+ // always contains character(s) other than ASCII digits.
457
+ // Note this regex also includes tilde, which signals waiting for the tone.
458
+ scoped_ptr<const RegExp> unique_international_prefix_;
459
+
460
+ scoped_ptr<const RegExp> digits_pattern_;
461
+ scoped_ptr<const RegExp> capturing_digit_pattern_;
462
+ scoped_ptr<const RegExp> capturing_ascii_digits_pattern_;
463
+
464
+ // Regular expression of acceptable characters that may start a phone number
465
+ // for the purposes of parsing. This allows us to strip away meaningless
466
+ // prefixes to phone numbers that may be mistakenly given to us. This consists
467
+ // of digits, the plus symbol and arabic-indic digits. This does not contain
468
+ // alpha characters, although they may be used later in the number. It also
469
+ // does not include other punctuation, as this will be stripped later during
470
+ // parsing and is of no information value when parsing a number. The string
471
+ // starting with this valid character is captured.
472
+ // This corresponds to VALID_START_CHAR in the java version.
473
+ scoped_ptr<const RegExp> valid_start_char_pattern_;
474
+
475
+ // Regular expression of valid characters before a marker that might indicate
476
+ // a second number.
477
+ scoped_ptr<const RegExp> capture_up_to_second_number_start_pattern_;
478
+
479
+ // Regular expression of trailing characters that we want to remove. We remove
480
+ // all characters that are not alpha or numerical characters. The hash
481
+ // character is retained here, as it may signify the previous block was an
482
+ // extension. Note the capturing block at the start to capture the rest of the
483
+ // number if this was a match.
484
+ // This corresponds to UNWANTED_END_CHAR_PATTERN in the java version.
485
+ scoped_ptr<const RegExp> unwanted_end_char_pattern_;
486
+
487
+ // Regular expression of groups of valid punctuation characters.
488
+ scoped_ptr<const RegExp> separator_pattern_;
489
+
490
+ // Regexp of all possible ways to write extensions, for use when finding phone
491
+ // numbers in text. This will be run as a case-insensitive regexp match. Wide
492
+ // character versions are also provided after each ASCII version.
493
+ const string extn_patterns_for_matching_;
494
+
495
+ // Regexp of all known extension prefixes used by different regions followed
496
+ // by 1 or more valid digits, for use when parsing.
497
+ scoped_ptr<const RegExp> extn_pattern_;
498
+
499
+ // We append optionally the extension pattern to the end here, as a valid
500
+ // phone number may have an extension prefix appended, followed by 1 or more
501
+ // digits.
502
+ scoped_ptr<const RegExp> valid_phone_number_pattern_;
503
+
504
+ // We use this pattern to check if the phone number has at least three letters
505
+ // in it - if so, then we treat it as a number where some phone-number digits
506
+ // are represented by letters.
507
+ scoped_ptr<const RegExp> valid_alpha_phone_pattern_;
508
+
509
+ scoped_ptr<const RegExp> first_group_capturing_pattern_;
510
+
511
+ scoped_ptr<const RegExp> carrier_code_pattern_;
512
+
513
+ scoped_ptr<const RegExp> plus_chars_pattern_;
514
+
515
+ PhoneNumberRegExpsAndMappings()
516
+ : punctuation_and_star_sign_(StrCat(PhoneNumberUtil::kValidPunctuation,
517
+ kStarSign)),
518
+ min_length_phone_number_pattern_(
519
+ StrCat(kDigits, "{", PhoneNumberUtil::kMinLengthForNsn, "}")),
520
+ valid_phone_number_(
521
+ StrCat(min_length_phone_number_pattern_, "|[",
522
+ PhoneNumberUtil::kPlusChars, "]*(?:[",
523
+ punctuation_and_star_sign_, "]*",
524
+ kDigits, "){3,}[", kValidAlpha,
525
+ punctuation_and_star_sign_, kDigits,
526
+ "]*")),
527
+ extn_patterns_for_parsing_(
528
+ CreateExtnPattern(StrCat(",", kSingleExtnSymbolsForMatching))),
529
+ regexp_factory_(new RegExpFactory()),
530
+ regexp_cache_(new RegExpCache(*regexp_factory_.get(), 128)),
531
+ diallable_char_mappings_(),
532
+ alpha_mappings_(),
533
+ alpha_phone_mappings_(),
534
+ all_plus_number_grouping_symbols_(),
535
+ mobile_token_mappings_(),
536
+ unique_international_prefix_(regexp_factory_->CreateRegExp(
537
+ /* "[\\d]+(?:[~⁓∼~][\\d]+)?" */
538
+ "[\\d]+(?:[~\xE2\x81\x93\xE2\x88\xBC\xEF\xBD\x9E][\\d]+)?")),
539
+ digits_pattern_(
540
+ regexp_factory_->CreateRegExp(StrCat("[", kDigits, "]*"))),
541
+ capturing_digit_pattern_(
542
+ regexp_factory_->CreateRegExp(StrCat("([", kDigits, "])"))),
543
+ capturing_ascii_digits_pattern_(
544
+ regexp_factory_->CreateRegExp("(\\d+)")),
545
+ valid_start_char_pattern_(regexp_factory_->CreateRegExp(
546
+ StrCat("[", PhoneNumberUtil::kPlusChars, kDigits, "]"))),
547
+ capture_up_to_second_number_start_pattern_(
548
+ regexp_factory_->CreateRegExp(
549
+ PhoneNumberUtil::kCaptureUpToSecondNumberStart)),
550
+ unwanted_end_char_pattern_(
551
+ regexp_factory_->CreateRegExp("[^\\p{N}\\p{L}#]")),
552
+ separator_pattern_(
553
+ regexp_factory_->CreateRegExp(
554
+ StrCat("[", PhoneNumberUtil::kValidPunctuation, "]+"))),
555
+ extn_patterns_for_matching_(
556
+ CreateExtnPattern(kSingleExtnSymbolsForMatching)),
557
+ extn_pattern_(regexp_factory_->CreateRegExp(
558
+ StrCat("(?i)(?:", extn_patterns_for_parsing_, ")$"))),
559
+ valid_phone_number_pattern_(regexp_factory_->CreateRegExp(
560
+ StrCat("(?i)", valid_phone_number_,
561
+ "(?:", extn_patterns_for_parsing_, ")?"))),
562
+ valid_alpha_phone_pattern_(regexp_factory_->CreateRegExp(
563
+ StrCat("(?i)(?:.*?[", kValidAlpha, "]){3}"))),
564
+ // The first_group_capturing_pattern was originally set to $1 but there
565
+ // are some countries for which the first group is not used in the
566
+ // national pattern (e.g. Argentina) so the $1 group does not match
567
+ // correctly. Therefore, we use \d, so that the first group actually
568
+ // used in the pattern will be matched.
569
+ first_group_capturing_pattern_(
570
+ regexp_factory_->CreateRegExp("(\\$\\d)")),
571
+ carrier_code_pattern_(regexp_factory_->CreateRegExp("\\$CC")),
572
+ plus_chars_pattern_(
573
+ regexp_factory_->CreateRegExp(
574
+ StrCat("[", PhoneNumberUtil::kPlusChars, "]+"))) {
575
+ InitializeMapsAndSets();
576
+ }
577
+
578
+ private:
579
+ DISALLOW_COPY_AND_ASSIGN(PhoneNumberRegExpsAndMappings);
580
+ };
581
+
582
+ // Private constructor. Also takes care of initialisation.
583
+ PhoneNumberUtil::PhoneNumberUtil()
584
+ : logger_(Logger::set_logger_impl(new NullLogger())),
585
+ reg_exps_(new PhoneNumberRegExpsAndMappings),
586
+ country_calling_code_to_region_code_map_(new vector<IntRegionsPair>()),
587
+ nanpa_regions_(new set<string>()),
588
+ region_to_metadata_map_(new map<string, PhoneMetadata>()),
589
+ country_code_to_non_geographical_metadata_map_(
590
+ new map<int, PhoneMetadata>) {
591
+ Logger::set_logger_impl(logger_.get());
592
+ // TODO: Update the java version to put the contents of the init
593
+ // method inside the constructor as well to keep both in sync.
594
+ PhoneMetadataCollection metadata_collection;
595
+ if (!LoadCompiledInMetadata(&metadata_collection)) {
596
+ LOG(DFATAL) << "Could not parse compiled-in metadata.";
597
+ return;
598
+ }
599
+ // Storing data in a temporary map to make it easier to find other regions
600
+ // that share a country calling code when inserting data.
601
+ map<int, list<string>* > country_calling_code_to_region_map;
602
+ for (RepeatedPtrField<PhoneMetadata>::const_iterator it =
603
+ metadata_collection.metadata().begin();
604
+ it != metadata_collection.metadata().end();
605
+ ++it) {
606
+ const string& region_code = it->id();
607
+ if (region_code == RegionCode::GetUnknown()) {
608
+ continue;
609
+ }
610
+
611
+ int country_calling_code = it->country_code();
612
+ if (kRegionCodeForNonGeoEntity == region_code) {
613
+ country_code_to_non_geographical_metadata_map_->insert(
614
+ make_pair(country_calling_code, *it));
615
+ } else {
616
+ region_to_metadata_map_->insert(make_pair(region_code, *it));
617
+ }
618
+ map<int, list<string>* >::iterator calling_code_in_map =
619
+ country_calling_code_to_region_map.find(country_calling_code);
620
+ if (calling_code_in_map != country_calling_code_to_region_map.end()) {
621
+ if (it->main_country_for_code()) {
622
+ calling_code_in_map->second->push_front(region_code);
623
+ } else {
624
+ calling_code_in_map->second->push_back(region_code);
625
+ }
626
+ } else {
627
+ // For most country calling codes, there will be only one region code.
628
+ list<string>* list_with_region_code = new list<string>();
629
+ list_with_region_code->push_back(region_code);
630
+ country_calling_code_to_region_map.insert(
631
+ make_pair(country_calling_code, list_with_region_code));
632
+ }
633
+ if (country_calling_code == kNanpaCountryCode) {
634
+ nanpa_regions_->insert(region_code);
635
+ }
636
+ }
637
+
638
+ country_calling_code_to_region_code_map_->insert(
639
+ country_calling_code_to_region_code_map_->begin(),
640
+ country_calling_code_to_region_map.begin(),
641
+ country_calling_code_to_region_map.end());
642
+ // Sort all the pairs in ascending order according to country calling code.
643
+ sort(country_calling_code_to_region_code_map_->begin(),
644
+ country_calling_code_to_region_code_map_->end(),
645
+ OrderByFirst());
646
+ }
647
+
648
+ PhoneNumberUtil::~PhoneNumberUtil() {
649
+ STLDeleteContainerPairSecondPointers(
650
+ country_calling_code_to_region_code_map_->begin(),
651
+ country_calling_code_to_region_code_map_->end());
652
+ }
653
+
654
+ void PhoneNumberUtil::GetSupportedRegions(set<string>* regions) const {
655
+ DCHECK(regions);
656
+ for (map<string, PhoneMetadata>::const_iterator it =
657
+ region_to_metadata_map_->begin(); it != region_to_metadata_map_->end();
658
+ ++it) {
659
+ regions->insert(it->first);
660
+ }
661
+ }
662
+
663
+ void PhoneNumberUtil::GetSupportedGlobalNetworkCallingCodes(
664
+ set<int>* calling_codes) const {
665
+ DCHECK(calling_codes);
666
+ for (map<int, PhoneMetadata>::const_iterator it =
667
+ country_code_to_non_geographical_metadata_map_->begin();
668
+ it != country_code_to_non_geographical_metadata_map_->end(); ++it) {
669
+ calling_codes->insert(it->first);
670
+ }
671
+ }
672
+
673
+ // Public wrapper function to get a PhoneNumberUtil instance with the default
674
+ // metadata file.
675
+ // static
676
+ PhoneNumberUtil* PhoneNumberUtil::GetInstance() {
677
+ return Singleton<PhoneNumberUtil>::GetInstance();
678
+ }
679
+
680
+ const string& PhoneNumberUtil::GetExtnPatternsForMatching() const {
681
+ return reg_exps_->extn_patterns_for_matching_;
682
+ }
683
+
684
+ bool PhoneNumberUtil::StartsWithPlusCharsPattern(const string& number)
685
+ const {
686
+ const scoped_ptr<RegExpInput> number_string_piece(
687
+ reg_exps_->regexp_factory_->CreateInput(number));
688
+ return reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get());
689
+ }
690
+
691
+ bool PhoneNumberUtil::ContainsOnlyValidDigits(const string& s) const {
692
+ return reg_exps_->digits_pattern_->FullMatch(s);
693
+ }
694
+
695
+ void PhoneNumberUtil::TrimUnwantedEndChars(string* number) const {
696
+ DCHECK(number);
697
+ UnicodeText number_as_unicode;
698
+ number_as_unicode.PointToUTF8(number->data(), number->size());
699
+ char current_char[5];
700
+ int len;
701
+ UnicodeText::const_reverse_iterator reverse_it(number_as_unicode.end());
702
+ for (; reverse_it.base() != number_as_unicode.begin(); ++reverse_it) {
703
+ len = reverse_it.get_utf8(current_char);
704
+ current_char[len] = '\0';
705
+ if (!reg_exps_->unwanted_end_char_pattern_->FullMatch(current_char)) {
706
+ break;
707
+ }
708
+ }
709
+
710
+ number->assign(UnicodeText::UTF8Substring(number_as_unicode.begin(),
711
+ reverse_it.base()));
712
+ }
713
+
714
+ bool PhoneNumberUtil::IsFormatEligibleForAsYouTypeFormatter(
715
+ const string& format) const {
716
+ // A pattern that is used to determine if a numberFormat under
717
+ // availableFormats is eligible to be used by the AYTF. It is eligible when
718
+ // the format element under numberFormat contains groups of the dollar sign
719
+ // followed by a single digit, separated by valid phone number punctuation.
720
+ // This prevents invalid punctuation (such as the star sign in Israeli star
721
+ // numbers) getting into the output of the AYTF.
722
+ const RegExp& eligible_format_pattern = reg_exps_->regexp_cache_->GetRegExp(
723
+ StrCat("[", kValidPunctuation, "]*", "(\\$\\d", "[",
724
+ kValidPunctuation, "]*)+"));
725
+ return eligible_format_pattern.FullMatch(format);
726
+ }
727
+
728
+ bool PhoneNumberUtil::FormattingRuleHasFirstGroupOnly(
729
+ const string& national_prefix_formatting_rule) const {
730
+ // A pattern that is used to determine if the national prefix formatting rule
731
+ // has the first group only, i.e., does not start with the national prefix.
732
+ // Note that the pattern explicitly allows for unbalanced parentheses.
733
+ const RegExp& first_group_only_prefix_pattern =
734
+ reg_exps_->regexp_cache_->GetRegExp("\\(?\\$1\\)?");
735
+ return national_prefix_formatting_rule.empty() ||
736
+ first_group_only_prefix_pattern.FullMatch(
737
+ national_prefix_formatting_rule);
738
+ }
739
+
740
+ void PhoneNumberUtil::GetNddPrefixForRegion(const string& region_code,
741
+ bool strip_non_digits,
742
+ string* national_prefix) const {
743
+ DCHECK(national_prefix);
744
+ const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
745
+ if (!metadata) {
746
+ LOG(WARNING) << "Invalid or unknown region code (" << region_code
747
+ << ") provided.";
748
+ return;
749
+ }
750
+ national_prefix->assign(metadata->national_prefix());
751
+ if (strip_non_digits) {
752
+ // Note: if any other non-numeric symbols are ever used in national
753
+ // prefixes, these would have to be removed here as well.
754
+ strrmm(national_prefix, "~");
755
+ }
756
+ }
757
+
758
+ bool PhoneNumberUtil::IsValidRegionCode(const string& region_code) const {
759
+ return (region_to_metadata_map_->find(region_code) !=
760
+ region_to_metadata_map_->end());
761
+ }
762
+
763
+ bool PhoneNumberUtil::HasValidCountryCallingCode(
764
+ int country_calling_code) const {
765
+ // Create an IntRegionsPair with the country_code passed in, and use it to
766
+ // locate the pair with the same country_code in the sorted vector.
767
+ IntRegionsPair target_pair;
768
+ target_pair.first = country_calling_code;
769
+ return (binary_search(country_calling_code_to_region_code_map_->begin(),
770
+ country_calling_code_to_region_code_map_->end(),
771
+ target_pair, OrderByFirst()));
772
+ }
773
+
774
+ // Returns a pointer to the phone metadata for the appropriate region or NULL
775
+ // if the region code is invalid or unknown.
776
+ const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegion(
777
+ const string& region_code) const {
778
+ map<string, PhoneMetadata>::const_iterator it =
779
+ region_to_metadata_map_->find(region_code);
780
+ if (it != region_to_metadata_map_->end()) {
781
+ return &it->second;
782
+ }
783
+ return NULL;
784
+ }
785
+
786
+ const PhoneMetadata* PhoneNumberUtil::GetMetadataForNonGeographicalRegion(
787
+ int country_calling_code) const {
788
+ map<int, PhoneMetadata>::const_iterator it =
789
+ country_code_to_non_geographical_metadata_map_->find(
790
+ country_calling_code);
791
+ if (it != country_code_to_non_geographical_metadata_map_->end()) {
792
+ return &it->second;
793
+ }
794
+ return NULL;
795
+ }
796
+
797
+ void PhoneNumberUtil::Format(const PhoneNumber& number,
798
+ PhoneNumberFormat number_format,
799
+ string* formatted_number) const {
800
+ DCHECK(formatted_number);
801
+ if (number.national_number() == 0) {
802
+ const string& raw_input = number.raw_input();
803
+ if (!raw_input.empty()) {
804
+ // Unparseable numbers that kept their raw input just use that.
805
+ // This is the only case where a number can be formatted as E164 without a
806
+ // leading '+' symbol (but the original number wasn't parseable anyway).
807
+ // TODO: Consider removing the 'if' above so that unparseable
808
+ // strings without raw input format to the empty string instead of "+00".
809
+ formatted_number->assign(raw_input);
810
+ return;
811
+ }
812
+ }
813
+ int country_calling_code = number.country_code();
814
+ string national_significant_number;
815
+ GetNationalSignificantNumber(number, &national_significant_number);
816
+ if (number_format == E164) {
817
+ // Early exit for E164 case (even if the country calling code is invalid)
818
+ // since no formatting of the national number needs to be applied.
819
+ // Extensions are not formatted.
820
+ formatted_number->assign(national_significant_number);
821
+ PrefixNumberWithCountryCallingCode(country_calling_code, E164,
822
+ formatted_number);
823
+ return;
824
+ }
825
+ if (!HasValidCountryCallingCode(country_calling_code)) {
826
+ formatted_number->assign(national_significant_number);
827
+ return;
828
+ }
829
+ // Note here that all NANPA formatting rules are contained by US, so we use
830
+ // that to format NANPA numbers. The same applies to Russian Fed regions -
831
+ // rules are contained by Russia. French Indian Ocean country rules are
832
+ // contained by Réunion.
833
+ string region_code;
834
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
835
+ // Metadata cannot be NULL because the country calling code is valid (which
836
+ // means that the region code cannot be ZZ and must be one of our supported
837
+ // region codes).
838
+ const PhoneMetadata* metadata =
839
+ GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
840
+ FormatNsn(national_significant_number, *metadata, number_format,
841
+ formatted_number);
842
+ MaybeAppendFormattedExtension(number, *metadata, number_format,
843
+ formatted_number);
844
+ PrefixNumberWithCountryCallingCode(country_calling_code, number_format,
845
+ formatted_number);
846
+ }
847
+
848
+ void PhoneNumberUtil::FormatByPattern(
849
+ const PhoneNumber& number,
850
+ PhoneNumberFormat number_format,
851
+ const RepeatedPtrField<NumberFormat>& user_defined_formats,
852
+ string* formatted_number) const {
853
+ DCHECK(formatted_number);
854
+ int country_calling_code = number.country_code();
855
+ // Note GetRegionCodeForCountryCode() is used because formatting information
856
+ // for regions which share a country calling code is contained by only one
857
+ // region for performance reasons. For example, for NANPA regions it will be
858
+ // contained in the metadata for US.
859
+ string national_significant_number;
860
+ GetNationalSignificantNumber(number, &national_significant_number);
861
+ if (!HasValidCountryCallingCode(country_calling_code)) {
862
+ formatted_number->assign(national_significant_number);
863
+ return;
864
+ }
865
+ string region_code;
866
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
867
+ // Metadata cannot be NULL because the country calling code is valid.
868
+ const PhoneMetadata* metadata =
869
+ GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
870
+ const NumberFormat* formatting_pattern =
871
+ ChooseFormattingPatternForNumber(user_defined_formats,
872
+ national_significant_number);
873
+ if (!formatting_pattern) {
874
+ // If no pattern above is matched, we format the number as a whole.
875
+ formatted_number->assign(national_significant_number);
876
+ } else {
877
+ NumberFormat num_format_copy;
878
+ // Before we do a replacement of the national prefix pattern $NP with the
879
+ // national prefix, we need to copy the rule so that subsequent replacements
880
+ // for different numbers have the appropriate national prefix.
881
+ num_format_copy.MergeFrom(*formatting_pattern);
882
+ string national_prefix_formatting_rule(
883
+ formatting_pattern->national_prefix_formatting_rule());
884
+ if (!national_prefix_formatting_rule.empty()) {
885
+ const string& national_prefix = metadata->national_prefix();
886
+ if (!national_prefix.empty()) {
887
+ // Replace $NP with national prefix and $FG with the first group ($1).
888
+ GlobalReplaceSubstring("$NP", national_prefix,
889
+ &national_prefix_formatting_rule);
890
+ GlobalReplaceSubstring("$FG", "$1",
891
+ &national_prefix_formatting_rule);
892
+ num_format_copy.set_national_prefix_formatting_rule(
893
+ national_prefix_formatting_rule);
894
+ } else {
895
+ // We don't want to have a rule for how to format the national prefix if
896
+ // there isn't one.
897
+ num_format_copy.clear_national_prefix_formatting_rule();
898
+ }
899
+ }
900
+ FormatNsnUsingPattern(national_significant_number, num_format_copy,
901
+ number_format, formatted_number);
902
+ }
903
+ MaybeAppendFormattedExtension(number, *metadata, NATIONAL, formatted_number);
904
+ PrefixNumberWithCountryCallingCode(country_calling_code, number_format,
905
+ formatted_number);
906
+ }
907
+
908
+ void PhoneNumberUtil::FormatNationalNumberWithCarrierCode(
909
+ const PhoneNumber& number,
910
+ const string& carrier_code,
911
+ string* formatted_number) const {
912
+ int country_calling_code = number.country_code();
913
+ string national_significant_number;
914
+ GetNationalSignificantNumber(number, &national_significant_number);
915
+ if (!HasValidCountryCallingCode(country_calling_code)) {
916
+ formatted_number->assign(national_significant_number);
917
+ return;
918
+ }
919
+
920
+ // Note GetRegionCodeForCountryCode() is used because formatting information
921
+ // for regions which share a country calling code is contained by only one
922
+ // region for performance reasons. For example, for NANPA regions it will be
923
+ // contained in the metadata for US.
924
+ string region_code;
925
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
926
+ // Metadata cannot be NULL because the country calling code is valid.
927
+ const PhoneMetadata* metadata =
928
+ GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
929
+ FormatNsnWithCarrier(national_significant_number, *metadata, NATIONAL,
930
+ carrier_code, formatted_number);
931
+ MaybeAppendFormattedExtension(number, *metadata, NATIONAL, formatted_number);
932
+ PrefixNumberWithCountryCallingCode(country_calling_code, NATIONAL,
933
+ formatted_number);
934
+ }
935
+
936
+ const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegionOrCallingCode(
937
+ int country_calling_code, const string& region_code) const {
938
+ return kRegionCodeForNonGeoEntity == region_code
939
+ ? GetMetadataForNonGeographicalRegion(country_calling_code)
940
+ : GetMetadataForRegion(region_code);
941
+ }
942
+
943
+ void PhoneNumberUtil::FormatNationalNumberWithPreferredCarrierCode(
944
+ const PhoneNumber& number,
945
+ const string& fallback_carrier_code,
946
+ string* formatted_number) const {
947
+ FormatNationalNumberWithCarrierCode(
948
+ number,
949
+ number.has_preferred_domestic_carrier_code()
950
+ ? number.preferred_domestic_carrier_code()
951
+ : fallback_carrier_code,
952
+ formatted_number);
953
+ }
954
+
955
+ void PhoneNumberUtil::FormatNumberForMobileDialing(
956
+ const PhoneNumber& number,
957
+ const string& calling_from,
958
+ bool with_formatting,
959
+ string* formatted_number) const {
960
+ int country_calling_code = number.country_code();
961
+ if (!HasValidCountryCallingCode(country_calling_code)) {
962
+ formatted_number->assign(number.has_raw_input() ? number.raw_input() : "");
963
+ return;
964
+ }
965
+
966
+ formatted_number->assign("");
967
+ // Clear the extension, as that part cannot normally be dialed together with
968
+ // the main number.
969
+ PhoneNumber number_no_extension(number);
970
+ number_no_extension.clear_extension();
971
+ string region_code;
972
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
973
+ PhoneNumberType number_type = GetNumberType(number_no_extension);
974
+ bool is_valid_number = (number_type != UNKNOWN);
975
+ if (calling_from == region_code) {
976
+ bool is_fixed_line_or_mobile =
977
+ (number_type == FIXED_LINE) || (number_type == MOBILE) ||
978
+ (number_type == FIXED_LINE_OR_MOBILE);
979
+ // Carrier codes may be needed in some countries. We handle this here.
980
+ if ((region_code == "CO") && (number_type == FIXED_LINE)) {
981
+ FormatNationalNumberWithCarrierCode(
982
+ number_no_extension, kColombiaMobileToFixedLinePrefix,
983
+ formatted_number);
984
+ } else if ((region_code == "BR") && (is_fixed_line_or_mobile)) {
985
+ if (number_no_extension.has_preferred_domestic_carrier_code()) {
986
+ FormatNationalNumberWithPreferredCarrierCode(number_no_extension, "",
987
+ formatted_number);
988
+ } else {
989
+ // Brazilian fixed line and mobile numbers need to be dialed with a
990
+ // carrier code when called within Brazil. Without that, most of the
991
+ // carriers won't connect the call. Because of that, we return an empty
992
+ // string here.
993
+ formatted_number->assign("");
994
+ }
995
+ } else if (is_valid_number && region_code == "HU") {
996
+ // The national format for HU numbers doesn't contain the national prefix,
997
+ // because that is how numbers are normally written down. However, the
998
+ // national prefix is obligatory when dialing from a mobile phone, except
999
+ // for short numbers. As a result, we add it back here if it is a valid
1000
+ // regular length phone number.
1001
+ Format(number_no_extension, NATIONAL, formatted_number);
1002
+ string hu_national_prefix;
1003
+ GetNddPrefixForRegion(region_code, true /* strip non-digits */,
1004
+ &hu_national_prefix);
1005
+ formatted_number->assign(
1006
+ StrCat(hu_national_prefix, " ", *formatted_number));
1007
+ } else if (country_calling_code == kNanpaCountryCode) {
1008
+ // For NANPA countries, we output international format for numbers that
1009
+ // can be dialed internationally, since that always works, except for
1010
+ // numbers which might potentially be short numbers, which are always
1011
+ // dialled in national format.
1012
+ const PhoneMetadata* region_metadata = GetMetadataForRegion(calling_from);
1013
+ string national_number;
1014
+ GetNationalSignificantNumber(number_no_extension, &national_number);
1015
+ if (CanBeInternationallyDialled(number_no_extension) &&
1016
+ !IsShorterThanPossibleNormalNumber(region_metadata,
1017
+ national_number)) {
1018
+ Format(number_no_extension, INTERNATIONAL, formatted_number);
1019
+ } else {
1020
+ Format(number_no_extension, NATIONAL, formatted_number);
1021
+ }
1022
+ } else {
1023
+ // For non-geographical countries, and Mexican and Chilean fixed line and
1024
+ // mobile numbers, we output international format for numbers that can be
1025
+ // dialed internationally as that always works.
1026
+ if ((region_code == kRegionCodeForNonGeoEntity ||
1027
+ // MX fixed line and mobile numbers should always be formatted in
1028
+ // international format, even when dialed within MX. For national
1029
+ // format to work, a carrier code needs to be used, and the correct
1030
+ // carrier code depends on if the caller and callee are from the same
1031
+ // local area. It is trickier to get that to work correctly than
1032
+ // using international format, which is tested to work fine on all
1033
+ // carriers.
1034
+ // CL fixed line numbers need the national prefix when dialing in the
1035
+ // national format, but don't have it when used for display. The
1036
+ // reverse is true for mobile numbers. As a result, we output them in
1037
+ // the international format to make it work.
1038
+ ((region_code == "MX" || region_code == "CL") &&
1039
+ is_fixed_line_or_mobile)) &&
1040
+ CanBeInternationallyDialled(number_no_extension)) {
1041
+ Format(number_no_extension, INTERNATIONAL, formatted_number);
1042
+ } else {
1043
+ Format(number_no_extension, NATIONAL, formatted_number);
1044
+ }
1045
+ }
1046
+ } else if (is_valid_number &&
1047
+ CanBeInternationallyDialled(number_no_extension)) {
1048
+ // We assume that short numbers are not diallable from outside their
1049
+ // region, so if a number is not a valid regular length phone number, we
1050
+ // treat it as if it cannot be internationally dialled.
1051
+ with_formatting
1052
+ ? Format(number_no_extension, INTERNATIONAL, formatted_number)
1053
+ : Format(number_no_extension, E164, formatted_number);
1054
+ return;
1055
+ }
1056
+ if (!with_formatting) {
1057
+ NormalizeDiallableCharsOnly(formatted_number);
1058
+ }
1059
+ }
1060
+
1061
+ void PhoneNumberUtil::FormatOutOfCountryCallingNumber(
1062
+ const PhoneNumber& number,
1063
+ const string& calling_from,
1064
+ string* formatted_number) const {
1065
+ DCHECK(formatted_number);
1066
+ if (!IsValidRegionCode(calling_from)) {
1067
+ LOG(WARNING) << "Trying to format number from invalid region "
1068
+ << calling_from
1069
+ << ". International formatting applied.";
1070
+ Format(number, INTERNATIONAL, formatted_number);
1071
+ return;
1072
+ }
1073
+ int country_code = number.country_code();
1074
+ string national_significant_number;
1075
+ GetNationalSignificantNumber(number, &national_significant_number);
1076
+ if (!HasValidCountryCallingCode(country_code)) {
1077
+ formatted_number->assign(national_significant_number);
1078
+ return;
1079
+ }
1080
+ if (country_code == kNanpaCountryCode) {
1081
+ if (IsNANPACountry(calling_from)) {
1082
+ // For NANPA regions, return the national format for these regions but
1083
+ // prefix it with the country calling code.
1084
+ Format(number, NATIONAL, formatted_number);
1085
+ formatted_number->insert(0, StrCat(country_code, " "));
1086
+ return;
1087
+ }
1088
+ } else if (country_code == GetCountryCodeForValidRegion(calling_from)) {
1089
+ // If neither region is a NANPA region, then we check to see if the
1090
+ // country calling code of the number and the country calling code of the
1091
+ // region we are calling from are the same.
1092
+ // For regions that share a country calling code, the country calling code
1093
+ // need not be dialled. This also applies when dialling within a region, so
1094
+ // this if clause covers both these cases.
1095
+ // Technically this is the case for dialling from la Réunion to other
1096
+ // overseas departments of France (French Guiana, Martinique, Guadeloupe),
1097
+ // but not vice versa - so we don't cover this edge case for now and for
1098
+ // those cases return the version including country calling code.
1099
+ // Details here:
1100
+ // http://www.petitfute.com/voyage/225-info-pratiques-reunion
1101
+ Format(number, NATIONAL, formatted_number);
1102
+ return;
1103
+ }
1104
+ // Metadata cannot be NULL because we checked 'IsValidRegionCode()' above.
1105
+ const PhoneMetadata* metadata_calling_from =
1106
+ GetMetadataForRegion(calling_from);
1107
+ const string& international_prefix =
1108
+ metadata_calling_from->international_prefix();
1109
+
1110
+ // For regions that have multiple international prefixes, the international
1111
+ // format of the number is returned, unless there is a preferred international
1112
+ // prefix.
1113
+ const string international_prefix_for_formatting(
1114
+ reg_exps_->unique_international_prefix_->FullMatch(international_prefix)
1115
+ ? international_prefix
1116
+ : metadata_calling_from->preferred_international_prefix());
1117
+
1118
+ string region_code;
1119
+ GetRegionCodeForCountryCode(country_code, &region_code);
1120
+ // Metadata cannot be NULL because the country_code is valid.
1121
+ const PhoneMetadata* metadata_for_region =
1122
+ GetMetadataForRegionOrCallingCode(country_code, region_code);
1123
+ FormatNsn(national_significant_number, *metadata_for_region, INTERNATIONAL,
1124
+ formatted_number);
1125
+ MaybeAppendFormattedExtension(number, *metadata_for_region, INTERNATIONAL,
1126
+ formatted_number);
1127
+ if (!international_prefix_for_formatting.empty()) {
1128
+ formatted_number->insert(
1129
+ 0, StrCat(international_prefix_for_formatting, " ", country_code, " "));
1130
+ } else {
1131
+ PrefixNumberWithCountryCallingCode(country_code, INTERNATIONAL,
1132
+ formatted_number);
1133
+ }
1134
+ }
1135
+
1136
+ void PhoneNumberUtil::FormatInOriginalFormat(const PhoneNumber& number,
1137
+ const string& region_calling_from,
1138
+ string* formatted_number) const {
1139
+ DCHECK(formatted_number);
1140
+
1141
+ if (number.has_raw_input() &&
1142
+ (HasUnexpectedItalianLeadingZero(number) ||
1143
+ !HasFormattingPatternForNumber(number))) {
1144
+ // We check if we have the formatting pattern because without that, we might
1145
+ // format the number as a group without national prefix.
1146
+ formatted_number->assign(number.raw_input());
1147
+ return;
1148
+ }
1149
+ if (!number.has_country_code_source()) {
1150
+ Format(number, NATIONAL, formatted_number);
1151
+ return;
1152
+ }
1153
+ switch (number.country_code_source()) {
1154
+ case PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN:
1155
+ Format(number, INTERNATIONAL, formatted_number);
1156
+ break;
1157
+ case PhoneNumber::FROM_NUMBER_WITH_IDD:
1158
+ FormatOutOfCountryCallingNumber(number, region_calling_from,
1159
+ formatted_number);
1160
+ break;
1161
+ case PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN:
1162
+ Format(number, INTERNATIONAL, formatted_number);
1163
+ formatted_number->erase(formatted_number->begin());
1164
+ break;
1165
+ case PhoneNumber::FROM_DEFAULT_COUNTRY:
1166
+ // Fall-through to default case.
1167
+ default:
1168
+ string region_code;
1169
+ GetRegionCodeForCountryCode(number.country_code(), &region_code);
1170
+ // We strip non-digits from the NDD here, and from the raw input later, so
1171
+ // that we can compare them easily.
1172
+ string national_prefix;
1173
+ GetNddPrefixForRegion(region_code, true /* strip non-digits */,
1174
+ &national_prefix);
1175
+ if (national_prefix.empty()) {
1176
+ // If the region doesn't have a national prefix at all, we can safely
1177
+ // return the national format without worrying about a national prefix
1178
+ // being added.
1179
+ Format(number, NATIONAL, formatted_number);
1180
+ break;
1181
+ }
1182
+ // Otherwise, we check if the original number was entered with a national
1183
+ // prefix.
1184
+ if (RawInputContainsNationalPrefix(number.raw_input(), national_prefix,
1185
+ region_code)) {
1186
+ // If so, we can safely return the national format.
1187
+ Format(number, NATIONAL, formatted_number);
1188
+ break;
1189
+ }
1190
+ // Metadata cannot be NULL here because GetNddPrefixForRegion() (above)
1191
+ // leaves the prefix empty if there is no metadata for the region.
1192
+ const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
1193
+ string national_number;
1194
+ GetNationalSignificantNumber(number, &national_number);
1195
+ // This shouldn't be NULL, because we have checked that above with
1196
+ // HasFormattingPatternForNumber.
1197
+ const NumberFormat* format_rule =
1198
+ ChooseFormattingPatternForNumber(metadata->number_format(),
1199
+ national_number);
1200
+ // The format rule could still be NULL here if the national number was 0
1201
+ // and there was no raw input (this should not be possible for numbers
1202
+ // generated by the phonenumber library as they would also not have a
1203
+ // country calling code and we would have exited earlier).
1204
+ if (!format_rule) {
1205
+ Format(number, NATIONAL, formatted_number);
1206
+ break;
1207
+ }
1208
+ // When the format we apply to this number doesn't contain national
1209
+ // prefix, we can just return the national format.
1210
+ // TODO: Refactor the code below with the code in
1211
+ // IsNationalPrefixPresentIfRequired.
1212
+ string candidate_national_prefix_rule(
1213
+ format_rule->national_prefix_formatting_rule());
1214
+ // We assume that the first-group symbol will never be _before_ the
1215
+ // national prefix.
1216
+ if (!candidate_national_prefix_rule.empty()) {
1217
+ candidate_national_prefix_rule.erase(
1218
+ candidate_national_prefix_rule.find("$1"));
1219
+ NormalizeDigitsOnly(&candidate_national_prefix_rule);
1220
+ }
1221
+ if (candidate_national_prefix_rule.empty()) {
1222
+ // National prefix not used when formatting this number.
1223
+ Format(number, NATIONAL, formatted_number);
1224
+ break;
1225
+ }
1226
+ // Otherwise, we need to remove the national prefix from our output.
1227
+ RepeatedPtrField<NumberFormat> number_formats;
1228
+ NumberFormat* number_format = number_formats.Add();
1229
+ number_format->MergeFrom(*format_rule);
1230
+ number_format->clear_national_prefix_formatting_rule();
1231
+ FormatByPattern(number, NATIONAL, number_formats, formatted_number);
1232
+ break;
1233
+ }
1234
+ // If no digit is inserted/removed/modified as a result of our formatting, we
1235
+ // return the formatted phone number; otherwise we return the raw input the
1236
+ // user entered.
1237
+ if (!formatted_number->empty() && !number.raw_input().empty()) {
1238
+ string normalized_formatted_number(*formatted_number);
1239
+ NormalizeDiallableCharsOnly(&normalized_formatted_number);
1240
+ string normalized_raw_input(number.raw_input());
1241
+ NormalizeDiallableCharsOnly(&normalized_raw_input);
1242
+ if (normalized_formatted_number != normalized_raw_input) {
1243
+ formatted_number->assign(number.raw_input());
1244
+ }
1245
+ }
1246
+ }
1247
+
1248
+ // Check if raw_input, which is assumed to be in the national format, has a
1249
+ // national prefix. The national prefix is assumed to be in digits-only form.
1250
+ bool PhoneNumberUtil::RawInputContainsNationalPrefix(
1251
+ const string& raw_input,
1252
+ const string& national_prefix,
1253
+ const string& region_code) const {
1254
+ string normalized_national_number(raw_input);
1255
+ NormalizeDigitsOnly(&normalized_national_number);
1256
+ if (HasPrefixString(normalized_national_number, national_prefix)) {
1257
+ // Some Japanese numbers (e.g. 00777123) might be mistaken to contain
1258
+ // the national prefix when written without it (e.g. 0777123) if we just
1259
+ // do prefix matching. To tackle that, we check the validity of the
1260
+ // number if the assumed national prefix is removed (777123 won't be
1261
+ // valid in Japan).
1262
+ PhoneNumber number_without_national_prefix;
1263
+ if (Parse(normalized_national_number.substr(national_prefix.length()),
1264
+ region_code, &number_without_national_prefix)
1265
+ == NO_PARSING_ERROR) {
1266
+ return IsValidNumber(number_without_national_prefix);
1267
+ }
1268
+ }
1269
+ return false;
1270
+ }
1271
+
1272
+ bool PhoneNumberUtil::HasUnexpectedItalianLeadingZero(
1273
+ const PhoneNumber& number) const {
1274
+ return number.has_italian_leading_zero() &&
1275
+ !IsLeadingZeroPossible(number.country_code());
1276
+ }
1277
+
1278
+ bool PhoneNumberUtil::HasFormattingPatternForNumber(
1279
+ const PhoneNumber& number) const {
1280
+ int country_calling_code = number.country_code();
1281
+ string region_code;
1282
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
1283
+ const PhoneMetadata* metadata =
1284
+ GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
1285
+ if (!metadata) {
1286
+ return false;
1287
+ }
1288
+ string national_number;
1289
+ GetNationalSignificantNumber(number, &national_number);
1290
+ const NumberFormat* format_rule =
1291
+ ChooseFormattingPatternForNumber(metadata->number_format(),
1292
+ national_number);
1293
+ return format_rule;
1294
+ }
1295
+
1296
+ void PhoneNumberUtil::FormatOutOfCountryKeepingAlphaChars(
1297
+ const PhoneNumber& number,
1298
+ const string& calling_from,
1299
+ string* formatted_number) const {
1300
+ // If there is no raw input, then we can't keep alpha characters because there
1301
+ // aren't any. In this case, we return FormatOutOfCountryCallingNumber.
1302
+ if (number.raw_input().empty()) {
1303
+ FormatOutOfCountryCallingNumber(number, calling_from, formatted_number);
1304
+ return;
1305
+ }
1306
+ int country_code = number.country_code();
1307
+ if (!HasValidCountryCallingCode(country_code)) {
1308
+ formatted_number->assign(number.raw_input());
1309
+ return;
1310
+ }
1311
+ // Strip any prefix such as country calling code, IDD, that was present. We do
1312
+ // this by comparing the number in raw_input with the parsed number.
1313
+ string raw_input_copy(number.raw_input());
1314
+ // Normalize punctuation. We retain number grouping symbols such as " " only.
1315
+ NormalizeHelper(reg_exps_->all_plus_number_grouping_symbols_, true,
1316
+ &raw_input_copy);
1317
+ // Now we trim everything before the first three digits in the parsed number.
1318
+ // We choose three because all valid alpha numbers have 3 digits at the start
1319
+ // - if it does not, then we don't trim anything at all. Similarly, if the
1320
+ // national number was less than three digits, we don't trim anything at all.
1321
+ string national_number;
1322
+ GetNationalSignificantNumber(number, &national_number);
1323
+ if (national_number.length() > 3) {
1324
+ size_t first_national_number_digit =
1325
+ raw_input_copy.find(national_number.substr(0, 3));
1326
+ if (first_national_number_digit != string::npos) {
1327
+ raw_input_copy = raw_input_copy.substr(first_national_number_digit);
1328
+ }
1329
+ }
1330
+ const PhoneMetadata* metadata = GetMetadataForRegion(calling_from);
1331
+ if (country_code == kNanpaCountryCode) {
1332
+ if (IsNANPACountry(calling_from)) {
1333
+ StrAppend(formatted_number, country_code, " ", raw_input_copy);
1334
+ return;
1335
+ }
1336
+ } else if (metadata &&
1337
+ country_code == GetCountryCodeForValidRegion(calling_from)) {
1338
+ const NumberFormat* formatting_pattern =
1339
+ ChooseFormattingPatternForNumber(metadata->number_format(),
1340
+ national_number);
1341
+ if (!formatting_pattern) {
1342
+ // If no pattern above is matched, we format the original input.
1343
+ formatted_number->assign(raw_input_copy);
1344
+ return;
1345
+ }
1346
+ NumberFormat new_format;
1347
+ new_format.MergeFrom(*formatting_pattern);
1348
+ // The first group is the first group of digits that the user wrote
1349
+ // together.
1350
+ new_format.set_pattern("(\\d+)(.*)");
1351
+ // Here we just concatenate them back together after the national prefix
1352
+ // has been fixed.
1353
+ new_format.set_format("$1$2");
1354
+ // Now we format using this pattern instead of the default pattern, but
1355
+ // with the national prefix prefixed if necessary.
1356
+ // This will not work in the cases where the pattern (and not the
1357
+ // leading digits) decide whether a national prefix needs to be used, since
1358
+ // we have overridden the pattern to match anything, but that is not the
1359
+ // case in the metadata to date.
1360
+ FormatNsnUsingPattern(raw_input_copy, new_format, NATIONAL,
1361
+ formatted_number);
1362
+ return;
1363
+ }
1364
+
1365
+ string international_prefix_for_formatting;
1366
+ // If an unsupported region-calling-from is entered, or a country with
1367
+ // multiple international prefixes, the international format of the number is
1368
+ // returned, unless there is a preferred international prefix.
1369
+ if (metadata) {
1370
+ const string& international_prefix = metadata->international_prefix();
1371
+ international_prefix_for_formatting =
1372
+ reg_exps_->unique_international_prefix_->FullMatch(international_prefix)
1373
+ ? international_prefix
1374
+ : metadata->preferred_international_prefix();
1375
+ }
1376
+ if (!international_prefix_for_formatting.empty()) {
1377
+ StrAppend(formatted_number, international_prefix_for_formatting, " ",
1378
+ country_code, " ", raw_input_copy);
1379
+ } else {
1380
+ // Invalid region entered as country-calling-from (so no metadata was found
1381
+ // for it) or the region chosen has multiple international dialling
1382
+ // prefixes.
1383
+ LOG(WARNING) << "Trying to format number from invalid region "
1384
+ << calling_from
1385
+ << ". International formatting applied.";
1386
+ formatted_number->assign(raw_input_copy);
1387
+ PrefixNumberWithCountryCallingCode(country_code, INTERNATIONAL,
1388
+ formatted_number);
1389
+ }
1390
+ }
1391
+
1392
+ const NumberFormat* PhoneNumberUtil::ChooseFormattingPatternForNumber(
1393
+ const RepeatedPtrField<NumberFormat>& available_formats,
1394
+ const string& national_number) const {
1395
+ for (RepeatedPtrField<NumberFormat>::const_iterator
1396
+ it = available_formats.begin(); it != available_formats.end(); ++it) {
1397
+ int size = it->leading_digits_pattern_size();
1398
+ if (size > 0) {
1399
+ const scoped_ptr<RegExpInput> number_copy(
1400
+ reg_exps_->regexp_factory_->CreateInput(national_number));
1401
+ // We always use the last leading_digits_pattern, as it is the most
1402
+ // detailed.
1403
+ if (!reg_exps_->regexp_cache_->GetRegExp(
1404
+ it->leading_digits_pattern(size - 1)).Consume(
1405
+ number_copy.get())) {
1406
+ continue;
1407
+ }
1408
+ }
1409
+ const RegExp& pattern_to_match(
1410
+ reg_exps_->regexp_cache_->GetRegExp(it->pattern()));
1411
+ if (pattern_to_match.FullMatch(national_number)) {
1412
+ return &(*it);
1413
+ }
1414
+ }
1415
+ return NULL;
1416
+ }
1417
+
1418
+ // Note that carrier_code is optional - if an empty string, no carrier code
1419
+ // replacement will take place.
1420
+ void PhoneNumberUtil::FormatNsnUsingPatternWithCarrier(
1421
+ const string& national_number,
1422
+ const NumberFormat& formatting_pattern,
1423
+ PhoneNumberUtil::PhoneNumberFormat number_format,
1424
+ const string& carrier_code,
1425
+ string* formatted_number) const {
1426
+ DCHECK(formatted_number);
1427
+ string number_format_rule(formatting_pattern.format());
1428
+ if (number_format == PhoneNumberUtil::NATIONAL &&
1429
+ carrier_code.length() > 0 &&
1430
+ formatting_pattern.domestic_carrier_code_formatting_rule().length() > 0) {
1431
+ // Replace the $CC in the formatting rule with the desired carrier code.
1432
+ string carrier_code_formatting_rule =
1433
+ formatting_pattern.domestic_carrier_code_formatting_rule();
1434
+ reg_exps_->carrier_code_pattern_->Replace(&carrier_code_formatting_rule,
1435
+ carrier_code);
1436
+ reg_exps_->first_group_capturing_pattern_->
1437
+ Replace(&number_format_rule, carrier_code_formatting_rule);
1438
+ } else {
1439
+ // Use the national prefix formatting rule instead.
1440
+ string national_prefix_formatting_rule =
1441
+ formatting_pattern.national_prefix_formatting_rule();
1442
+ if (number_format == PhoneNumberUtil::NATIONAL &&
1443
+ national_prefix_formatting_rule.length() > 0) {
1444
+ // Apply the national_prefix_formatting_rule as the formatting_pattern
1445
+ // contains only information on how the national significant number
1446
+ // should be formatted at this point.
1447
+ reg_exps_->first_group_capturing_pattern_->Replace(
1448
+ &number_format_rule, national_prefix_formatting_rule);
1449
+ }
1450
+ }
1451
+ formatted_number->assign(national_number);
1452
+
1453
+ const RegExp& pattern_to_match(
1454
+ reg_exps_->regexp_cache_->GetRegExp(formatting_pattern.pattern()));
1455
+ pattern_to_match.GlobalReplace(formatted_number, number_format_rule);
1456
+
1457
+ if (number_format == RFC3966) {
1458
+ // First consume any leading punctuation, if any was present.
1459
+ const scoped_ptr<RegExpInput> number(
1460
+ reg_exps_->regexp_factory_->CreateInput(*formatted_number));
1461
+ if (reg_exps_->separator_pattern_->Consume(number.get())) {
1462
+ formatted_number->assign(number->ToString());
1463
+ }
1464
+ // Then replace all separators with a "-".
1465
+ reg_exps_->separator_pattern_->GlobalReplace(formatted_number, "-");
1466
+ }
1467
+ }
1468
+
1469
+ // Simple wrapper of FormatNsnUsingPatternWithCarrier for the common case of
1470
+ // no carrier code.
1471
+ void PhoneNumberUtil::FormatNsnUsingPattern(
1472
+ const string& national_number,
1473
+ const NumberFormat& formatting_pattern,
1474
+ PhoneNumberUtil::PhoneNumberFormat number_format,
1475
+ string* formatted_number) const {
1476
+ DCHECK(formatted_number);
1477
+ FormatNsnUsingPatternWithCarrier(national_number, formatting_pattern,
1478
+ number_format, "", formatted_number);
1479
+ }
1480
+
1481
+ void PhoneNumberUtil::FormatNsn(const string& number,
1482
+ const PhoneMetadata& metadata,
1483
+ PhoneNumberFormat number_format,
1484
+ string* formatted_number) const {
1485
+ DCHECK(formatted_number);
1486
+ FormatNsnWithCarrier(number, metadata, number_format, "", formatted_number);
1487
+ }
1488
+
1489
+ // Note in some regions, the national number can be written in two completely
1490
+ // different ways depending on whether it forms part of the NATIONAL format or
1491
+ // INTERNATIONAL format. The number_format parameter here is used to specify
1492
+ // which format to use for those cases. If a carrier_code is specified, this
1493
+ // will be inserted into the formatted string to replace $CC.
1494
+ void PhoneNumberUtil::FormatNsnWithCarrier(const string& number,
1495
+ const PhoneMetadata& metadata,
1496
+ PhoneNumberFormat number_format,
1497
+ const string& carrier_code,
1498
+ string* formatted_number) const {
1499
+ DCHECK(formatted_number);
1500
+ // When the intl_number_formats exists, we use that to format national number
1501
+ // for the INTERNATIONAL format instead of using the number_formats.
1502
+ const RepeatedPtrField<NumberFormat> available_formats =
1503
+ (metadata.intl_number_format_size() == 0 || number_format == NATIONAL)
1504
+ ? metadata.number_format()
1505
+ : metadata.intl_number_format();
1506
+ const NumberFormat* formatting_pattern =
1507
+ ChooseFormattingPatternForNumber(available_formats, number);
1508
+ if (!formatting_pattern) {
1509
+ formatted_number->assign(number);
1510
+ } else {
1511
+ FormatNsnUsingPatternWithCarrier(number, *formatting_pattern, number_format,
1512
+ carrier_code, formatted_number);
1513
+ }
1514
+ }
1515
+
1516
+ // Appends the formatted extension of a phone number, if the phone number had an
1517
+ // extension specified.
1518
+ void PhoneNumberUtil::MaybeAppendFormattedExtension(
1519
+ const PhoneNumber& number,
1520
+ const PhoneMetadata& metadata,
1521
+ PhoneNumberFormat number_format,
1522
+ string* formatted_number) const {
1523
+ DCHECK(formatted_number);
1524
+ if (number.has_extension() && number.extension().length() > 0) {
1525
+ if (number_format == RFC3966) {
1526
+ StrAppend(formatted_number, kRfc3966ExtnPrefix, number.extension());
1527
+ } else {
1528
+ if (metadata.has_preferred_extn_prefix()) {
1529
+ StrAppend(formatted_number, metadata.preferred_extn_prefix(),
1530
+ number.extension());
1531
+ } else {
1532
+ StrAppend(formatted_number, kDefaultExtnPrefix, number.extension());
1533
+ }
1534
+ }
1535
+ }
1536
+ }
1537
+
1538
+ bool PhoneNumberUtil::IsNANPACountry(const string& region_code) const {
1539
+ return nanpa_regions_->find(region_code) != nanpa_regions_->end();
1540
+ }
1541
+
1542
+ // Returns the region codes that matches the specific country calling code. In
1543
+ // the case of no region code being found, region_codes will be left empty.
1544
+ void PhoneNumberUtil::GetRegionCodesForCountryCallingCode(
1545
+ int country_calling_code,
1546
+ list<string>* region_codes) const {
1547
+ DCHECK(region_codes);
1548
+ // Create a IntRegionsPair with the country_code passed in, and use it to
1549
+ // locate the pair with the same country_code in the sorted vector.
1550
+ IntRegionsPair target_pair;
1551
+ target_pair.first = country_calling_code;
1552
+ typedef vector<IntRegionsPair>::const_iterator ConstIterator;
1553
+ pair<ConstIterator, ConstIterator> range = equal_range(
1554
+ country_calling_code_to_region_code_map_->begin(),
1555
+ country_calling_code_to_region_code_map_->end(),
1556
+ target_pair, OrderByFirst());
1557
+ if (range.first != range.second) {
1558
+ region_codes->insert(region_codes->begin(),
1559
+ range.first->second->begin(),
1560
+ range.first->second->end());
1561
+ }
1562
+ }
1563
+
1564
+ // Returns the region code that matches the specific country calling code. In
1565
+ // the case of no region code being found, the unknown region code will be
1566
+ // returned.
1567
+ void PhoneNumberUtil::GetRegionCodeForCountryCode(
1568
+ int country_calling_code,
1569
+ string* region_code) const {
1570
+ DCHECK(region_code);
1571
+ list<string> region_codes;
1572
+
1573
+ GetRegionCodesForCountryCallingCode(country_calling_code, &region_codes);
1574
+ *region_code = (region_codes.size() > 0) ?
1575
+ region_codes.front() : RegionCode::GetUnknown();
1576
+ }
1577
+
1578
+ void PhoneNumberUtil::GetRegionCodeForNumber(const PhoneNumber& number,
1579
+ string* region_code) const {
1580
+ DCHECK(region_code);
1581
+ int country_calling_code = number.country_code();
1582
+ list<string> region_codes;
1583
+ GetRegionCodesForCountryCallingCode(country_calling_code, &region_codes);
1584
+ if (region_codes.size() == 0) {
1585
+ string number_string;
1586
+ GetNationalSignificantNumber(number, &number_string);
1587
+ LOG(WARNING) << "Missing/invalid country calling code ("
1588
+ << country_calling_code
1589
+ << ") for number " << number_string;
1590
+ *region_code = RegionCode::GetUnknown();
1591
+ return;
1592
+ }
1593
+ if (region_codes.size() == 1) {
1594
+ *region_code = region_codes.front();
1595
+ } else {
1596
+ GetRegionCodeForNumberFromRegionList(number, region_codes, region_code);
1597
+ }
1598
+ }
1599
+
1600
+ void PhoneNumberUtil::GetRegionCodeForNumberFromRegionList(
1601
+ const PhoneNumber& number, const list<string>& region_codes,
1602
+ string* region_code) const {
1603
+ DCHECK(region_code);
1604
+ string national_number;
1605
+ GetNationalSignificantNumber(number, &national_number);
1606
+ for (list<string>::const_iterator it = region_codes.begin();
1607
+ it != region_codes.end(); ++it) {
1608
+ // Metadata cannot be NULL because the region codes come from the country
1609
+ // calling code map.
1610
+ const PhoneMetadata* metadata = GetMetadataForRegion(*it);
1611
+ if (metadata->has_leading_digits()) {
1612
+ const scoped_ptr<RegExpInput> number(
1613
+ reg_exps_->regexp_factory_->CreateInput(national_number));
1614
+ if (reg_exps_->regexp_cache_->
1615
+ GetRegExp(metadata->leading_digits()).Consume(number.get())) {
1616
+ *region_code = *it;
1617
+ return;
1618
+ }
1619
+ } else if (GetNumberTypeHelper(national_number, *metadata) != UNKNOWN) {
1620
+ *region_code = *it;
1621
+ return;
1622
+ }
1623
+ }
1624
+ *region_code = RegionCode::GetUnknown();
1625
+ }
1626
+
1627
+ int PhoneNumberUtil::GetCountryCodeForRegion(const string& region_code) const {
1628
+ if (!IsValidRegionCode(region_code)) {
1629
+ LOG(WARNING) << "Invalid or unknown region code (" << region_code
1630
+ << ") provided.";
1631
+ return 0;
1632
+ }
1633
+ return GetCountryCodeForValidRegion(region_code);
1634
+ }
1635
+
1636
+ int PhoneNumberUtil::GetCountryCodeForValidRegion(
1637
+ const string& region_code) const {
1638
+ const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
1639
+ return metadata->country_code();
1640
+ }
1641
+
1642
+ // Gets a valid fixed-line number for the specified region_code. Returns false
1643
+ // if the region was unknown or 001 (representing non-geographical regions), or
1644
+ // if no number exists.
1645
+ bool PhoneNumberUtil::GetExampleNumber(const string& region_code,
1646
+ PhoneNumber* number) const {
1647
+ DCHECK(number);
1648
+ return GetExampleNumberForType(region_code, FIXED_LINE, number);
1649
+ }
1650
+
1651
+ // Gets a valid number for the specified region_code and type. Returns false if
1652
+ // the country was unknown or 001 (representing non-geographical regions), or if
1653
+ // no number exists.
1654
+ bool PhoneNumberUtil::GetExampleNumberForType(
1655
+ const string& region_code,
1656
+ PhoneNumberUtil::PhoneNumberType type,
1657
+ PhoneNumber* number) const {
1658
+ DCHECK(number);
1659
+ if (!IsValidRegionCode(region_code)) {
1660
+ LOG(WARNING) << "Invalid or unknown region code (" << region_code
1661
+ << ") provided.";
1662
+ return false;
1663
+ }
1664
+ const PhoneMetadata* region_metadata = GetMetadataForRegion(region_code);
1665
+ const PhoneNumberDesc* desc = GetNumberDescByType(*region_metadata, type);
1666
+ if (desc && desc->has_example_number()) {
1667
+ ErrorType success = Parse(desc->example_number(), region_code, number);
1668
+ if (success == NO_PARSING_ERROR) {
1669
+ return true;
1670
+ } else {
1671
+ LOG(ERROR) << "Error parsing example number ("
1672
+ << static_cast<int>(success) << ")";
1673
+ }
1674
+ }
1675
+ return false;
1676
+ }
1677
+
1678
+ bool PhoneNumberUtil::GetExampleNumberForNonGeoEntity(
1679
+ int country_calling_code, PhoneNumber* number) const {
1680
+ DCHECK(number);
1681
+ const PhoneMetadata* metadata =
1682
+ GetMetadataForNonGeographicalRegion(country_calling_code);
1683
+ if (metadata) {
1684
+ const PhoneNumberDesc& desc = metadata->general_desc();
1685
+ if (desc.has_example_number()) {
1686
+ ErrorType success = Parse(StrCat(kPlusSign,
1687
+ SimpleItoa(country_calling_code),
1688
+ desc.example_number()),
1689
+ RegionCode::ZZ(), number);
1690
+ if (success == NO_PARSING_ERROR) {
1691
+ return true;
1692
+ } else {
1693
+ LOG(ERROR) << "Error parsing example number ("
1694
+ << static_cast<int>(success) << ")";
1695
+ }
1696
+ }
1697
+ } else {
1698
+ LOG(WARNING) << "Invalid or unknown country calling code provided: "
1699
+ << country_calling_code;
1700
+ }
1701
+ return false;
1702
+ }
1703
+
1704
+ PhoneNumberUtil::ErrorType PhoneNumberUtil::Parse(const string& number_to_parse,
1705
+ const string& default_region,
1706
+ PhoneNumber* number) const {
1707
+ DCHECK(number);
1708
+ return ParseHelper(number_to_parse, default_region, false, true, number);
1709
+ }
1710
+
1711
+ PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseAndKeepRawInput(
1712
+ const string& number_to_parse,
1713
+ const string& default_region,
1714
+ PhoneNumber* number) const {
1715
+ DCHECK(number);
1716
+ return ParseHelper(number_to_parse, default_region, true, true, number);
1717
+ }
1718
+
1719
+ // Checks to see that the region code used is valid, or if it is not valid, that
1720
+ // the number to parse starts with a + symbol so that we can attempt to infer
1721
+ // the country from the number. Returns false if it cannot use the region
1722
+ // provided and the region cannot be inferred.
1723
+ bool PhoneNumberUtil::CheckRegionForParsing(
1724
+ const string& number_to_parse,
1725
+ const string& default_region) const {
1726
+ if (!IsValidRegionCode(default_region) && !number_to_parse.empty()) {
1727
+ const scoped_ptr<RegExpInput> number(
1728
+ reg_exps_->regexp_factory_->CreateInput(number_to_parse));
1729
+ if (!reg_exps_->plus_chars_pattern_->Consume(number.get())) {
1730
+ return false;
1731
+ }
1732
+ }
1733
+ return true;
1734
+ }
1735
+
1736
+ // Converts number_to_parse to a form that we can parse and write it to
1737
+ // national_number if it is written in RFC3966; otherwise extract a possible
1738
+ // number out of it and write to national_number.
1739
+ void PhoneNumberUtil::BuildNationalNumberForParsing(
1740
+ const string& number_to_parse, string* national_number) const {
1741
+ size_t index_of_phone_context = number_to_parse.find(kRfc3966PhoneContext);
1742
+ if (index_of_phone_context != string::npos) {
1743
+ int phone_context_start =
1744
+ index_of_phone_context + strlen(kRfc3966PhoneContext);
1745
+ // If the phone context contains a phone number prefix, we need to capture
1746
+ // it, whereas domains will be ignored.
1747
+ if (number_to_parse.at(phone_context_start) == kPlusSign[0]) {
1748
+ // Additional parameters might follow the phone context. If so, we will
1749
+ // remove them here because the parameters after phone context are not
1750
+ // important for parsing the phone number.
1751
+ size_t phone_context_end = number_to_parse.find(';', phone_context_start);
1752
+ if (phone_context_end != string::npos) {
1753
+ StrAppend(
1754
+ national_number, number_to_parse.substr(
1755
+ phone_context_start, phone_context_end - phone_context_start));
1756
+ } else {
1757
+ StrAppend(national_number, number_to_parse.substr(phone_context_start));
1758
+ }
1759
+ }
1760
+
1761
+ // Now append everything between the "tel:" prefix and the phone-context.
1762
+ // This should include the national number, an optional extension or
1763
+ // isdn-subaddress component. Note we also handle the case when "tel:" is
1764
+ // missing, as we have seen in some of the phone number inputs. In that
1765
+ // case, we append everything from the beginning.
1766
+ size_t index_of_rfc_prefix = number_to_parse.find(kRfc3966Prefix);
1767
+ int index_of_national_number = (index_of_rfc_prefix != string::npos) ?
1768
+ index_of_rfc_prefix + strlen(kRfc3966Prefix) : 0;
1769
+ StrAppend(
1770
+ national_number,
1771
+ number_to_parse.substr(
1772
+ index_of_national_number,
1773
+ index_of_phone_context - index_of_national_number));
1774
+ } else {
1775
+ // Extract a possible number from the string passed in (this strips leading
1776
+ // characters that could not be the start of a phone number.)
1777
+ ExtractPossibleNumber(number_to_parse, national_number);
1778
+ }
1779
+
1780
+ // Delete the isdn-subaddress and everything after it if it is present. Note
1781
+ // extension won't appear at the same time with isdn-subaddress according to
1782
+ // paragraph 5.3 of the RFC3966 spec.
1783
+ size_t index_of_isdn = national_number->find(kRfc3966IsdnSubaddress);
1784
+ if (index_of_isdn != string::npos) {
1785
+ national_number->erase(index_of_isdn);
1786
+ }
1787
+ // If both phone context and isdn-subaddress are absent but other parameters
1788
+ // are present, the parameters are left in nationalNumber. This is because
1789
+ // we are concerned about deleting content from a potential number string
1790
+ // when there is no strong evidence that the number is actually written in
1791
+ // RFC3966.
1792
+ }
1793
+
1794
+ PhoneNumberUtil::ErrorType PhoneNumberUtil::ParseHelper(
1795
+ const string& number_to_parse,
1796
+ const string& default_region,
1797
+ bool keep_raw_input,
1798
+ bool check_region,
1799
+ PhoneNumber* phone_number) const {
1800
+ DCHECK(phone_number);
1801
+
1802
+ string national_number;
1803
+ BuildNationalNumberForParsing(number_to_parse, &national_number);
1804
+
1805
+ if (!IsViablePhoneNumber(national_number)) {
1806
+ VLOG(2) << "The string supplied did not seem to be a phone number.";
1807
+ return NOT_A_NUMBER;
1808
+ }
1809
+
1810
+ if (check_region &&
1811
+ !CheckRegionForParsing(national_number, default_region)) {
1812
+ VLOG(1) << "Missing or invalid default country.";
1813
+ return INVALID_COUNTRY_CODE_ERROR;
1814
+ }
1815
+ PhoneNumber temp_number;
1816
+ if (keep_raw_input) {
1817
+ temp_number.set_raw_input(number_to_parse);
1818
+ }
1819
+ // Attempt to parse extension first, since it doesn't require country-specific
1820
+ // data and we want to have the non-normalised number here.
1821
+ string extension;
1822
+ MaybeStripExtension(&national_number, &extension);
1823
+ if (!extension.empty()) {
1824
+ temp_number.set_extension(extension);
1825
+ }
1826
+ const PhoneMetadata* country_metadata = GetMetadataForRegion(default_region);
1827
+ // Check to see if the number is given in international format so we know
1828
+ // whether this number is from the default country or not.
1829
+ string normalized_national_number(national_number);
1830
+ ErrorType country_code_error =
1831
+ MaybeExtractCountryCode(country_metadata, keep_raw_input,
1832
+ &normalized_national_number, &temp_number);
1833
+ if (country_code_error != NO_PARSING_ERROR) {
1834
+ const scoped_ptr<RegExpInput> number_string_piece(
1835
+ reg_exps_->regexp_factory_->CreateInput(national_number));
1836
+ if ((country_code_error == INVALID_COUNTRY_CODE_ERROR) &&
1837
+ (reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get()))) {
1838
+ normalized_national_number.assign(number_string_piece->ToString());
1839
+ // Strip the plus-char, and try again.
1840
+ MaybeExtractCountryCode(country_metadata,
1841
+ keep_raw_input,
1842
+ &normalized_national_number,
1843
+ &temp_number);
1844
+ if (temp_number.country_code() == 0) {
1845
+ return INVALID_COUNTRY_CODE_ERROR;
1846
+ }
1847
+ } else {
1848
+ return country_code_error;
1849
+ }
1850
+ }
1851
+ int country_code = temp_number.country_code();
1852
+ if (country_code != 0) {
1853
+ string phone_number_region;
1854
+ GetRegionCodeForCountryCode(country_code, &phone_number_region);
1855
+ if (phone_number_region != default_region) {
1856
+ country_metadata =
1857
+ GetMetadataForRegionOrCallingCode(country_code, phone_number_region);
1858
+ }
1859
+ } else if (country_metadata) {
1860
+ // If no extracted country calling code, use the region supplied instead.
1861
+ // Note that the national number was already normalized by
1862
+ // MaybeExtractCountryCode.
1863
+ country_code = country_metadata->country_code();
1864
+ }
1865
+ if (normalized_national_number.length() < kMinLengthForNsn) {
1866
+ VLOG(2) << "The string supplied is too short to be a phone number.";
1867
+ return TOO_SHORT_NSN;
1868
+ }
1869
+ if (country_metadata) {
1870
+ string carrier_code;
1871
+ string potential_national_number(normalized_national_number);
1872
+ MaybeStripNationalPrefixAndCarrierCode(*country_metadata,
1873
+ &potential_national_number,
1874
+ &carrier_code);
1875
+ // We require that the NSN remaining after stripping the national prefix
1876
+ // and carrier code be of a possible length for the region. Otherwise, we
1877
+ // don't do the stripping, since the original number could be a valid short
1878
+ // number.
1879
+ if (!IsShorterThanPossibleNormalNumber(country_metadata,
1880
+ potential_national_number)) {
1881
+ normalized_national_number.assign(potential_national_number);
1882
+ if (keep_raw_input) {
1883
+ temp_number.set_preferred_domestic_carrier_code(carrier_code);
1884
+ }
1885
+ }
1886
+ }
1887
+ size_t normalized_national_number_length =
1888
+ normalized_national_number.length();
1889
+ if (normalized_national_number_length < kMinLengthForNsn) {
1890
+ VLOG(2) << "The string supplied is too short to be a phone number.";
1891
+ return TOO_SHORT_NSN;
1892
+ }
1893
+ if (normalized_national_number_length > kMaxLengthForNsn) {
1894
+ VLOG(2) << "The string supplied is too long to be a phone number.";
1895
+ return TOO_LONG_NSN;
1896
+ }
1897
+ temp_number.set_country_code(country_code);
1898
+ SetItalianLeadingZerosForPhoneNumber(normalized_national_number,
1899
+ &temp_number);
1900
+ uint64 number_as_int;
1901
+ safe_strtou64(normalized_national_number, &number_as_int);
1902
+ temp_number.set_national_number(number_as_int);
1903
+ phone_number->Swap(&temp_number);
1904
+ return NO_PARSING_ERROR;
1905
+ }
1906
+
1907
+ // Attempts to extract a possible number from the string passed in. This
1908
+ // currently strips all leading characters that could not be used to start a
1909
+ // phone number. Characters that can be used to start a phone number are
1910
+ // defined in the valid_start_char_pattern. If none of these characters are
1911
+ // found in the number passed in, an empty string is returned. This function
1912
+ // also attempts to strip off any alternative extensions or endings if two or
1913
+ // more are present, such as in the case of: (530) 583-6985 x302/x2303. The
1914
+ // second extension here makes this actually two phone numbers, (530) 583-6985
1915
+ // x302 and (530) 583-6985 x2303. We remove the second extension so that the
1916
+ // first number is parsed correctly.
1917
+ void PhoneNumberUtil::ExtractPossibleNumber(const string& number,
1918
+ string* extracted_number) const {
1919
+ DCHECK(extracted_number);
1920
+
1921
+ UnicodeText number_as_unicode;
1922
+ number_as_unicode.PointToUTF8(number.data(), number.size());
1923
+ char current_char[5];
1924
+ int len;
1925
+ UnicodeText::const_iterator it;
1926
+ for (it = number_as_unicode.begin(); it != number_as_unicode.end(); ++it) {
1927
+ len = it.get_utf8(current_char);
1928
+ current_char[len] = '\0';
1929
+ if (reg_exps_->valid_start_char_pattern_->FullMatch(current_char)) {
1930
+ break;
1931
+ }
1932
+ }
1933
+
1934
+ if (it == number_as_unicode.end()) {
1935
+ // No valid start character was found. extracted_number should be set to
1936
+ // empty string.
1937
+ extracted_number->assign("");
1938
+ return;
1939
+ }
1940
+
1941
+ extracted_number->assign(
1942
+ UnicodeText::UTF8Substring(it, number_as_unicode.end()));
1943
+ TrimUnwantedEndChars(extracted_number);
1944
+ if (extracted_number->length() == 0) {
1945
+ return;
1946
+ }
1947
+
1948
+ VLOG(3) << "After stripping starting and trailing characters, left with: "
1949
+ << *extracted_number;
1950
+
1951
+ // Now remove any extra numbers at the end.
1952
+ reg_exps_->capture_up_to_second_number_start_pattern_->
1953
+ PartialMatch(*extracted_number, extracted_number);
1954
+ }
1955
+
1956
+ bool PhoneNumberUtil::IsPossibleNumber(const PhoneNumber& number) const {
1957
+ return IsPossibleNumberWithReason(number) == IS_POSSIBLE;
1958
+ }
1959
+
1960
+ bool PhoneNumberUtil::IsPossibleNumberForString(
1961
+ const string& number,
1962
+ const string& region_dialing_from) const {
1963
+ PhoneNumber number_proto;
1964
+ if (Parse(number, region_dialing_from, &number_proto) == NO_PARSING_ERROR) {
1965
+ return IsPossibleNumber(number_proto);
1966
+ } else {
1967
+ return false;
1968
+ }
1969
+ }
1970
+
1971
+ PhoneNumberUtil::ValidationResult PhoneNumberUtil::IsPossibleNumberWithReason(
1972
+ const PhoneNumber& number) const {
1973
+ string national_number;
1974
+ GetNationalSignificantNumber(number, &national_number);
1975
+ int country_code = number.country_code();
1976
+ // Note: For Russian Fed and NANPA numbers, we just use the rules from the
1977
+ // default region (US or Russia) since the GetRegionCodeForNumber will not
1978
+ // work if the number is possible but not valid. This would need to be
1979
+ // revisited if the possible number pattern ever differed between various
1980
+ // regions within those plans.
1981
+ if (!HasValidCountryCallingCode(country_code)) {
1982
+ return INVALID_COUNTRY_CODE;
1983
+ }
1984
+ string region_code;
1985
+ GetRegionCodeForCountryCode(country_code, &region_code);
1986
+ // Metadata cannot be NULL because the country calling code is valid.
1987
+ const PhoneMetadata* metadata =
1988
+ GetMetadataForRegionOrCallingCode(country_code, region_code);
1989
+ const RegExp& possible_number_pattern = reg_exps_->regexp_cache_->GetRegExp(
1990
+ StrCat("(", metadata->general_desc().possible_number_pattern(), ")"));
1991
+ return TestNumberLengthAgainstPattern(possible_number_pattern,
1992
+ national_number);
1993
+ }
1994
+
1995
+ bool PhoneNumberUtil::TruncateTooLongNumber(PhoneNumber* number) const {
1996
+ if (IsValidNumber(*number)) {
1997
+ return true;
1998
+ }
1999
+ PhoneNumber number_copy(*number);
2000
+ uint64 national_number = number->national_number();
2001
+ do {
2002
+ national_number /= 10;
2003
+ number_copy.set_national_number(national_number);
2004
+ if (IsPossibleNumberWithReason(number_copy) == TOO_SHORT ||
2005
+ national_number == 0) {
2006
+ return false;
2007
+ }
2008
+ } while (!IsValidNumber(number_copy));
2009
+ number->set_national_number(national_number);
2010
+ return true;
2011
+ }
2012
+
2013
+ PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberType(
2014
+ const PhoneNumber& number) const {
2015
+ string region_code;
2016
+ GetRegionCodeForNumber(number, &region_code);
2017
+ const PhoneMetadata* metadata =
2018
+ GetMetadataForRegionOrCallingCode(number.country_code(), region_code);
2019
+ if (!metadata) {
2020
+ return UNKNOWN;
2021
+ }
2022
+ string national_significant_number;
2023
+ GetNationalSignificantNumber(number, &national_significant_number);
2024
+ return GetNumberTypeHelper(national_significant_number, *metadata);
2025
+ }
2026
+
2027
+ bool PhoneNumberUtil::IsValidNumber(const PhoneNumber& number) const {
2028
+ string region_code;
2029
+ GetRegionCodeForNumber(number, &region_code);
2030
+ return IsValidNumberForRegion(number, region_code);
2031
+ }
2032
+
2033
+ bool PhoneNumberUtil::IsValidNumberForRegion(const PhoneNumber& number,
2034
+ const string& region_code) const {
2035
+ int country_code = number.country_code();
2036
+ const PhoneMetadata* metadata =
2037
+ GetMetadataForRegionOrCallingCode(country_code, region_code);
2038
+ if (!metadata ||
2039
+ ((kRegionCodeForNonGeoEntity != region_code) &&
2040
+ country_code != GetCountryCodeForValidRegion(region_code))) {
2041
+ // Either the region code was invalid, or the country calling code for this
2042
+ // number does not match that of the region code.
2043
+ return false;
2044
+ }
2045
+ string national_number;
2046
+ GetNationalSignificantNumber(number, &national_number);
2047
+
2048
+ return GetNumberTypeHelper(national_number, *metadata) != UNKNOWN;
2049
+ }
2050
+
2051
+ bool PhoneNumberUtil::IsNumberGeographical(
2052
+ const PhoneNumber& phone_number) const {
2053
+ PhoneNumberType number_type = GetNumberType(phone_number);
2054
+ // TODO: Include mobile phone numbers from countries like
2055
+ // Indonesia, which has some mobile numbers that are geographical.
2056
+ return number_type == PhoneNumberUtil::FIXED_LINE ||
2057
+ number_type == PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
2058
+ }
2059
+
2060
+ bool PhoneNumberUtil::IsLeadingZeroPossible(int country_calling_code) const {
2061
+ string region_code;
2062
+ GetRegionCodeForCountryCode(country_calling_code, &region_code);
2063
+ const PhoneMetadata* main_metadata_for_calling_code =
2064
+ GetMetadataForRegionOrCallingCode(country_calling_code, region_code);
2065
+ if (!main_metadata_for_calling_code) return false;
2066
+ return main_metadata_for_calling_code->leading_zero_possible();
2067
+ }
2068
+
2069
+ // A helper function to set the values related to leading zeros in a
2070
+ // PhoneNumber.
2071
+ void PhoneNumberUtil::SetItalianLeadingZerosForPhoneNumber(
2072
+ const string& national_number, PhoneNumber* phone_number) const {
2073
+ if (national_number.length() > 1 && national_number[0] == '0') {
2074
+ phone_number->set_italian_leading_zero(true);
2075
+ size_t number_of_leading_zeros = 1;
2076
+ // Note that if the national number is all "0"s, the last "0" is not
2077
+ // counted as a leading zero.
2078
+ while (number_of_leading_zeros < national_number.length() - 1 &&
2079
+ national_number[number_of_leading_zeros] == '0') {
2080
+ number_of_leading_zeros++;
2081
+ }
2082
+ if (number_of_leading_zeros != 1) {
2083
+ phone_number->set_number_of_leading_zeros(number_of_leading_zeros);
2084
+ }
2085
+ }
2086
+ }
2087
+
2088
+ bool PhoneNumberUtil::IsNumberPossibleForDesc(
2089
+ const string& national_number, const PhoneNumberDesc& number_desc) const {
2090
+ return reg_exps_->regexp_cache_.get()->
2091
+ GetRegExp(number_desc.possible_number_pattern())
2092
+ .FullMatch(national_number);
2093
+ }
2094
+
2095
+ bool PhoneNumberUtil::IsNumberMatchingDesc(
2096
+ const string& national_number, const PhoneNumberDesc& number_desc) const {
2097
+ return IsNumberPossibleForDesc(national_number, number_desc) &&
2098
+ reg_exps_->regexp_cache_.get()->
2099
+ GetRegExp(number_desc.national_number_pattern())
2100
+ .FullMatch(national_number);
2101
+ }
2102
+
2103
+ PhoneNumberUtil::PhoneNumberType PhoneNumberUtil::GetNumberTypeHelper(
2104
+ const string& national_number, const PhoneMetadata& metadata) const {
2105
+ if (!IsNumberMatchingDesc(national_number, metadata.general_desc())) {
2106
+ VLOG(4) << "Number type unknown - doesn't match general national number"
2107
+ << " pattern.";
2108
+ return PhoneNumberUtil::UNKNOWN;
2109
+ }
2110
+ if (IsNumberMatchingDesc(national_number, metadata.premium_rate())) {
2111
+ VLOG(4) << "Number is a premium number.";
2112
+ return PhoneNumberUtil::PREMIUM_RATE;
2113
+ }
2114
+ if (IsNumberMatchingDesc(national_number, metadata.toll_free())) {
2115
+ VLOG(4) << "Number is a toll-free number.";
2116
+ return PhoneNumberUtil::TOLL_FREE;
2117
+ }
2118
+ if (IsNumberMatchingDesc(national_number, metadata.shared_cost())) {
2119
+ VLOG(4) << "Number is a shared cost number.";
2120
+ return PhoneNumberUtil::SHARED_COST;
2121
+ }
2122
+ if (IsNumberMatchingDesc(national_number, metadata.voip())) {
2123
+ VLOG(4) << "Number is a VOIP (Voice over IP) number.";
2124
+ return PhoneNumberUtil::VOIP;
2125
+ }
2126
+ if (IsNumberMatchingDesc(national_number, metadata.personal_number())) {
2127
+ VLOG(4) << "Number is a personal number.";
2128
+ return PhoneNumberUtil::PERSONAL_NUMBER;
2129
+ }
2130
+ if (IsNumberMatchingDesc(national_number, metadata.pager())) {
2131
+ VLOG(4) << "Number is a pager number.";
2132
+ return PhoneNumberUtil::PAGER;
2133
+ }
2134
+ if (IsNumberMatchingDesc(national_number, metadata.uan())) {
2135
+ VLOG(4) << "Number is a UAN.";
2136
+ return PhoneNumberUtil::UAN;
2137
+ }
2138
+ if (IsNumberMatchingDesc(national_number, metadata.voicemail())) {
2139
+ VLOG(4) << "Number is a voicemail number.";
2140
+ return PhoneNumberUtil::VOICEMAIL;
2141
+ }
2142
+
2143
+ bool is_fixed_line =
2144
+ IsNumberMatchingDesc(national_number, metadata.fixed_line());
2145
+ if (is_fixed_line) {
2146
+ if (metadata.same_mobile_and_fixed_line_pattern()) {
2147
+ VLOG(4) << "Fixed-line and mobile patterns equal, number is fixed-line"
2148
+ << " or mobile";
2149
+ return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
2150
+ } else if (IsNumberMatchingDesc(national_number, metadata.mobile())) {
2151
+ VLOG(4) << "Fixed-line and mobile patterns differ, but number is "
2152
+ << "still fixed-line or mobile";
2153
+ return PhoneNumberUtil::FIXED_LINE_OR_MOBILE;
2154
+ }
2155
+ VLOG(4) << "Number is a fixed line number.";
2156
+ return PhoneNumberUtil::FIXED_LINE;
2157
+ }
2158
+ // Otherwise, test to see if the number is mobile. Only do this if certain
2159
+ // that the patterns for mobile and fixed line aren't the same.
2160
+ if (!metadata.same_mobile_and_fixed_line_pattern() &&
2161
+ IsNumberMatchingDesc(national_number, metadata.mobile())) {
2162
+ VLOG(4) << "Number is a mobile number.";
2163
+ return PhoneNumberUtil::MOBILE;
2164
+ }
2165
+ VLOG(4) << "Number type unknown - doesn\'t match any specific number type"
2166
+ << " pattern.";
2167
+ return PhoneNumberUtil::UNKNOWN;
2168
+ }
2169
+
2170
+ void PhoneNumberUtil::GetNationalSignificantNumber(
2171
+ const PhoneNumber& number,
2172
+ string* national_number) const {
2173
+ DCHECK(national_number);
2174
+ // If leading zero(s) have been set, we prefix this now. Note this is not a
2175
+ // national prefix.
2176
+ StrAppend(national_number, number.italian_leading_zero() ?
2177
+ string(number.number_of_leading_zeros(), '0') : "");
2178
+ StrAppend(national_number, number.national_number());
2179
+ }
2180
+
2181
+ int PhoneNumberUtil::GetLengthOfGeographicalAreaCode(
2182
+ const PhoneNumber& number) const {
2183
+ string region_code;
2184
+ GetRegionCodeForNumber(number, &region_code);
2185
+ const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
2186
+ if (!metadata) {
2187
+ return 0;
2188
+ }
2189
+ // If a country doesn't use a national prefix, and this number doesn't have an
2190
+ // Italian leading zero, we assume it is a closed dialling plan with no area
2191
+ // codes.
2192
+ if (!metadata->has_national_prefix() && !number.italian_leading_zero()) {
2193
+ return 0;
2194
+ }
2195
+
2196
+ if (!IsNumberGeographical(number)) {
2197
+ return 0;
2198
+ }
2199
+
2200
+ return GetLengthOfNationalDestinationCode(number);
2201
+ }
2202
+
2203
+ int PhoneNumberUtil::GetLengthOfNationalDestinationCode(
2204
+ const PhoneNumber& number) const {
2205
+ PhoneNumber copied_proto(number);
2206
+ if (number.has_extension()) {
2207
+ // Clear the extension so it's not included when formatting.
2208
+ copied_proto.clear_extension();
2209
+ }
2210
+
2211
+ string formatted_number;
2212
+ Format(copied_proto, INTERNATIONAL, &formatted_number);
2213
+ const scoped_ptr<RegExpInput> i18n_number(
2214
+ reg_exps_->regexp_factory_->CreateInput(formatted_number));
2215
+ string digit_group;
2216
+ string ndc;
2217
+ string third_group;
2218
+ for (int i = 0; i < 3; ++i) {
2219
+ if (!reg_exps_->capturing_ascii_digits_pattern_->FindAndConsume(
2220
+ i18n_number.get(), &digit_group)) {
2221
+ // We should find at least three groups.
2222
+ return 0;
2223
+ }
2224
+ if (i == 1) {
2225
+ ndc = digit_group;
2226
+ } else if (i == 2) {
2227
+ third_group = digit_group;
2228
+ }
2229
+ }
2230
+
2231
+ if (GetNumberType(number) == MOBILE) {
2232
+ // For example Argentinian mobile numbers, when formatted in the
2233
+ // international format, are in the form of +54 9 NDC XXXX.... As a result,
2234
+ // we take the length of the third group (NDC) and add the length of the
2235
+ // mobile token, which also forms part of the national significant number.
2236
+ // This assumes that the mobile token is always formatted separately from
2237
+ // the rest of the phone number.
2238
+ string mobile_token;
2239
+ GetCountryMobileToken(number.country_code(), &mobile_token);
2240
+ if (!mobile_token.empty()) {
2241
+ return third_group.size() + mobile_token.size();
2242
+ }
2243
+ }
2244
+ return ndc.size();
2245
+ }
2246
+
2247
+ void PhoneNumberUtil::GetCountryMobileToken(int country_calling_code,
2248
+ string* mobile_token) const {
2249
+ DCHECK(mobile_token);
2250
+ map<int, char>::iterator it = reg_exps_->mobile_token_mappings_.find(
2251
+ country_calling_code);
2252
+ if (it != reg_exps_->mobile_token_mappings_.end()) {
2253
+ *mobile_token = it->second;
2254
+ } else {
2255
+ mobile_token->assign("");
2256
+ }
2257
+ }
2258
+
2259
+ void PhoneNumberUtil::NormalizeDigitsOnly(string* number) const {
2260
+ DCHECK(number);
2261
+ const RegExp& non_digits_pattern = reg_exps_->regexp_cache_->GetRegExp(
2262
+ StrCat("[^", kDigits, "]"));
2263
+ // Delete everything that isn't valid digits.
2264
+ non_digits_pattern.GlobalReplace(number, "");
2265
+ // Normalize all decimal digits to ASCII digits.
2266
+ number->assign(NormalizeUTF8::NormalizeDecimalDigits(*number));
2267
+ }
2268
+
2269
+ void PhoneNumberUtil::NormalizeDiallableCharsOnly(string* number) const {
2270
+ DCHECK(number);
2271
+ NormalizeHelper(reg_exps_->diallable_char_mappings_,
2272
+ true /* remove non matches */, number);
2273
+ }
2274
+
2275
+ bool PhoneNumberUtil::IsAlphaNumber(const string& number) const {
2276
+ if (!IsViablePhoneNumber(number)) {
2277
+ // Number is too short, or doesn't match the basic phone number pattern.
2278
+ return false;
2279
+ }
2280
+ // Copy the number, since we are going to try and strip the extension from it.
2281
+ string number_copy(number);
2282
+ string extension;
2283
+ MaybeStripExtension(&number_copy, &extension);
2284
+ return reg_exps_->valid_alpha_phone_pattern_->FullMatch(number_copy);
2285
+ }
2286
+
2287
+ void PhoneNumberUtil::ConvertAlphaCharactersInNumber(string* number) const {
2288
+ DCHECK(number);
2289
+ NormalizeHelper(reg_exps_->alpha_phone_mappings_, false, number);
2290
+ }
2291
+
2292
+ // Normalizes a string of characters representing a phone number. This performs
2293
+ // the following conversions:
2294
+ // - Punctuation is stripped.
2295
+ // For ALPHA/VANITY numbers:
2296
+ // - Letters are converted to their numeric representation on a telephone
2297
+ // keypad. The keypad used here is the one defined in ITU Recommendation
2298
+ // E.161. This is only done if there are 3 or more letters in the number, to
2299
+ // lessen the risk that such letters are typos.
2300
+ // For other numbers:
2301
+ // - Wide-ascii digits are converted to normal ASCII (European) digits.
2302
+ // - Arabic-Indic numerals are converted to European numerals.
2303
+ // - Spurious alpha characters are stripped.
2304
+ void PhoneNumberUtil::Normalize(string* number) const {
2305
+ DCHECK(number);
2306
+ if (reg_exps_->valid_alpha_phone_pattern_->PartialMatch(*number)) {
2307
+ NormalizeHelper(reg_exps_->alpha_phone_mappings_, true, number);
2308
+ }
2309
+ NormalizeDigitsOnly(number);
2310
+ }
2311
+
2312
+ // Checks to see if the string of characters could possibly be a phone number at
2313
+ // all. At the moment, checks to see that the string begins with at least 3
2314
+ // digits, ignoring any punctuation commonly found in phone numbers. This
2315
+ // method does not require the number to be normalized in advance - but does
2316
+ // assume that leading non-number symbols have been removed, such as by the
2317
+ // method ExtractPossibleNumber.
2318
+ bool PhoneNumberUtil::IsViablePhoneNumber(const string& number) const {
2319
+ if (number.length() < kMinLengthForNsn) {
2320
+ VLOG(2) << "Number too short to be viable:" << number;
2321
+ return false;
2322
+ }
2323
+ return reg_exps_->valid_phone_number_pattern_->FullMatch(number);
2324
+ }
2325
+
2326
+ // Strips the IDD from the start of the number if present. Helper function used
2327
+ // by MaybeStripInternationalPrefixAndNormalize.
2328
+ bool PhoneNumberUtil::ParsePrefixAsIdd(const RegExp& idd_pattern,
2329
+ string* number) const {
2330
+ DCHECK(number);
2331
+ const scoped_ptr<RegExpInput> number_copy(
2332
+ reg_exps_->regexp_factory_->CreateInput(*number));
2333
+ // First attempt to strip the idd_pattern at the start, if present. We make a
2334
+ // copy so that we can revert to the original string if necessary.
2335
+ if (idd_pattern.Consume(number_copy.get())) {
2336
+ // Only strip this if the first digit after the match is not a 0, since
2337
+ // country calling codes cannot begin with 0.
2338
+ string extracted_digit;
2339
+ if (reg_exps_->capturing_digit_pattern_->PartialMatch(
2340
+ number_copy->ToString(), &extracted_digit)) {
2341
+ NormalizeDigitsOnly(&extracted_digit);
2342
+ if (extracted_digit == "0") {
2343
+ return false;
2344
+ }
2345
+ }
2346
+ number->assign(number_copy->ToString());
2347
+ return true;
2348
+ }
2349
+ return false;
2350
+ }
2351
+
2352
+ // Strips any international prefix (such as +, 00, 011) present in the number
2353
+ // provided, normalizes the resulting number, and indicates if an international
2354
+ // prefix was present.
2355
+ //
2356
+ // possible_idd_prefix represents the international direct dialing prefix from
2357
+ // the region we think this number may be dialed in.
2358
+ // Returns true if an international dialing prefix could be removed from the
2359
+ // number, otherwise false if the number did not seem to be in international
2360
+ // format.
2361
+ PhoneNumber::CountryCodeSource
2362
+ PhoneNumberUtil::MaybeStripInternationalPrefixAndNormalize(
2363
+ const string& possible_idd_prefix,
2364
+ string* number) const {
2365
+ DCHECK(number);
2366
+ if (number->empty()) {
2367
+ return PhoneNumber::FROM_DEFAULT_COUNTRY;
2368
+ }
2369
+ const scoped_ptr<RegExpInput> number_string_piece(
2370
+ reg_exps_->regexp_factory_->CreateInput(*number));
2371
+ if (reg_exps_->plus_chars_pattern_->Consume(number_string_piece.get())) {
2372
+ number->assign(number_string_piece->ToString());
2373
+ // Can now normalize the rest of the number since we've consumed the "+"
2374
+ // sign at the start.
2375
+ Normalize(number);
2376
+ return PhoneNumber::FROM_NUMBER_WITH_PLUS_SIGN;
2377
+ }
2378
+ // Attempt to parse the first digits as an international prefix.
2379
+ const RegExp& idd_pattern =
2380
+ reg_exps_->regexp_cache_->GetRegExp(possible_idd_prefix);
2381
+ Normalize(number);
2382
+ return ParsePrefixAsIdd(idd_pattern, number)
2383
+ ? PhoneNumber::FROM_NUMBER_WITH_IDD
2384
+ : PhoneNumber::FROM_DEFAULT_COUNTRY;
2385
+ }
2386
+
2387
+ // Strips any national prefix (such as 0, 1) present in the number provided.
2388
+ // The number passed in should be the normalized telephone number that we wish
2389
+ // to strip any national dialing prefix from. The metadata should be for the
2390
+ // region that we think this number is from. Returns true if a national prefix
2391
+ // and/or carrier code was stripped.
2392
+ bool PhoneNumberUtil::MaybeStripNationalPrefixAndCarrierCode(
2393
+ const PhoneMetadata& metadata,
2394
+ string* number,
2395
+ string* carrier_code) const {
2396
+ DCHECK(number);
2397
+ string carrier_code_temp;
2398
+ const string& possible_national_prefix =
2399
+ metadata.national_prefix_for_parsing();
2400
+ if (number->empty() || possible_national_prefix.empty()) {
2401
+ // Early return for numbers of zero length or with no national prefix
2402
+ // possible.
2403
+ return false;
2404
+ }
2405
+ // We use two copies here since Consume modifies the phone number, and if the
2406
+ // first if-clause fails the number will already be changed.
2407
+ const scoped_ptr<RegExpInput> number_copy(
2408
+ reg_exps_->regexp_factory_->CreateInput(*number));
2409
+ const scoped_ptr<RegExpInput> number_copy_without_transform(
2410
+ reg_exps_->regexp_factory_->CreateInput(*number));
2411
+ string number_string_copy(*number);
2412
+ string captured_part_of_prefix;
2413
+ const RegExp& national_number_rule = reg_exps_->regexp_cache_->GetRegExp(
2414
+ metadata.general_desc().national_number_pattern());
2415
+ // Check if the original number is viable.
2416
+ bool is_viable_original_number = national_number_rule.FullMatch(*number);
2417
+ // Attempt to parse the first digits as a national prefix. We make a
2418
+ // copy so that we can revert to the original string if necessary.
2419
+ const string& transform_rule = metadata.national_prefix_transform_rule();
2420
+ const RegExp& possible_national_prefix_pattern =
2421
+ reg_exps_->regexp_cache_->GetRegExp(possible_national_prefix);
2422
+ if (!transform_rule.empty() &&
2423
+ (possible_national_prefix_pattern.Consume(
2424
+ number_copy.get(), &carrier_code_temp, &captured_part_of_prefix) ||
2425
+ possible_national_prefix_pattern.Consume(
2426
+ number_copy.get(), &captured_part_of_prefix)) &&
2427
+ !captured_part_of_prefix.empty()) {
2428
+ // If this succeeded, then we must have had a transform rule and there must
2429
+ // have been some part of the prefix that we captured.
2430
+ // We make the transformation and check that the resultant number is still
2431
+ // viable. If so, replace the number and return.
2432
+ possible_national_prefix_pattern.Replace(&number_string_copy,
2433
+ transform_rule);
2434
+ if (is_viable_original_number &&
2435
+ !national_number_rule.FullMatch(number_string_copy)) {
2436
+ return false;
2437
+ }
2438
+ number->assign(number_string_copy);
2439
+ if (carrier_code) {
2440
+ carrier_code->assign(carrier_code_temp);
2441
+ }
2442
+ } else if (possible_national_prefix_pattern.Consume(
2443
+ number_copy_without_transform.get(), &carrier_code_temp) ||
2444
+ possible_national_prefix_pattern.Consume(
2445
+ number_copy_without_transform.get())) {
2446
+ VLOG(4) << "Parsed the first digits as a national prefix.";
2447
+ // If captured_part_of_prefix is empty, this implies nothing was captured by
2448
+ // the capturing groups in possible_national_prefix; therefore, no
2449
+ // transformation is necessary, and we just remove the national prefix.
2450
+ const string number_copy_as_string =
2451
+ number_copy_without_transform->ToString();
2452
+ if (is_viable_original_number &&
2453
+ !national_number_rule.FullMatch(number_copy_as_string)) {
2454
+ return false;
2455
+ }
2456
+ number->assign(number_copy_as_string);
2457
+ if (carrier_code) {
2458
+ carrier_code->assign(carrier_code_temp);
2459
+ }
2460
+ } else {
2461
+ return false;
2462
+ VLOG(4) << "The first digits did not match the national prefix.";
2463
+ }
2464
+ return true;
2465
+ }
2466
+
2467
+ // Strips any extension (as in, the part of the number dialled after the call is
2468
+ // connected, usually indicated with extn, ext, x or similar) from the end of
2469
+ // the number, and returns it. The number passed in should be non-normalized.
2470
+ bool PhoneNumberUtil::MaybeStripExtension(string* number, string* extension)
2471
+ const {
2472
+ DCHECK(number);
2473
+ DCHECK(extension);
2474
+ // There are three extension capturing groups in the regular expression.
2475
+ string possible_extension_one;
2476
+ string possible_extension_two;
2477
+ string possible_extension_three;
2478
+ string number_copy(*number);
2479
+ const scoped_ptr<RegExpInput> number_copy_as_regexp_input(
2480
+ reg_exps_->regexp_factory_->CreateInput(number_copy));
2481
+ if (reg_exps_->extn_pattern_->Consume(number_copy_as_regexp_input.get(),
2482
+ false,
2483
+ &possible_extension_one,
2484
+ &possible_extension_two,
2485
+ &possible_extension_three)) {
2486
+ // Replace the extensions in the original string here.
2487
+ reg_exps_->extn_pattern_->Replace(&number_copy, "");
2488
+ VLOG(4) << "Found an extension. Possible extension one: "
2489
+ << possible_extension_one
2490
+ << ". Possible extension two: " << possible_extension_two
2491
+ << ". Possible extension three: " << possible_extension_three
2492
+ << ". Remaining number: " << number_copy;
2493
+ // If we find a potential extension, and the number preceding this is a
2494
+ // viable number, we assume it is an extension.
2495
+ if ((!possible_extension_one.empty() || !possible_extension_two.empty() ||
2496
+ !possible_extension_three.empty()) &&
2497
+ IsViablePhoneNumber(number_copy)) {
2498
+ number->assign(number_copy);
2499
+ if (!possible_extension_one.empty()) {
2500
+ extension->assign(possible_extension_one);
2501
+ } else if (!possible_extension_two.empty()) {
2502
+ extension->assign(possible_extension_two);
2503
+ } else if (!possible_extension_three.empty()) {
2504
+ extension->assign(possible_extension_three);
2505
+ }
2506
+ return true;
2507
+ }
2508
+ }
2509
+ return false;
2510
+ }
2511
+
2512
+ // Extracts country calling code from national_number, and returns it. It
2513
+ // assumes that the leading plus sign or IDD has already been removed. Returns 0
2514
+ // if national_number doesn't start with a valid country calling code, and
2515
+ // leaves national_number unmodified. Assumes the national_number is at least 3
2516
+ // characters long.
2517
+ int PhoneNumberUtil::ExtractCountryCode(string* national_number) const {
2518
+ int potential_country_code;
2519
+ if (national_number->empty() || (national_number->at(0) == '0')) {
2520
+ // Country codes do not begin with a '0'.
2521
+ return 0;
2522
+ }
2523
+ for (size_t i = 1; i <= kMaxLengthCountryCode; ++i) {
2524
+ safe_strto32(national_number->substr(0, i), &potential_country_code);
2525
+ string region_code;
2526
+ GetRegionCodeForCountryCode(potential_country_code, &region_code);
2527
+ if (region_code != RegionCode::GetUnknown()) {
2528
+ national_number->erase(0, i);
2529
+ return potential_country_code;
2530
+ }
2531
+ }
2532
+ return 0;
2533
+ }
2534
+
2535
+ // Tries to extract a country calling code from a number. Country calling codes
2536
+ // are extracted in the following ways:
2537
+ // - by stripping the international dialing prefix of the region the person
2538
+ // is dialing from, if this is present in the number, and looking at the next
2539
+ // digits
2540
+ // - by stripping the '+' sign if present and then looking at the next digits
2541
+ // - by comparing the start of the number and the country calling code of the
2542
+ // default region. If the number is not considered possible for the numbering
2543
+ // plan of the default region initially, but starts with the country calling
2544
+ // code of this region, validation will be reattempted after stripping this
2545
+ // country calling code. If this number is considered a possible number, then
2546
+ // the first digits will be considered the country calling code and removed as
2547
+ // such.
2548
+ //
2549
+ // Returns NO_PARSING_ERROR if a country calling code was successfully
2550
+ // extracted or none was present, or the appropriate error otherwise, such as
2551
+ // if a + was present but it was not followed by a valid country calling code.
2552
+ // If NO_PARSING_ERROR is returned, the national_number without the country
2553
+ // calling code is populated, and the country_code of the phone_number passed
2554
+ // in is set to the country calling code if found, otherwise to 0.
2555
+ PhoneNumberUtil::ErrorType PhoneNumberUtil::MaybeExtractCountryCode(
2556
+ const PhoneMetadata* default_region_metadata,
2557
+ bool keep_raw_input,
2558
+ string* national_number,
2559
+ PhoneNumber* phone_number) const {
2560
+ DCHECK(national_number);
2561
+ DCHECK(phone_number);
2562
+ // Set the default prefix to be something that will never match if there is no
2563
+ // default region.
2564
+ string possible_country_idd_prefix = default_region_metadata
2565
+ ? default_region_metadata->international_prefix()
2566
+ : "NonMatch";
2567
+ PhoneNumber::CountryCodeSource country_code_source =
2568
+ MaybeStripInternationalPrefixAndNormalize(possible_country_idd_prefix,
2569
+ national_number);
2570
+ if (keep_raw_input) {
2571
+ phone_number->set_country_code_source(country_code_source);
2572
+ }
2573
+ if (country_code_source != PhoneNumber::FROM_DEFAULT_COUNTRY) {
2574
+ if (national_number->length() <= kMinLengthForNsn) {
2575
+ VLOG(2) << "Phone number had an IDD, but after this was not "
2576
+ << "long enough to be a viable phone number.";
2577
+ return TOO_SHORT_AFTER_IDD;
2578
+ }
2579
+ int potential_country_code = ExtractCountryCode(national_number);
2580
+ if (potential_country_code != 0) {
2581
+ phone_number->set_country_code(potential_country_code);
2582
+ return NO_PARSING_ERROR;
2583
+ }
2584
+ // If this fails, they must be using a strange country calling code that we
2585
+ // don't recognize, or that doesn't exist.
2586
+ return INVALID_COUNTRY_CODE_ERROR;
2587
+ } else if (default_region_metadata) {
2588
+ // Check to see if the number starts with the country calling code for the
2589
+ // default region. If so, we remove the country calling code, and do some
2590
+ // checks on the validity of the number before and after.
2591
+ int default_country_code = default_region_metadata->country_code();
2592
+ string default_country_code_string(SimpleItoa(default_country_code));
2593
+ VLOG(4) << "Possible country calling code: " << default_country_code_string;
2594
+ string potential_national_number;
2595
+ if (TryStripPrefixString(*national_number,
2596
+ default_country_code_string,
2597
+ &potential_national_number)) {
2598
+ const PhoneNumberDesc& general_num_desc =
2599
+ default_region_metadata->general_desc();
2600
+ const RegExp& valid_number_pattern =
2601
+ reg_exps_->regexp_cache_->GetRegExp(
2602
+ general_num_desc.national_number_pattern());
2603
+ MaybeStripNationalPrefixAndCarrierCode(*default_region_metadata,
2604
+ &potential_national_number,
2605
+ NULL);
2606
+ VLOG(4) << "Number without country calling code prefix: "
2607
+ << potential_national_number;
2608
+ const RegExp& possible_number_pattern =
2609
+ reg_exps_->regexp_cache_->GetRegExp(
2610
+ StrCat("(", general_num_desc.possible_number_pattern(), ")"));
2611
+ // If the number was not valid before but is valid now, or if it was too
2612
+ // long before, we consider the number with the country code stripped to
2613
+ // be a better result and keep that instead.
2614
+ if ((!valid_number_pattern.FullMatch(*national_number) &&
2615
+ valid_number_pattern.FullMatch(potential_national_number)) ||
2616
+ TestNumberLengthAgainstPattern(possible_number_pattern,
2617
+ *national_number) == TOO_LONG) {
2618
+ national_number->assign(potential_national_number);
2619
+ if (keep_raw_input) {
2620
+ phone_number->set_country_code_source(
2621
+ PhoneNumber::FROM_NUMBER_WITHOUT_PLUS_SIGN);
2622
+ }
2623
+ phone_number->set_country_code(default_country_code);
2624
+ return NO_PARSING_ERROR;
2625
+ }
2626
+ }
2627
+ }
2628
+ // No country calling code present. Set the country_code to 0.
2629
+ phone_number->set_country_code(0);
2630
+ return NO_PARSING_ERROR;
2631
+ }
2632
+
2633
+ PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatch(
2634
+ const PhoneNumber& first_number_in,
2635
+ const PhoneNumber& second_number_in) const {
2636
+ // Make copies of the phone number so that the numbers passed in are not
2637
+ // edited.
2638
+ PhoneNumber first_number(first_number_in);
2639
+ PhoneNumber second_number(second_number_in);
2640
+ // First clear raw_input and country_code_source and
2641
+ // preferred_domestic_carrier_code fields and any empty-string extensions so
2642
+ // that we can use the proto-buffer equality method.
2643
+ first_number.clear_raw_input();
2644
+ first_number.clear_country_code_source();
2645
+ first_number.clear_preferred_domestic_carrier_code();
2646
+ second_number.clear_raw_input();
2647
+ second_number.clear_country_code_source();
2648
+ second_number.clear_preferred_domestic_carrier_code();
2649
+ if (first_number.extension().empty()) {
2650
+ first_number.clear_extension();
2651
+ }
2652
+ if (second_number.extension().empty()) {
2653
+ second_number.clear_extension();
2654
+ }
2655
+ // Early exit if both had extensions and these are different.
2656
+ if (first_number.has_extension() && second_number.has_extension() &&
2657
+ first_number.extension() != second_number.extension()) {
2658
+ return NO_MATCH;
2659
+ }
2660
+ int first_number_country_code = first_number.country_code();
2661
+ int second_number_country_code = second_number.country_code();
2662
+ // Both had country calling code specified.
2663
+ if (first_number_country_code != 0 && second_number_country_code != 0) {
2664
+ if (ExactlySameAs(first_number, second_number)) {
2665
+ return EXACT_MATCH;
2666
+ } else if (first_number_country_code == second_number_country_code &&
2667
+ IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
2668
+ // A SHORT_NSN_MATCH occurs if there is a difference because of the
2669
+ // presence or absence of an 'Italian leading zero', the presence or
2670
+ // absence of an extension, or one NSN being a shorter variant of the
2671
+ // other.
2672
+ return SHORT_NSN_MATCH;
2673
+ }
2674
+ // This is not a match.
2675
+ return NO_MATCH;
2676
+ }
2677
+ // Checks cases where one or both country calling codes were not specified. To
2678
+ // make equality checks easier, we first set the country_code fields to be
2679
+ // equal.
2680
+ first_number.set_country_code(second_number_country_code);
2681
+ // If all else was the same, then this is an NSN_MATCH.
2682
+ if (ExactlySameAs(first_number, second_number)) {
2683
+ return NSN_MATCH;
2684
+ }
2685
+ if (IsNationalNumberSuffixOfTheOther(first_number, second_number)) {
2686
+ return SHORT_NSN_MATCH;
2687
+ }
2688
+ return NO_MATCH;
2689
+ }
2690
+
2691
+ PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithTwoStrings(
2692
+ const string& first_number,
2693
+ const string& second_number) const {
2694
+ PhoneNumber first_number_as_proto;
2695
+ ErrorType error_type =
2696
+ Parse(first_number, RegionCode::GetUnknown(), &first_number_as_proto);
2697
+ if (error_type == NO_PARSING_ERROR) {
2698
+ return IsNumberMatchWithOneString(first_number_as_proto, second_number);
2699
+ }
2700
+ if (error_type == INVALID_COUNTRY_CODE_ERROR) {
2701
+ PhoneNumber second_number_as_proto;
2702
+ ErrorType error_type = Parse(second_number, RegionCode::GetUnknown(),
2703
+ &second_number_as_proto);
2704
+ if (error_type == NO_PARSING_ERROR) {
2705
+ return IsNumberMatchWithOneString(second_number_as_proto, first_number);
2706
+ }
2707
+ if (error_type == INVALID_COUNTRY_CODE_ERROR) {
2708
+ error_type = ParseHelper(first_number, RegionCode::GetUnknown(), false,
2709
+ false, &first_number_as_proto);
2710
+ if (error_type == NO_PARSING_ERROR) {
2711
+ error_type = ParseHelper(second_number, RegionCode::GetUnknown(), false,
2712
+ false, &second_number_as_proto);
2713
+ if (error_type == NO_PARSING_ERROR) {
2714
+ return IsNumberMatch(first_number_as_proto, second_number_as_proto);
2715
+ }
2716
+ }
2717
+ }
2718
+ }
2719
+ // One or more of the phone numbers we are trying to match is not a viable
2720
+ // phone number.
2721
+ return INVALID_NUMBER;
2722
+ }
2723
+
2724
+ PhoneNumberUtil::MatchType PhoneNumberUtil::IsNumberMatchWithOneString(
2725
+ const PhoneNumber& first_number,
2726
+ const string& second_number) const {
2727
+ // First see if the second number has an implicit country calling code, by
2728
+ // attempting to parse it.
2729
+ PhoneNumber second_number_as_proto;
2730
+ ErrorType error_type =
2731
+ Parse(second_number, RegionCode::GetUnknown(), &second_number_as_proto);
2732
+ if (error_type == NO_PARSING_ERROR) {
2733
+ return IsNumberMatch(first_number, second_number_as_proto);
2734
+ }
2735
+ if (error_type == INVALID_COUNTRY_CODE_ERROR) {
2736
+ // The second number has no country calling code. EXACT_MATCH is no longer
2737
+ // possible. We parse it as if the region was the same as that for the
2738
+ // first number, and if EXACT_MATCH is returned, we replace this with
2739
+ // NSN_MATCH.
2740
+ string first_number_region;
2741
+ GetRegionCodeForCountryCode(first_number.country_code(),
2742
+ &first_number_region);
2743
+ if (first_number_region != RegionCode::GetUnknown()) {
2744
+ PhoneNumber second_number_with_first_number_region;
2745
+ Parse(second_number, first_number_region,
2746
+ &second_number_with_first_number_region);
2747
+ MatchType match = IsNumberMatch(first_number,
2748
+ second_number_with_first_number_region);
2749
+ if (match == EXACT_MATCH) {
2750
+ return NSN_MATCH;
2751
+ }
2752
+ return match;
2753
+ } else {
2754
+ // If the first number didn't have a valid country calling code, then we
2755
+ // parse the second number without one as well.
2756
+ error_type = ParseHelper(second_number, RegionCode::GetUnknown(), false,
2757
+ false, &second_number_as_proto);
2758
+ if (error_type == NO_PARSING_ERROR) {
2759
+ return IsNumberMatch(first_number, second_number_as_proto);
2760
+ }
2761
+ }
2762
+ }
2763
+ // One or more of the phone numbers we are trying to match is not a viable
2764
+ // phone number.
2765
+ return INVALID_NUMBER;
2766
+ }
2767
+
2768
+ AsYouTypeFormatter* PhoneNumberUtil::GetAsYouTypeFormatter(
2769
+ const string& region_code) const {
2770
+ return new AsYouTypeFormatter(region_code);
2771
+ }
2772
+
2773
+ bool PhoneNumberUtil::IsShorterThanPossibleNormalNumber(
2774
+ const PhoneMetadata* country_metadata, const string& number) const {
2775
+ const RegExp& possible_number_pattern =
2776
+ reg_exps_->regexp_cache_->GetRegExp(StrCat("(",
2777
+ country_metadata->general_desc().possible_number_pattern(), ")"));
2778
+ return TestNumberLengthAgainstPattern(possible_number_pattern, number) ==
2779
+ PhoneNumberUtil::TOO_SHORT;
2780
+ }
2781
+
2782
+ bool PhoneNumberUtil::CanBeInternationallyDialled(
2783
+ const PhoneNumber& number) const {
2784
+ string region_code;
2785
+ GetRegionCodeForNumber(number, &region_code);
2786
+ const PhoneMetadata* metadata = GetMetadataForRegion(region_code);
2787
+ if (!metadata) {
2788
+ // Note numbers belonging to non-geographical entities (e.g. +800 numbers)
2789
+ // are always internationally diallable, and will be caught here.
2790
+ return true;
2791
+ }
2792
+ string national_significant_number;
2793
+ GetNationalSignificantNumber(number, &national_significant_number);
2794
+ return !IsNumberMatchingDesc(
2795
+ national_significant_number, metadata->no_international_dialling());
2796
+ }
2797
+
2798
+ } // namespace phonenumbers
2799
+ } // namespace i18n