Merge "Add subscription specific API for IMS registration status"
diff --git a/Android.mk b/Android.mk
index 586709f..24fb423 100644
--- a/Android.mk
+++ b/Android.mk
@@ -9,10 +9,19 @@
 src_dirs := src $(phone_common_dir)/src sip/src
 res_dirs := res $(phone_common_dir)/res sip/res
 
-LOCAL_JAVA_LIBRARIES := telephony-common voip-common ims-common
+LOCAL_JAVA_LIBRARIES := \
+        telephony-common \
+        voip-common \
+        ims-common \
+        org.apache.http.legacy
+
 LOCAL_STATIC_JAVA_LIBRARIES := \
-        com.android.services.telephony.common \
+        android-support-v7-appcompat \
+        android-support-v7-preference \
+        android-support-v7-recyclerview \
+        android-support-v14-preference \
         guava \
+        volley
 
 LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
 LOCAL_SRC_FILES += \
@@ -33,6 +42,8 @@
 
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags sip/proguard.flags
 
+include frameworks/base/packages/SettingsLib/common.mk
+
 include $(BUILD_PACKAGE)
 
 # Build the test package
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 2d449ad..2836448 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -22,8 +22,14 @@
         android:sharedUserLabel="@string/phoneAppLabel"
 >
 
+    <uses-sdk
+        android:minSdkVersion="23"
+        android:targetSdkVersion="23" />
+
     <original-package android:name="com.android.phone" />
 
+    <protected-broadcast android:name="android.telecom.action.TTY_PREFERRED_MODE_CHANGED" />
+    <protected-broadcast android:name="android.telecom.action.CURRENT_TTY_MODE_CHANGED" />
     <protected-broadcast android:name="android.intent.action.SERVICE_STATE" />
     <protected-broadcast android:name="android.intent.action.RADIO_TECHNOLOGY" />
     <protected-broadcast android:name="android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED" />
@@ -34,7 +40,7 @@
     <protected-broadcast android:name="android.intent.action.SIM_STATE_CHANGED" />
     <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIME" />
     <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIMEZONE" />
-    <protected-broadcast android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
+    <protected-broadcast android:name="com.android.internal.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
     <protected-broadcast android:name="android.intent.action.ACTION_MDN_STATE_CHANGED" />
     <protected-broadcast android:name="android.provider.Telephony.SPN_STRINGS_UPDATED" />
     <protected-broadcast android:name="android.provider.Telephony.SIM_FULL" />
@@ -43,19 +49,44 @@
     <protected-broadcast android:name="android.intent.action.DATA_SMS_RECEIVED" />
     <protected-broadcast android:name="android.provider.Telephony.SMS_RECEIVED" />
     <protected-broadcast android:name="android.provider.Telephony.SMS_DELIVER" />
+    <protected-broadcast android:name="android.provider.Telephony.SMS_REJECTED" />
     <protected-broadcast android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
     <protected-broadcast android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
     <protected-broadcast android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
     <protected-broadcast android:name="android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED" />
-    <protected-broadcast android:name= "android.intent.action.stk.command" />
-    <protected-broadcast android:name= "android.intent.action.stk.session_end" />
-    <protected-broadcast android:name= "android.intent.action.stk.icc_status_change" />
-    <protected-broadcast android:name= "android.intent.action.stk.alpha_notify" />
-
+    <protected-broadcast android:name="android.provider.Telephony.SECRET_CODE" />
+    <protected-broadcast android:name= "com.android.internal.stk.command" />
+    <protected-broadcast android:name= "com.android.internal.stk.session_end" />
+    <protected-broadcast android:name= "com.android.internal.stk.icc_status_change" />
+    <protected-broadcast android:name= "com.android.internal.stk.alpha_notify" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_PCO_VALUE" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_SIGNAL_RESET" />
+    <protected-broadcast android:name= "com.android.internal.provider.action.VOICEMAIL_SMS_RECEIVED" />
+    <protected-broadcast android:name= "com.android.intent.isim_refresh" />
+    <protected-broadcast android:name= "com.android.ims.IMS_SERVICE_UP" />
+    <protected-broadcast android:name= "com.android.ims.IMS_SERVICE_DOWN" />
+    <protected-broadcast android:name= "com.android.ims.IMS_INCOMING_CALL" />
+    <protected-broadcast android:name= "com.android.ims.internal.uce.UCE_SERVICE_UP" />
+    <protected-broadcast android:name= "com.android.ims.internal.uce.UCE_SERVICE_DOWN" />
+    <protected-broadcast android:name= "com.android.imsconnection.DISCONNECTED" />
+    <protected-broadcast android:name= "com.android.intent.action.IMS_FEATURE_CHANGED" />
+    <protected-broadcast android:name= "com.android.intent.action.IMS_CONFIG_CHANGED" />
+    <protected-broadcast android:name= "com.android.ims.REGISTRATION_ERROR" />
+    <protected-broadcast android:name= "com.android.phone.vvm.omtp.sms.REQUEST_SENT" />
+    <protected-broadcast android:name= "com.android.phone.vvm.ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT" />
+    <protected-broadcast android:name= "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED" />
 
     <uses-permission android:name="android.permission.BROADCAST_STICKY" />
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
+    <!-- TELEPHONY_SECRET_CODE used to be sent by the Dialer app, but is now sent by
+         the phone process through an API added in O. Since the broadcast was unprotected prior to
+         O, apps may have required this permission (which only Dialer has) in their receivers.
+         So, declare this permission here for backwards compatibility so the phone process can send
+         the broadcasts to those same receivers. -->
+    <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
@@ -112,6 +143,7 @@
     <uses-permission android:name="android.permission.DUMP" />
     <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
     <uses-permission android:name="android.permission.REGISTER_SIM_SUBSCRIPTION" />
+    <uses-permission android:name="android.permission.BIND_IMS_SERVICE" />
     <uses-permission android:name="android.permission.BIND_CARRIER_SERVICES" />
     <!-- BIND_CARRIER_MESSAGING_SERVICE has been deprecated in favor of BIND_CARRIER_SERVICES. -->
     <uses-permission android:name="android.permission.BIND_CARRIER_MESSAGING_SERVICE" />
@@ -123,29 +155,37 @@
     <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
     <uses-permission android:name="com.android.voicemail.permission.WRITE_VOICEMAIL" />
     <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
+    <uses-permission android:name="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"/>
     <uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS" />
     <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
     <uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
-
+    <!-- Needed to block messages. -->
+    <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS" />
+    <!-- Needed for emergency contact notification. -->
+    <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS" />
 
     <!-- This tells the activity manager to not delay any of our activity
          start requests, even if they happen immediately after the user
          presses home. -->
     <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
 
     <application android:name="PhoneApp"
-                 android:persistent="true"
-                 android:label="@string/phoneAppLabel"
-                 android:icon="@mipmap/ic_launcher_phone"
-                 android:allowBackup="false"
-                 android:supportsRtl="true"
-                 android:usesCleartextTraffic="true">
-            <provider android:name="IccProvider"
-                      android:authorities="icc"
-                      android:multiprocess="true"
-                      android:exported="true"
-                      android:readPermission="android.permission.READ_CONTACTS"
-                      android:writePermission="android.permission.WRITE_CONTACTS" />
+            android:persistent="true"
+            android:label="@string/phoneAppLabel"
+            android:icon="@mipmap/ic_launcher_phone"
+            android:allowBackup="false"
+            android:supportsRtl="true"
+            android:usesCleartextTraffic="true"
+            android:defaultToDeviceProtectedStorage="true"
+            android:directBootAware="true">
+
+        <provider android:name="IccProvider"
+                android:authorities="icc"
+                android:multiprocess="true"
+                android:exported="true"
+                android:readPermission="android.permission.READ_CONTACTS"
+                android:writePermission="android.permission.WRITE_CONTACTS" />
 
         <!-- Dialer UI that only allows emergency calls -->
         <activity android:name="EmergencyDialer"
@@ -287,35 +327,11 @@
             </intent-filter>
         </receiver>
 
-        <!-- Trampoline activity that handles the PERFORM_CDMA_PROVISIONING intent. -->
-        <activity android:name="InCallScreenShowActivation"
-            android:permission="android.permission.PERFORM_CDMA_PROVISIONING"
-            android:label="@string/phoneIconLabel"
-            android:theme="@android:style/Theme.NoDisplay"
-            android:excludeFromRecents="true">
-            <intent-filter>
-                <action android:name="com.android.phone.PERFORM_CDMA_PROVISIONING" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <!-- Trampoline activity that handles the SIM_ACTIVATION_REQUEST intent. -->
-        <activity android:name="com.android.services.telephony.activation.SimActivationActivity"
-                android:permission="android.permission.PERFORM_SIM_ACTIVATION"
-                android:label="@string/phoneIconLabel"
-                android:theme="@android:style/Theme.NoDisplay"
-                android:excludeFromRecents="true">
-            <intent-filter>
-                <action android:name="android.intent.action.SIM_ACTIVATION_REQUEST" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
         <!-- "Mobile network settings" screen, used on both
              non-voice-capable tablets and regular phone devices. -->
         <activity android:name="MobileNetworkSettings"
-            android:label="@string/settings_label"
-            android:theme="@style/SettingsLight">
+            android:label="@string/network_settings_title"
+            android:theme="@style/NetworkOperatorsSettingsTheme">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.MAIN" />
@@ -342,22 +358,6 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="GsmUmtsOptions"
-                android:label="@string/gsm_umts_options"
-                android:theme="@style/DialerSettingsLight">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name="CdmaOptions"
-                android:label="@string/cdma_options"
-                android:theme="@style/DialerSettingsLight">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
         <activity android:name="GsmUmtsCallOptions"
                 android:label="@string/gsm_umts_options"
                 android:theme="@style/DialerSettingsLight">
@@ -392,14 +392,6 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="CellBroadcastSms"
-            android:label="@string/cell_broadcast_sms"
-            android:theme="@android:style/Theme.Holo.DialogWhenLarge">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
         <!-- fdn setting -->
         <activity android:name="com.android.phone.settings.fdn.FdnSetting"
                 android:label="@string/fdn"
@@ -444,22 +436,6 @@
                 android:label="@string/delete_fdn_contact">
         </activity>
 
-        <activity android:name="DataRoamingReenable" android:label="@string/android:dialog_alert_title"
-            android:theme="@android:style/Theme.Holo.Dialog">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
-        <!-- data roaming setting -->
-        <activity android:name="RoamingSetting"
-                android:label="@string/roaming"
-                android:theme="@android:style/Theme.Holo.DialogWhenLarge">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
         <!-- "Call settings" UI, used only on voice-capable phone devices. -->
         <activity android:name="CallFeaturesSetting"
                 android:label="@string/call_settings"
@@ -473,11 +449,18 @@
             </intent-filter>
         </activity>
 
-        <!-- Broadcast Receiver that will process BOOT Complete and launch OTA -->
-        <receiver android:name="OtaStartupReceiver" android:exported="false"
-                androidprv:primaryUserOnly="true">
-            <intent-filter android:priority="100">
-                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
+        <!-- Activation service that trigger OTASP sim provisioning -->
+        <service android:name=".otasp.OtaspActivationService" android:launchMode="singleInstance"
+                 androidprv:systemUserOnly="true">
+            <intent-filter>
+                <action android:name="android.service.simActivation.SimActivationService" />
+            </intent-filter>
+        </service>
+
+        <receiver android:name=".otasp.OtaspSimStateReceiver" androidprv:systemUserOnly="true"
+                  android:exported ="false">
+            <intent-filter>
+                <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
             </intent-filter>
         </receiver>
 
@@ -497,7 +480,12 @@
         </service>
 
         <!-- service to dump telephony information -->
-        <service android:name="TelephonyDebugService" />
+        <service android:name="com.android.phone.TelephonyDebugService"
+                 android:permission="android.permission.DUMP">
+            <intent-filter>
+                <action android:name="com.android.phone.TelephonyDebugService" />
+            </intent-filter>
+        </service>
 
         <activity android:name="EmergencyCallbackModeExitDialog"
             android:excludeFromRecents="true"
@@ -506,18 +494,12 @@
             android:theme="@android:style/Theme.Translucent.NoTitleBar">
             <intent-filter>
                 <action android:name="com.android.phone.action.ACTION_SHOW_ECM_EXIT_DIALOG" />
-                <action android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
+                <action android:name="com.android.internal.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
         <!-- Start SIP -->
-        <service android:name="com.android.services.telephony.sip.SipCallServiceProvider"
-                 android:singleUser="true" >
-            <intent-filter>
-                <action android:name="android.telecom.CallServiceProvider" />
-            </intent-filter>
-        </service>
         <service android:name="com.android.services.telephony.sip.SipConnectionService"
                  android:label="@string/sip_connection_service_label"
                  android:singleUser="true"
@@ -526,12 +508,10 @@
                 <action android:name="android.telecom.ConnectionService" />
             </intent-filter>
         </service>
-        <receiver android:name="com.android.services.telephony.sip.SipBroadcastReceiver">
+
+        <receiver android:name="com.android.services.telephony.sip.SipIncomingCallReceiver">
             <intent-filter>
-                <action android:name="android.net.sip.SIP_SERVICE_UP" />
                 <action android:name="com.android.phone.SIP_INCOMING_CALL" />
-                <action android:name="com.android.phone.SIP_REMOVE_PHONE" />
-                <action android:name="com.android.phone.SIP_CALL_OPTION_CHANGED" />
             </intent-filter>
         </receiver>
 
@@ -578,13 +558,6 @@
                 android:theme="@style/Empty">
         </activity>
 
-        <activity android:name="HfaActivity"
-                android:configChanges="orientation|screenSize|keyboardHidden"
-                android:launchMode="singleInstance"
-                android:theme="@style/Empty"
-                android:exported="false">
-        </activity>
-
         <activity android:name="com.android.phone.settings.PhoneAccountSettingsActivity"
             android:label="@string/phone_accounts"
             android:theme="@style/DialerSettingsLight">
@@ -596,6 +569,7 @@
 
         <activity android:name="com.android.phone.settings.VoicemailSettingsActivity"
             android:label="@string/voicemail"
+            android:configChanges="orientation|screenSize|keyboardHidden|screenLayout"
             android:theme="@style/DialerSettingsLight">
             <intent-filter >
                 <!-- DO NOT RENAME. There are existing apps which use this string. -->
@@ -608,18 +582,6 @@
             </intent-filter>
         </activity>
 
-        <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
-        <receiver android:name="PhoneGlobals$NotificationBroadcastReceiver" android:exported="false">
-            <intent-filter>
-                <action android:name="com.android.phone.ACTION_HANG_UP_ONGOING_CALL" />
-                <action android:name="com.android.phone.ACTION_CALL_BACK_FROM_NOTIFICATION" />
-                <action android:name="com.android.phone.ACTION_SEND_SMS_FROM_NOTIFICATION" />
-            </intent-filter>
-        </receiver>
-
-        <!-- service to dump telephony information -->
-        <service android:name="HfaService" android:exported="false"/>
-
         <!-- Telecom integration -->
         <service
                 android:singleUser="true"
@@ -641,52 +603,29 @@
                 <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" />
             </intent-filter>
         </provider>
-        <receiver android:name="com.android.phone.vvm.omtp.sms.OmtpMessageReceiver"
-            android:exported="true">
+
+        <receiver
+          android:name="com.android.phone.vvm.VvmSmsReceiver"
+            android:exported="false"
+            androidprv:systemUserOnly="true">
             <intent-filter>
-                <action android:name="android.intent.action.DATA_SMS_RECEIVED" />
-                <data android:scheme="sms" />
+                <action android:name="com.android.internal.provider.action.VOICEMAIL_SMS_RECEIVED"/>
             </intent-filter>
         </receiver>
-       <receiver android:name="com.android.phone.vvm.omtp.SimChangeReceiver"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
-                <action android:name="android.intent.action.SIM_STATE_CHANGED" />
-            </intent-filter>
-       </receiver>
-       <receiver
-           android:name="com.android.phone.vvm.omtp.fetch.FetchVoicemailReceiver"
-           android:exported="true">
-           <intent-filter>
-              <action android:name="android.intent.action.FETCH_VOICEMAIL" />
-               <data
-                   android:scheme="content"
-                   android:host="com.android.voicemail"
-                   android:mimeType="vnd.android.cursor.item/voicemail" />
-          </intent-filter>
-       </receiver>
-       <receiver
-           android:name="com.android.phone.vvm.omtp.sync.VoicemailProviderChangeReceiver"
-           android:exported="true">
-           <intent-filter>
-              <action android:name="android.intent.action.PROVIDER_CHANGED" />
-               <data
-                   android:scheme="content"
-                   android:host="com.android.voicemail"
-                   android:mimeType="vnd.android.cursor.dir/voicemails"/>
-          </intent-filter>
-       </receiver>
-       <service
-            android:name="com.android.phone.vvm.omtp.sync.OmtpVvmSyncService"
+
+        <receiver
+            android:name="com.android.phone.vvm.VvmSimStateTracker"
             android:exported="false"
-       />
-       <receiver android:name="com.android.phone.vvm.omtp.VvmPackageInstallReceiver">
-          <intent-filter>
-              <action android:name="android.intent.action.PACKAGE_INSTALL" />
-              <action android:name="android.intent.action.PACKAGE_ADDED" />
-              <data android:scheme="package"/>
-          </intent-filter>
-       </receiver>
+            androidprv:systemUserOnly="true">
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED"/>
+                <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED"/>
+                <action android:name="android.intent.action.SIM_STATE_CHANGED"/>
+            </intent-filter>
+        </receiver>
+
+        <service
+            android:name="com.android.phone.vvm.RemoteVvmTaskManager"
+            android:exported="false"/>
     </application>
 </manifest>
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..e6fad06
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,10 @@
+amitmahajan@google.com
+breadley@google.com
+fionaxu@google.com
+hallliu@google.com
+jackyu@google.com
+rgreenwalt@google.com
+tgunn@google.com
+refuhoo@google.com
+sanketpadawe@google.com
+mpq@google.com
\ No newline at end of file
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..f3db20e
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Hook Scripts]
+checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
diff --git a/assets/eri.xml b/assets/eri.xml
new file mode 100644
index 0000000..cd32349
--- /dev/null
+++ b/assets/eri.xml
@@ -0,0 +1,1265 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Note that IconMode can be only 0, ON or 1, FLASHING
+     The icon is turned OFF if then IconIndex = 1 -->
+
+<EriFile VersionNumber="1357"
+         NumberOfEriEntries="176"
+         EriFileType="1">
+
+         <CallPromptId Id="0"
+                       CallPromptText="CallPromptId0"/>
+
+         <CallPromptId Id="1"
+                       CallPromptText="CallPromptId1"/>
+
+         <CallPromptId Id="2"
+                       CallPromptText="CallPromptId2"/>
+
+         <EriInfo RoamingIndicator="64"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Preferred System"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="65"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Available System"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="66"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Alliance Partner"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="67"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium Partner"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="68"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Full Service Functionality"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="69"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Partial Service Functionality"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="70"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Analog A"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="71"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Analog B"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="72"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="CDMA 800 A"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="73"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="CDMA 800 B"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="74"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="75"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="76"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Campus"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="77"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="In Building"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="78"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Regional"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="79"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Community"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="80"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Business"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="81"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Zone 1"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="82"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Zone 2"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="83"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="National"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="84"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Local"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="85"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="City"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="86"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Government"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="87"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="USA"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="88"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="State"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="89"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Resort"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="90"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Headquarters"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="91"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Personal"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="92"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Home"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="93"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Residential"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="94"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="University"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="95"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="College"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="96"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Hotel Guest"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="97"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Rental"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="98"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Corporate"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="99"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Sprint"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="100"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Campus"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="101"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="In Building"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="102"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Regional"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="103"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Community"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="104"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Business"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="105"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Zone 1"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="106"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Zone 2"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="107"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="National"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="108"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Local"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="109"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="City"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="110"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Government"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="111"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="USA"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="112"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="State"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="113"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Resort"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="114"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Headquarters"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="115"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Personal"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="116"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Home"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="117"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Residential"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="118"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="University"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="119"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="College"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="120"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Hotel Guest"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="121"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Rental"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="122"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Corporate"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="123"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Sprint"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="124"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="125"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="126"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="127"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Premium Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="128"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Enhanced Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="129"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Enhanced Digital"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="130"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Enhanced Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="131"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Alliance Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="132"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Alliance Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="133"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Vision Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="134"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="135"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Expanded Services"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="136"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Expanded Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="137"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="138"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Enhanced Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="139"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Enhanced Digital"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="140"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Enhanced Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="141"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Alliance Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="142"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Alliance Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="143"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Vision Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="144"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="145"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Expanded Services"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="146"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Expanded Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="147"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Premium Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="148"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Enhanced Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="149"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Enhanced Digital"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="150"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Enhanced Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="151"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Alliance Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="152"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Alliance Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="153"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Vision Roaming"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="154"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="155"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Expanded Services"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="156"
+                  IconIndex="0"
+                  IconMode="1"
+                  EriText="Expanded Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="157"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="158"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="159"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="160"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="161"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="162"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="163"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="164"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="165"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="166"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="167"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="168"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="169"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="170"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="171"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="172"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="173"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="174"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="175"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="176"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="177"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="178"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="179"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="180"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="181"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="182"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="183"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="184"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="185"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="186"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="187"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="188"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="189"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="190"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="191"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="192"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="193"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="194"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="International Services"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="195"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="International Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="196"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="197"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="198"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="199"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="200"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="201"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Ext Voice/Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="202"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="203"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="204"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Broadband"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="205"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="206"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="207"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="208"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="209"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="210"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Data Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="211"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="212"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="213"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="214"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="215"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Service"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="216"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="217"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="218"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="219"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="220"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="221"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice &amp; Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="222"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="223"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="224"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice Ntwk"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="225"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="226"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="227"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="228"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="229"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="230"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International Services"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="231"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="International Voice"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="232"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="233"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="234"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Int'l Voice/Data"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="235"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Premium International"
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="236"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="237"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="238"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+
+         <EriInfo RoamingIndicator="239"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText=" "
+                  CallPromptId="0"
+                  AlertId="0"/>
+</EriFile>
diff --git a/assets/eri_310120.xml b/assets/eri_310120.xml
new file mode 100644
index 0000000..246c326
--- /dev/null
+++ b/assets/eri_310120.xml
@@ -0,0 +1,1530 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Note that IconMode can be only 0, ON or 1, FLASHING
+     The icon is turned OFF if then IconIndex = 1 -->
+
+<EriFile VersionNumber="7"
+         NumberOfEriEntries="187"
+         EriFileType="2">
+
+         <CallPromptId Id="0"
+                       CallPromptText="CallPromptId0"/>
+
+         <CallPromptId Id="1"
+                       CallPromptText="CallPromptId1"/>
+
+         <CallPromptId Id="2"
+                       CallPromptText="CallPromptId2"/>
+
+<EriInfo RoamingIndicator="0"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Domestic Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="1"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="2"
+         IconIndex="2"
+         IconMode="1"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="3"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Neighbourhood"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="4"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="5"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="6"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="7"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="8"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="9"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="10"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="64"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="65"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="66"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="67"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="68"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="69"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="70"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="71"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="72"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="73"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="74"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="75"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="76"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="77"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="78"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="79"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="80"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="81"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="82"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="83"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="84"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="85"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="86"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="87"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="88"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="89"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="90"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="91"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="92"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="93"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="94"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="95"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="96"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="97"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="98"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="99"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="100"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="101"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="102"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="103"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="104"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="105"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="106"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="107"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="108"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="109"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="110"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="111"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="112"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="113"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="114"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="115"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="116"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="117"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="118"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="119"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="120"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="121"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="122"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="123"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="124"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="125"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="126"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="127"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="128"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="129"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="130"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="131"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="132"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="133"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="134"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="135"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="136"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="137"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="138"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="139"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="140"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="141"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="142"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="143"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="144"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="145"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="146"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="147"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="148"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="149"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="150"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="151"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="152"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="153"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="154"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="155"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="156"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="157"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="158"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="159"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="160"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="161"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="162"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="163"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="164"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="165"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="166"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="167"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="168"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="169"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="170"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="171"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="172"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="173"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="174"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="175"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="176"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="177"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="178"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="179"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="180"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="181"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="182"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="183"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="184"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="185"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="186"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="187"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="188"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="189"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="190"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="191"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="192"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="193"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="194"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="195"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="196"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="197"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="198"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="199"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="200"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="201"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="202"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="203"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="204"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="205"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="206"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="207"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="208"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="209"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="210"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="211"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="212"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="213"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="214"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="215"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="216"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="217"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="218"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="219"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="220"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="221"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="222"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="223"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="224"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="225"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="226"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="227"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="228"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="229"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="230"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="231"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="232"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="233"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="234"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="235"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="Premium International"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="236"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="237"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="238"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="239"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+</EriFile>
diff --git a/assets/eri_311480.xml b/assets/eri_311480.xml
new file mode 100644
index 0000000..c5e8624
--- /dev/null
+++ b/assets/eri_311480.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Note that IconMode can be only 0, ON or 1, FLASHING
+     The icon is turned OFF if then IconIndex = 1 -->
+
+<EriFile VersionNumber="5"
+         NumberOfEriEntries="19"
+         EriFileType="2">
+
+         <CallPromptId Id="0"
+                       CallPromptText="CallPromptId0"/>
+
+         <CallPromptId Id="1"
+                       CallPromptText="CallPromptId1"/>
+
+         <CallPromptId Id="2"
+                       CallPromptText="CallPromptId2"/>
+
+         <EriInfo RoamingIndicator="0"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText=""
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="1"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText=""
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="2"
+                  IconIndex="2"
+                  IconMode="1"
+                  EriText=""
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="64"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Verizon"
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="65"
+                  IconIndex="3"
+                  IconMode="0"
+                  EriText="Network Extender"
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="66"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="0"/>
+
+         <EriInfo RoamingIndicator="67"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="0"/>
+
+         <EriInfo RoamingIndicator="68"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Roaming"
+                  CallPromptId="0"
+                  AlertId="5"
+                  DataServiceSupport="0"/>
+
+         <EriInfo RoamingIndicator="69"
+                  IconIndex="2"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="0"/>
+
+         <EriInfo RoamingIndicator="70"
+                  IconIndex="2"
+                  IconMode="0"
+                  EriText="Roaming"
+                  CallPromptId="0"
+                  AlertId="5"
+                  DataServiceSupport="0"/>
+
+         <EriInfo RoamingIndicator="71"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="72"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="73"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Roaming"
+                  CallPromptId="0"
+                  AlertId="5"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="74"
+                  IconIndex="2"
+                  IconMode="0"
+                  EriText="Extended Network"
+                  CallPromptId="0"
+                  AlertId="4"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="75"
+                  IconIndex="2"
+                  IconMode="0"
+                  EriText="Roaming"
+                  CallPromptId="0"
+                  AlertId="5"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="76"
+                  IconIndex="0"
+                  IconMode="0"
+                  EriText="Verizon"
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="77"
+                  IconIndex="2"
+                  IconMode="0"
+                  EriText="Verizon"
+                  CallPromptId="0"
+                  AlertId="0"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="78"
+                  IconIndex="1"
+                  IconMode="0"
+                  EriText="Network Extender"
+                  CallPromptId="0"
+                  AlertId="1"
+                  DataServiceSupport="1"/>
+
+         <EriInfo RoamingIndicator="79"
+                  IconIndex="3"
+                  IconMode="1"
+                  EriText="Network Extender"
+                  CallPromptId="0"
+                  AlertId="1"
+                  DataServiceSupport="1"/>
+
+</EriFile>
diff --git a/assets/eri_311490.xml b/assets/eri_311490.xml
new file mode 100644
index 0000000..a28208c
--- /dev/null
+++ b/assets/eri_311490.xml
@@ -0,0 +1,1530 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Note that IconMode can be only 0, ON or 1, FLASHING
+     The icon is turned OFF if then IconIndex = 1 -->
+
+<EriFile VersionNumber="7"
+         NumberOfEriEntries="187"
+         EriFileType="2">
+
+         <CallPromptId Id="0"
+                       CallPromptText="CallPromptId0"/>
+
+         <CallPromptId Id="1"
+                       CallPromptText="CallPromptId1"/>
+
+         <CallPromptId Id="2"
+                       CallPromptText="CallPromptId2"/>
+
+<EriInfo RoamingIndicator="0"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Domestic Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="1"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Virgin Mobile"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="2"
+         IconIndex="2"
+         IconMode="1"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="3"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Neighbourhood"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="4"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="5"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="6"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="7"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="8"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="9"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="10"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="64"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="65"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="66"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="67"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="68"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="69"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="70"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="71"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="72"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="73"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="74"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="75"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="76"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="77"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="78"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="79"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="80"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="81"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="82"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="83"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="84"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="85"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="86"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="87"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="88"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="89"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="90"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="91"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="92"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="93"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="94"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="95"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="96"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="97"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="98"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="99"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="100"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="101"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="102"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="103"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="104"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="105"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="106"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="107"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="108"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="109"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="110"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="111"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="112"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="113"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="114"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="115"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="116"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="117"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="118"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="119"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="120"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="121"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="122"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="123"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="124"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="125"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="126"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="127"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="128"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="129"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="130"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="131"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="132"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="133"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="134"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="135"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="136"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="137"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="138"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="139"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="140"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="141"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="142"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="143"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="144"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="145"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="146"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="147"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="148"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="149"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="150"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="151"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="152"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="153"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="154"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="155"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="156"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="157"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="158"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="159"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="160"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="161"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="162"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="163"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="164"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="165"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="166"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="167"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="168"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="169"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="170"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="171"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="172"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="173"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="174"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="175"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="176"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="177"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="178"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="179"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="180"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="181"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="182"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="183"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="184"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="185"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="186"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="187"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="188"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="189"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="190"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="191"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="192"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="193"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="194"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="195"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="196"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="197"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="198"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="199"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="200"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="201"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="202"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="203"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="204"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="205"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="206"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="207"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="208"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="209"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="210"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="211"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="212"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="213"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="214"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="215"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="216"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="217"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="218"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="219"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="220"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="221"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="222"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="223"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="224"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="225"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="226"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="227"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="228"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="229"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="230"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="231"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="232"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="233"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="234"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="235"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="Premium International"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="236"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="237"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="238"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="239"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+</EriFile>
diff --git a/assets/eri_311870.xml b/assets/eri_311870.xml
new file mode 100644
index 0000000..ae12b73
--- /dev/null
+++ b/assets/eri_311870.xml
@@ -0,0 +1,1530 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- Note that IconMode can be only 0, ON or 1, FLASHING
+     The icon is turned OFF if then IconIndex = 1 -->
+
+<EriFile VersionNumber="7"
+         NumberOfEriEntries="187"
+         EriFileType="2">
+
+         <CallPromptId Id="0"
+                       CallPromptText="CallPromptId0"/>
+
+         <CallPromptId Id="1"
+                       CallPromptText="CallPromptId1"/>
+
+         <CallPromptId Id="2"
+                       CallPromptText="CallPromptId2"/>
+
+<EriInfo RoamingIndicator="0"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Domestic Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="1"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Boost Mobile"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="2"
+         IconIndex="2"
+         IconMode="1"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="3"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Neighbourhood"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="4"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Out of Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="5"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="6"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="7"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="8"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="9"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="10"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Roaming-Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="64"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Preferred System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="65"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Available System"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="66"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="67"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Partner"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="68"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Full Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="69"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Partial Service Functionality"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="70"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="71"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Analog B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="72"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 A"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="73"
+         IconIndex="0"
+         IconMode="0"
+         EriText="CDMA 800 B"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="74"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="75"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="76"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="77"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="78"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="79"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="80"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="81"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="82"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="83"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="84"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="85"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="86"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="87"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="88"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="89"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="90"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="91"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="92"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="93"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="94"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="95"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="96"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="97"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="98"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="99"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="100"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Campus"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="101"
+         IconIndex="1"
+         IconMode="0"
+         EriText="In Building"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="102"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Regional"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="103"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Community"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="104"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Business"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="105"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 1"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="106"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Zone 2"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="107"
+         IconIndex="0"
+         IconMode="0"
+         EriText="National"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="108"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Local"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="109"
+         IconIndex="0"
+         IconMode="0"
+         EriText="City"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="110"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Government"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="111"
+         IconIndex="0"
+         IconMode="0"
+         EriText="USA"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="112"
+         IconIndex="0"
+         IconMode="0"
+         EriText="State"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="113"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Resort"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="114"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Headquarters"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="115"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Personal"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="116"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Home"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="117"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Residential"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="118"
+         IconIndex="0"
+         IconMode="0"
+         EriText="University"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="119"
+         IconIndex="0"
+         IconMode="0"
+         EriText="College"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="120"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Hotel Guest"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="121"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Rental"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="122"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Corporate"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="123"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Sprint"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="124"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="125"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="126"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="127"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="128"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="129"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="130"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="131"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="132"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="133"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="134"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="135"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="136"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="137"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="138"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="139"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="140"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="141"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="142"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="143"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="144"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="145"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="146"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="147"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Premium Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="148"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="149"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Digital"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="150"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Enhanced Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="151"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="152"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Alliance Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="153"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Vision Roaming"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="154"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="155"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="156"
+         IconIndex="0"
+         IconMode="1"
+         EriText="Expanded Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="157"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="158"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="159"
+         IconIndex="2"
+         IconMode="0"
+         EriText="Premium International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="160"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="161"
+         IconIndex="0"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="162"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="163"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="164"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="165"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="166"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="167"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="168"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="169"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="170"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="171"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="172"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="173"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="174"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="175"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="176"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="177"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="178"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="179"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="180"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="181"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="182"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="183"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="184"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="185"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="186"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="187"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="188"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="189"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="190"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="191"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="192"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="193"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="194"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="195"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="196"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="197"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="198"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="199"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="200"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="201"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Ext Voice/Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="202"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="203"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="204"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Broadband"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="205"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="206"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="207"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="208"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="209"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="210"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Data Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="211"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="212"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Network"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="213"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="214"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="215"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Service"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="216"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="217"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="218"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="219"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="220"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="221"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice and Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="222"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="223"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="224"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice Ntwk"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="225"
+         IconIndex="1"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="226"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="227"
+         IconIndex="0"
+         IconMode="0"
+         EriText="Extended Voice/Data"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="228"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="229"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="230"
+         IconIndex="2"
+         IconMode="0"
+         EriText="International Services"
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="231"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="232"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="233"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="234"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="International Voice/Data"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="235"
+	  IconIndex="2"
+	  IconMode="1"
+	  EriText="Premium International"
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="236"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="237"
+	  IconIndex="0"
+	  IconMode="0"
+	  EriText=""
+	  CallPromptId="0"
+	  AlertId="0"
+	  DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="238"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+<EriInfo RoamingIndicator="239"
+         IconIndex="1"
+         IconMode="0"
+         EriText=""
+         CallPromptId="0"
+         AlertId="0"
+         DataServiceSupport="1"/>
+
+</EriFile>
diff --git a/common/Android.mk b/common/Android.mk
deleted file mode 100644
index 2667e45..0000000
--- a/common/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2013, The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := guava
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-        $(call all-Iaidl-files-under, src)
-
-LOCAL_MODULE := com.android.services.telephony.common
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/common/src/com/android/services/telephony/common/AudioMode.java b/common/src/com/android/services/telephony/common/AudioMode.java
deleted file mode 100644
index b0043ef..0000000
--- a/common/src/com/android/services/telephony/common/AudioMode.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.common;
-
-/**
- * Container class for audio modes.
- */
-public class AudioMode {
-    // These can be used as a bit mask
-    public static int EARPIECE      = 0x00000001;
-    public static int BLUETOOTH     = 0x00000002;
-    public static int WIRED_HEADSET = 0x00000004;
-    public static int SPEAKER       = 0x00000008;
-
-    public static int WIRED_OR_EARPIECE = EARPIECE | WIRED_HEADSET;
-    public static int ALL_MODES = EARPIECE | BLUETOOTH | WIRED_HEADSET | SPEAKER;
-
-    public static String toString(int mode) {
-        if ((mode & ~ALL_MODES) != 0x0) {
-            return "UNKNOWN";
-        }
-
-        StringBuffer buffer = new StringBuffer();
-        if ((mode & EARPIECE) == EARPIECE) {
-            listAppend(buffer, "EARPIECE");
-        }
-        if ((mode & BLUETOOTH) == BLUETOOTH) {
-            listAppend(buffer, "BLUETOOTH");
-        }
-        if ((mode & WIRED_HEADSET) == WIRED_HEADSET) {
-            listAppend(buffer, "WIRED_HEADSET");
-        }
-        if ((mode & SPEAKER) == SPEAKER) {
-            listAppend(buffer, "SPEAKER");
-        }
-
-        return buffer.toString();
-    }
-
-    private static void listAppend(StringBuffer buffer, String str) {
-        if (buffer.length() > 0) {
-            buffer.append(", ");
-        }
-        buffer.append(str);
-    }
-}
diff --git a/common/src/com/android/services/telephony/common/MoreStrings.java b/common/src/com/android/services/telephony/common/MoreStrings.java
deleted file mode 100644
index 5e6e4b4..0000000
--- a/common/src/com/android/services/telephony/common/MoreStrings.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.common;
-
-/**
- * Static utility methods for Strings.
- */
-public class MoreStrings {
-
-    public static String toSafeString(String value) {
-        if (value == null) {
-            return null;
-        }
-
-        // Do exactly same thing as Uri#toSafeString() does, which will enable us to compare
-        // sanitized phone numbers.
-        final StringBuilder builder = new StringBuilder();
-        for (int i = 0; i < value.length(); i++) {
-            final char c = value.charAt(i);
-            if (c == '-' || c == '@' || c == '.') {
-                builder.append(c);
-            } else {
-                builder.append('x');
-            }
-        }
-        return builder.toString();
-    }
-
-}
diff --git a/proguard.flags b/proguard.flags
index c4af490..c707f76 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -1 +1,10 @@
--verbose
+# Keep classes and methods that have the guava @VisibleForTesting annotation
+-keep @**.VisibleForTesting class *
+-keepclassmembers class * {
+@**.VisibleForTesting *;
+}
+-keep @**.NeededForTesting class *
+-keepclassmembers class * {
+@**.NeededForTesting *;
+}
+-verbose
\ No newline at end of file
diff --git a/res/layout/emergency_dialer.xml b/res/layout/emergency_dialer.xml
index 01c2f80..ee55c06 100644
--- a/res/layout/emergency_dialer.xml
+++ b/res/layout/emergency_dialer.xml
@@ -112,11 +112,16 @@
 
     </LinearLayout>
 
+    <Space
+        android:id="@+id/floating_action_button_margin_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/floating_action_button_margin_bottom"
+        android:layout_alignParentBottom="true"/>
+
     <FrameLayout
         android:id="@+id/floating_action_button_container"
         android:layout_width="@dimen/floating_action_button_width"
         android:layout_height="@dimen/floating_action_button_height"
-        android:layout_marginBottom="@dimen/floating_action_button_margin_bottom"
         android:layout_gravity="center_horizontal|bottom" >
 
         <ImageButton
diff --git a/res/layout/network_setting.xml b/res/layout/network_setting.xml
new file mode 100644
index 0000000..bfc16dc
--- /dev/null
+++ b/res/layout/network_setting.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/network_setting_content"
+             android:layout_height="match_parent"
+             android:layout_width="match_parent"/>
diff --git a/res/layout/voicemail_change_pin.xml b/res/layout/voicemail_change_pin.xml
new file mode 100644
index 0000000..b0db64b
--- /dev/null
+++ b/res/layout/voicemail_change_pin.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:layout_width="match_parent"
+  android:layout_height="match_parent"
+  android:gravity="center_horizontal"
+  android:orientation="vertical">
+  <!-- header text ('Enter Pin') -->
+  <LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="0dp"
+    android:layout_weight="1"
+    android:orientation="vertical"
+    android:paddingTop="48dp"
+    android:paddingStart="48dp"
+    android:paddingEnd="48dp">
+    <TextView
+      android:id="@+id/headerText"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center"
+      android:lines="2"
+      android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"
+      android:accessibilityLiveRegion="polite"/>
+
+    <!-- hint text ('PIN too short') -->
+    <TextView
+      android:id="@+id/hintText"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center"
+      android:lines="2" />
+
+    <!-- error text ('PIN too short') -->
+    <TextView
+      android:id="@+id/errorText"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:gravity="center"
+      android:lines="2"
+      android:textColor="@android:color/holo_red_dark"/>
+
+    <!-- Password entry field -->
+    <EditText
+      android:id="@+id/pin_entry"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"
+      android:layout_gravity="center"
+      android:gravity="center"
+      android:imeOptions="actionNext|flagNoExtractUi"
+      android:inputType="numberPassword"
+      android:textSize="24sp"/>
+  </LinearLayout>
+
+  <LinearLayout
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:gravity="end"
+    android:orientation="horizontal">
+
+    <!-- left : cancel -->
+    <Button
+      android:id="@+id/cancel_button"
+      android:layout_width="0dp"
+      android:layout_weight="1"
+      android:layout_height="wrap_content"
+      android:text="@string/change_pin_cancel_label"/>
+
+    <!-- right : continue -->
+    <Button
+      android:id="@+id/next_button"
+      android:layout_width="0dp"
+      android:layout_weight="1"
+      android:layout_height="wrap_content"
+      android:text="@string/change_pin_continue_label"/>
+
+  </LinearLayout>
+</LinearLayout>
diff --git a/res/values-af/config.xml b/res/values-af/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-af/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 89eec25..752f626 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Sellulêre data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobieldata"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Foondienste"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Noodbeller"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Foon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Vermiste stemboodskapnommer"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Geen stemboodskapnommer is op die SIM-kaart gestoor nie."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Voeg nommer by"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Stemboodskapinstellings kan slegs deur die primêre gebruiker gewysig word."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Jou SIM-kaart is oopgesluit. Jou foon sluit tans oop…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM-netwerk ontsluit PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Ontsluit"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Versoek tans netwerkontsluiting…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Netwerkaanvraag onsuksesvol ontsluit."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Netwerkontsluiting suksesvol."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Selnetwerkinstellings is nie vir hierdie gebruiker beskikbaar nie"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiele netwerkinstellings is nie vir hierdie gebruiker beskikbaar nie"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-oproepinstellings"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-oproepinstellings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-oproepinstellings"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Maak oproepe met"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Maak SIP-oproepe met"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Vra eers"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Geen netwerk beskikbaar nie"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Instellings"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Kies rekeninge"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Foonrekeninge"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Stemboodskap"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Stemboodskapdiens (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Kennisgewings"</string>
     <string name="networks" msgid="8873030692174541976">"Netwerkoperateurs"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Nooduitsendings"</string>
     <string name="call_settings" msgid="6112441768261754562">"Oproepinstellings"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Indien onbereikbaar"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nommer wanneer onbereikbaar"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Stuur aan na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Gedeaktiveer"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Af"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Jou diensverskaffer ondersteun nie die deaktivering van oproepaanstuur wanneer jou foon onbereikbaar is nie."</string>
     <string name="updating_title" msgid="6146755386174019046">"Belinstellings"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Oproepinstellings kan net deur die primêre gebruiker verander word."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Oproepinstellings kan net deur die administrateur verander word."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Instellings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Oproepinstellingsfout"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lees tans instellings…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Geen veranderinge is gemaak nie."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Kies stemboodskapdiens"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Jou diensverskaffer"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Selnetwerkinstellings"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ou PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuwe PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Wag asseblief."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Die nuwe PIN is te kort."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Die nuwe PIN is te lank."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Die nuwe PIN is te swak. \'n Sterk wagwoord moenie daaropvolgend wees of syfers bevat wat herhaal nie."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Die ou PIN pas nie."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Die nuwe PIN bevat ongeldige karakters."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Kan nie PIN verander nie"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Ongesteunde tipe boodskap, bel <xliff:g id="NUMBER">%s</xliff:g> om te luister."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobiele netwerkinstellings"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobiele netwerk"</string>
     <string name="label_available" msgid="1181658289009300430">"Beskikbare netwerke"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Soek tans…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Geen netwerke gevind nie."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Geregistreer op die netwerk."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Kies \'n netwerkoperateur"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Soek alle beskikbare netwerke"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Kies outomaties"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Kies voorkeurnetwerk outomaties"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Kies outomaties netwerk"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Netwerk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Outomatiese registrasie..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Voorkeurnetwerktipe"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Verander die netwerkbedryfsmodus"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Net GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA verkies"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Oproepe"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Netwerk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Verbeterde 4G LTE-modus"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Gevorderde oproepe"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Gebruik LTE-dienste om stem- en ander kommunikasie te verbeter (aanbeveel)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data geaktiveer"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Laat datagebruik toe"</string>
-    <string name="roaming" msgid="8871412572928323707">"Dataswerwing"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Aandag"</string>
+    <string name="roaming" msgid="7894878421600247140">"Swerwing"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Verbind met datadienste tydens swerwing"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Verbind met datadienste tydens swerwing"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Jy het dataverbinding verloor omdat jy wegbeweeg het van jou tuisnetwerk af sonder om dataswerwing weer aan te skakel."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Dit kan baie duur wees."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Laat dataswerwing toe?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datagebruik"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobiele data gebruik tussen <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Diensverskaffer"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiele data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Verkry toegang tot data deur selnetwerk te gebruik"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-oproepe"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Diensverskaffervideo-oproepe"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM//UMTS-opsies"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-opsies"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datagebruik"</string>
@@ -222,7 +248,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datatempo verminder na <xliff:g id="USED">%1$d</xliff:g> Kb/s as datagebruiklimiet oorskry word"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Meer inligting oor jou diensverskaffer se beleid oor die gebruik van selnetwerkdata"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Meer inligting oor jou draer se mobielenetwerk-datagebruikbeleid"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Seluitsending-SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Seluitsending-SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Seluitsending-SMS geaktiveer"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Voeg kontak by"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Verander kontak"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Vee kontak uit"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Bel kontak"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Voer PIN2 in"</string>
     <string name="name" msgid="7329028332786872378">"Naam"</string>
     <string name="number" msgid="7905950798349903858">"Nommer"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Verwyder belbeperking-nommer…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Belbeperking-nommer uitgevee."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN is nie opgedateer nie omdat jy \'n verkeerde PIN ingevoer het."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN is nie opgedateer nie, omdat die getal nie 20 syfers kan oorskry nie."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN is nie opgedateer nie, omdat die getal leeg is of 20 syfers oorskry."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN is nie bygewerk nie. Die PIN2 was verkeerd of die foonnommer is verwerp."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN-bewerking het misluk."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lees tans van SIM-kaart af…"</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Stemboodskapnommer onbekend"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Geen diens nie"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Gekose netwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nie beskikbaar nie"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Skakel vliegtuigmodus af om \'n oproep te maak."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Skakel selnetwerk aan, skakel vliegtuigmodus af of skakel batterybespaardermodus af om \'n oproep te maak."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Skakel vliegtuigmodus af om \'n oproep te maak."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Skakel vliegtuigmodus af of koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Verlaat noodterugbelmodus om \'n nienoodoproep te maak."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nie geregistreer op netwerk nie."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Sellulêre netwerk nie beskikbaar nie."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sellulêre netwerk is nie beskikbaar nie. Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobiele netwerk nie beskikbaar nie."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobiele netwerk is nie beskikbaar nie. Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Voer \'n geldige nommer in om \'n oproep te maak."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Kan nie bel nie."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Begin MMI-volgorde…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Oproep het misluk."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Oproep kan nie op die oomblik bygevoeg word nie."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Diens word nie gesteun nie"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Kan nie oproepe wissel nie."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Kan nie oproep skei nie."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Kan nie konferensie-oproepe doen nie."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan nie oproep verwerp nie."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan nie oproep(e) vrystel nie."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan nie oproepe aanhou nie."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktiveer Wi-Fi-oproepe om \'n oproep te maak."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Skakel tans radio aan…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen sein nie. Probeer tans weer …"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Kan nie gedurende \'n noodoproep na vliegtuigmodus verander nie."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Kan nie bel nie. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is nie \'n noodnommer nie."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Kan nie bel nie. Skakel \'n noodnommer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Gebruik sleutelbord om te bel"</string>
@@ -468,6 +499,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Voer alles in"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Voer SIM-kontakte in"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Voer in uit kontakte"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontak is ingevoer"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kon nie kontak invoer nie"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Gehoorapparate"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Skakel gehoorapparaat-versoenbaarheid aan"</string>
   <string-array name="tty_mode_entries">
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Noodterugbel-modus betree"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Noodterugbel-modus"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataverbinding gedeaktiveer"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Geen dataverbinding vir <xliff:g id="COUNT_1">%s</xliff:g> minute nie</item>
-      <item quantity="one">Geen dataverbinding vir <xliff:g id="COUNT_0">%s</xliff:g> minuut nie</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Geen dataverbinding tot <xliff:g id="COMPLETETIME">%s</xliff:g> nie"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Die foon sal <xliff:g id="COUNT_1">%s</xliff:g> minute lank in noodterugbelmodus wees. Terwyl dit in hierdie modus is, kan geen programme gebruik word wat \'n dataverbinding gebruik nie. Wil jy nou uitgaan?</item>
       <item quantity="one">Die foon sal <xliff:g id="COUNT_0">%s</xliff:g> minuut lank in noodterugbelmodus wees. Terwyl dit in hierdie modus is, kan geen programme gebruik word wat \'n dataverbinding gebruik nie. Wil jy nou uitgaan?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"kies kontak"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Stembel nie ondersteun nie"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"bel"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreer"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreer"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuele stemboodskapdiens"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Klank"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Stel PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Verander PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Luitoon en vibreer"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ingeboude SIM-kaarte"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Skakel video-oproepe aan"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Net noodoproepe"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kaart, gleuf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Toeganklikheid"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkomende Wi-Fi-oproep"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-oproep vanaf"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-oproep"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Raak weer om oop te maak"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tik weer om oop te maak"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Kon nie die boodskap dekodeer nie."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"\'n SIM-kaart het jou diens geaktiveer en jou foon se swerwingvermoëns opgedateer."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Daar is te veel aktiewe oproepe. Beëindig of voeg asseblief bestaande oproepe saam voordat jy \'n nuwe een maak."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Kan nie koppel nie, sit asseblief \'n geldige SIM-kaart in."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi-verbinding verloor. Oproep is beëindig."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Verander stemboodskap-PIN"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Gaan voort"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Kanselleer"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Bevestig jou ou PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Voer jou stemboodskap-PIN in om voort te gaan."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Stel \'n nuwe PIN op"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN moet <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> syfers wees."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Bevestig jou PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN\'s stem nie ooreen nie"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Stemboodskap-PIN is opgedateer"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kan nie PIN stel nie"</string>
 </resources>
diff --git a/res/values-am/config.xml b/res/values-am/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-am/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index feee9fa..2fc4f2a 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"የስልክ አገልግሎቶች"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"የአደጋ ጊዜደዋይ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ስልክ"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"የድምፅመልዕክት ቁጥርአመለጠ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"በSIM ካርዱ ላይምንም የድምፅመልዕክት ቁጥር አልከተቀመጠም።"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"ቁጥር አክል"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"የድምፅ መልዕክት ቅንብሮች መለወጥ የሚችሉት በቀዳሚ ተጠቃሚው ብቻ ነው።"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"የSIM ካርድዎ አልታገደም። ስልክዎ በመከፈት ላይነው..."</string>
     <string name="label_ndp" msgid="780479633159517250">"የSIM አውታረመረብ መክፈቻ ፒን"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ክፈት"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"አውታረመረብ ለማስከፈት በመጠየቅ ላይ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"የአውታረ መረብ ክፈትጥየቃአል ተሳካም።"</string>
     <string name="unlock_success" msgid="6770085622238180152">"የአውታረ መረብክፈት ተሳክቷል።"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"የተንቀሳቃሽ ስልክ አውታረ መረብ ቅንብሮች ለዚህ ተጠቃሚ አይገኙም"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"የተንቀሳቃሽ ስልክ አውታረ መረብ ቅንብሮች ቅንብሮች ለዚህ ተጠቃሚ አይገኙም"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"የGSM  ጥሪ ቅንብሮች"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"የጂኤስኤም ጥሪ ቅንብሮች (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA የጥሪ ቅንብሮች"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ከዚህ ጋር ጥሪዎችን አድርግ"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP ጥሪዎችን ከዚህ ጋር አድርግ"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"በመጀመሪያ ጠይቅ"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"የሚገኝ አውታረ መረብ የለም"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ቅንብሮች"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"መለያዎች ይምረጡ"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"የስልክ መለያዎች"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"የድምፅ መልዕክት"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"የድምጽ መልዕክት (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"ማሳወቂያዎች"</string>
     <string name="networks" msgid="8873030692174541976">"የአውታረ መረብ ትእምርተ ከዋኝ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"የአስቸኳይ አደጋ ስርጭቶች"</string>
     <string name="call_settings" msgid="6112441768261754562">"የጥሪ ቅንብሮች"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"የማልገኝ ሲሆን"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ቁጥሩሳይገኝ"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"ወደ <xliff:g id="PHONENUMBER">{0}</xliff:g>በማስተላለፍ ላይ"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ቦዝኗል"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ጠፍቷል"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ስልክህ በማይደረስበት ጊዜ የድምጽ ተያያዥ ሞደምህ  የጥሪ-ማስተላለፍን አይደግፍም።"</string>
     <string name="updating_title" msgid="6146755386174019046">"የጥሪ ቅንብሮች"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"የጥሪ ቅንብሮች በተቀዳሚው ተጠቃሚ ብቻ ሊለወጡ ይችላሉ።"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"የጥሪ ቅንብሮች በአስተዳዳሪ ተጠቃሚው ብቻ ነው ሊለወጡ የሚችሉት።"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ቅንብሮች (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"የጥሪ ቅንብሮች ስህተት"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ቅንብሮች በማንበብ ላይ..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"ምንም ለውጥ አልተደረገም።"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"የድምፅ መልዕክት አገልግሎት ምረጥ"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"የእርስዎ ድምጸ ተያያዥ ሞደም"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"የተንቀሳቃሽ ስልክ አውታረ መረብ ቅንብሮች"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"የቀድሞ ፒን"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"አዲስ ፒን"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"እባክዎ ይጠብቁ።"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"አዲሱ ፒን በጣም አጭር ነው።"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"አዲሱ ፒን በጣም ረጅም ነው።"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"አዲሱ ፒን በጣም ደካማ ነው። ጠንካራ የይለፍ ቃል ተከታታይ ቅጥልጥል ወይም ተደጋጋሚ አኃዞች ሊኖሩት አይገባም።"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"የቀድሞ ፒን አልተዛመደም።"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"አዲሱ ፒን ልክ ያልሆኑ ቁምፊዎችን ይዟል።"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"ፒን መቀየር አልተቻለም።"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"የማይደገፍ የመልዕክት አይነት፤ ለማዳመጥ ወደ <xliff:g id="NUMBER">%s</xliff:g> ይደውሉ።"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"የተንቀሳቃሽ ስልክ አውታረ መረብ ቅንብሮች"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"የተንቀሳቃሽ ስልክ አውታረ መረብ"</string>
     <string name="label_available" msgid="1181658289009300430">"የሚገኙ አውታረመረቦች"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"በመፈለግ ላይ…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ምንም አውታረመረብ አልተገኘም።"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"በአውታረ መረብ ላይ የተመዘገበ።"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"የአውታረ መረብ ከዋኝ ምረጥ"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"የሚገኙ አውታረመረቦች በሙሉ ፈልግ"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"በራስ ሰር ምረጥ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ተመራጭ አውታረ መረብን በራስ ሰር ምረጥ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"አውታረ መረብን በራስ ሰር ይምረጡ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"አውታረ መረብ"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ራስ ሰር ምዝገባ...."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"የሚመረጠው የአውታረ መረብ አይነት"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"የአውታረመረቡንመከወኛ ሁነታ ለውጥ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM ብቻ"</item>
     <item msgid="3817924849415716259">"GSM / WCDMA ተመራጭ"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"በመደወል ላይ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"አውታረ መረብ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"የተሻሻለ የ4ጂ LTE ሁነታ"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"የላቀ ጥሪ ማድረግ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"የድምፅ እና ሌሎች የመልዕክት ልውውጦችን ለማሻሻል LTE አገልግሎቶችን ይጠቀሙ (የሚመከር)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ውሂብ ነቅቷል"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"የውሂብ አጠቃቀም ፍቀድ"</string>
-    <string name="roaming" msgid="8871412572928323707">"ውሂብ በእንቅስቃሴ ላይ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ትኩረት"</string>
+    <string name="roaming" msgid="7894878421600247140">"በማዛወር ላይ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"በእንቅስቃሴ ላይ ሲሆን ወደ ውሂብ አገልግሎቶች ተያያዝ"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"በእንቅስቃሴ ላይ ሲሆን ወደ ውሂብ አገልግሎቶች ተያያዝ"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"የውሂብ ተያያዥነት የጠፋበት ምክንያት የቤትህን አውታረ መረብ እንቅስቃሴ ውሂብ በማጥፋትህ ነው።"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ከፍተኛ ክፍያዎችን ሊያስከትልብዎት ይችላል።"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"የውሂብ ዝውውር ፍቀድ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"የውሂብ አጠቃቀም"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> ጥቅም ላይ የዋለ የተንቀሳቃሽ ስልክ ውሂብ ከ<xliff:g id="ID_2">%2$s</xliff:g> መካከል"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"አገልግሎት አቅራቢ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"የተንቀሳቃሽ ስልክ አውታረ መረብን በመጠቀም ውሂብን ይድረሱበት"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"የWi-Fi ጥሪ"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"የአገልግሎት አቅራቢ የቪዲዮ ጥሪ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS አማራጮች"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA አማራጮች"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"የውሂብ አጠቃቀም"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g>ከከፍተኛው ዘሏል\n የውሂብ ደረጃ ወደ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s ዝቅ ብሏል።"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"የ<xliff:g id="USED_0">%1$d</xliff:g>٪ ዙር ሄዷል \nቀጣይ ክፍለ ጊዜ በ<xliff:g id="USED_1">%2$d</xliff:g> ቀኖች(<xliff:g id="USED_2">%3$s</xliff:g>) ይጀምራል"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"የውሂብ አጠቃቀም ወሰን ከበለጠየውሂብ ደረጃ ወደ <xliff:g id="USED">%1$d</xliff:g>Kb/s ቀንሷል።"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ተጨማሪ የአገልግሎት አቅራቢዎ የተንቀሳቃሽ ስልክ አውታረ መረብዎ ውሂብ አጠቃቀም መመሪያ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ተጨማሪ መረጃ ስለ ድምጸ ተያያዥ ሞደምዎ ተንቀሳቃሽ ስልክ አውታረ መረብዎ ውሂብ አጠቃቀም መመሪያ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"የተንቀሳቃሽ ስልክ SMS ስርጭት"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"የተንቀሳቃሽ ስልክ SMS ስርጭት"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"የ SMS ህዋስ ማሰራጫ አልነቃም"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"እውቅያዎች አክል"</string>
     <string name="menu_edit" msgid="7143003705504672374">"እውቅያ አርትዕ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"እውቅያ ሰርዝ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"እውቂያ ደውል"</string>
     <string name="get_pin2" msgid="8204677063922225311">"ፒን2 ተይብ"</string>
     <string name="name" msgid="7329028332786872378">"ስም"</string>
     <string name="number" msgid="7905950798349903858">"ቁጥር"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"በቋሚ መደወያ ቁጥር በመሰረዝ ላይ..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ቋሚ መደወያ ቁጥር ተሰርዟል።"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"የተሳሳተ ፒን ስላስገባህ FDN አልዘመነም፡፡"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"ቁጥሩ ከ20 አሀዞች በላይ መብለጥ ስለማይችል FDN አልዘመነም፡፡"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN ቁጥሩ ባዶ ስለሆነ ወይም ከ20 አኃዞች ስለሚበልጥ አልዘመነም።"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN አልዘመነም። ፒን2 ትክክል አልነበረም፣ ወይም የስልክ ቁጥሩ ተቀባይነት አላገኘም።"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ክወና አልተሳካም!"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"ከSIM ካርድ ላይ በማንበብ ላይ..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"የማይታወቅ የድምፅ መልዕክት ቁጥር"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ምንም አገልግሎት የለም"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"የተመረጠ አውታረመረብ(<xliff:g id="OPERATOR_NAME">%s</xliff:g>) የለም"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ጥሪ ለማድረግ የአውሮፕላን ሁነታን ያጥፉ።"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"የተንቀሳቃሽ ስልክ አውታረ መረብ ያብሩ፣ ጥሪ ለማድረግ የአውሮፕላን ሁነታን ወይም የባትሪ ኃይል ቆጣቢ ሁነታን ያጥፉ።"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ጥሪ ለማድረግ የአውሮፕላን ሁነታን ያጥፉ።"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ጥሪ ለማድረግ የአውሮፕላን ሁኔታን ያጥፉ ወይም ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"አስቸኳይ ያልሆነ ጥሪ ለማድረግ ከአስቸኳይ መልሰህ ደውል ሁነታ ይውጡ።"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"በአውታረ መረቡ ላይ አልተመዘገበም።"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም። ጥሪ ለማድረግ ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"የተንቀሳቃሽ አደራጅ የለም።"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም። ጥሪ ለማድረግ ከሽቦ አልባ አውታረ መረብ ጋር ያገናኙ።"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"መደወል አልተቻለም።"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"የMMI sequence…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ጥሪ አልተሳካም።"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ጥሪ በአሁኑ ጊዜ ሊታከል አይችልም።"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"አገልግሎት አይደገፍም"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ጥሪዎችን መቀያየር አልተቻለም።"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ጥሪን መለየት አልተቻለም።"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ለስብሰባ ጥሪዎች አልተቻለም።"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ጥሪውን መዝጋት አልተቻለም።"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ጥሪ(ዎች)ን መልቀቅ አልተቻለም።"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ጥሪዎችን መያዝ አልተቻለም።"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ጥሪ ለማድረግ ወደ ሽቦ አልባ አውታረ መረብ ያገናኙ።"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ጥሪ ለማድረግ Wi-Fi ጥሪን ያንቁ።"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"የአደጋ ጊዜ ጥሪ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ሬዲዮ ክፈት"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ምንም አገልግሎት የለም። ዳግም በመሞከር ላይ…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"በአደጋ ጥሪ ወቅት የአውሮፕላን ሁነታ መግባት አይችልም።"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"መደወል አልተቻለም። <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> የአስቸኳይ አደጋ ቁጥር አይደለም።"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"መደወል አልተቻለም። ወደ የአስቸኳይ አደጋ ቁጥር ይደውሉ።"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ለመደወል የሰሌዳ ቁልፍ ተጠቀም"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"ሁሉንም አስመጣ"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"የSIM ዕውቂያዎች አስመጣ"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"ከዕውቂያዎች አስገባ"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"የመጣ እውቂያ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"እውቂያን ማስመጣት አልተቻለም"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"ማዳመጫ መርጃዎች"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"የመስሚያ መርጃ ተጓዳኝአብራ"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"የመስሚያ መርጃ ተጓዳኝ አብራ"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY ጠፍቷል"</item>
     <item msgid="3971695875449640648">"TTY ሙሉ"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"የአደጋጊዜ ተዘዋዋሪ ጥሪ ሁነታ ገብቷል"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"የአደጋጊዜ ተዘዋዋሪጥሪ ሁነታ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"የውሂብ ተያያዥነት አልነቃም"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ምንም የውሂብ ተያያዥነት የለም</item>
-      <item quantity="other">ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ምንም የውሂብ ተያያዥነት የለም</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"እሰከ <xliff:g id="COMPLETETIME">%s</xliff:g> የውሂብ ግንኙነት የለም"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። በዚህ ሁነታ ላይ በሚሆንበት ጊዜ የውሂብ ግንኙነትን የሚጠቀሙ ማናቸውም መተግበሪያዎች ጥቅም ላይ ሊውሉ አይችሉም። አሁን መውጣት ይፈልጋሉ?</item>
       <item quantity="other">ስልኩ በድንገተኛ ጥሪ መልሶ መደወያ ሁነታ ለ <xliff:g id="COUNT_1">%s</xliff:g> ደቂቃዎች ይቆያል። በዚህ ሁነታ ላይ በሚሆንበት ጊዜ የውሂብ ግንኙነትን የሚጠቀሙ ማናቸውም መተግበሪያዎች ጥቅም ላይ ሊውሉ አይችሉም። አሁን መውጣት ይፈልጋሉ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"ዕውቂያ ምረጥ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"የድምፅ ጥሪ አይታገዝም"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ደውል"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ንዘር"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ንዘር"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ምስላዊ የድመጽ መልዕከት"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ድምፅ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"ፒን ያዘጋጁ"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ፒን ቀይር"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"የደወል ቅላጼ እና ንዘረት"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"አብሮገነብ ሲም ካርዶች"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"የቪዲዮ ጥሪ አብራ"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"የአደጋ ጥሪዎችን ብቻ ለማድረግ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM ካርድ፣ ማስገቢያ ቀዳዳ፦ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ተደራሽነት"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ገቢ የWi-Fi ጥሪ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"የWi-Fi ጥሪ ከ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"የWi-Fi ጥሪ"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ለመክፈት ዳግም ይንኩ"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ለመክፈት ዳግም ነካ ያድርጉ"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"መልዕክቱን በማመሳጠር ላይ ስህተት ነበር።"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"አንድ ሲም ካርድ አገልግሎትዎን ገቢር አድርጎታል፣ እንዲሁም የስልክዎን የማስተላለፍ ችሎታዎችን አዘምኗል።"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"እጅግ በጣም ብዙ ንቁ ጥሪዎች አሉ። እባክዎ አዲስ ከማስቀመጥዎ በፊት ያሉትን ጥሪዎች ይጨርሱ ወይም ያዋህዱ።"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"መገናኘት አልተቻለም፣ እባክዎ ትክክል የሆነ SIM ካርድ ያስገቡ።"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"የWi-Fi ግንኙነት ጠፍቷል። ጥሪ አብቅቷል።"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"የድምፅ መልዕክት ፒን ለውጥ"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ቀጥል"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ይቅር"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"እሺ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"የድሮውን ፒን ያረጋግጡ"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ለመቀጠል የድምፅ መልዕክት ፒንዎን ያስገቡ።"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"አዲስ ፒን ያዘጋጁ"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ፒን ከ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> አኃዞች መሆን አለበት።"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ፒንዎን ያረጋግጡ"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"ፒኖች አይዛመዱም"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"የድምፅ መልዕክት ፒን ዘምኗል"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ፒን ማዘጋጀት አልተቻለም"</string>
 </resources>
diff --git a/res/values-ar/config.xml b/res/values-ar/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ar/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7dbe686..73302e7 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"بيانات شبكة الجوّال"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"بيانات الجوال"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"خدمات الهاتف"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"طالب الطوارئ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"الهاتف"</string>
@@ -29,7 +29,7 @@
     <string name="ussdRunning" msgid="485588686340541690">"‏جارٍ تشغيل رمز USSD..."</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"‏تم إلغاء كود MMI"</string>
     <string name="cancel" msgid="5044513931633602634">"إلغاء"</string>
-    <string name="enter_input" msgid="1810529547726803893">"‏يجب أن تتراوح حروف رسالة USSD بين <xliff:g id="MIN_LEN">%d</xliff:g> و<xliff:g id="MAX_LEN">%d</xliff:g>. الرجاء إعادة المحاولة."</string>
+    <string name="enter_input" msgid="1810529547726803893">"‏يجب أن تتراوح حروف رسالة USSD بين <xliff:g id="MIN_LEN">%d</xliff:g> و<xliff:g id="MAX_LEN">%d</xliff:g>. يُرجى إعادة المحاولة."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"إدارة مكالمة جماعية"</string>
     <string name="ok" msgid="3811371167865772377">"موافق"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"السماعة"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"رقم البريد الصوتي مفقود"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"‏لم يتم تخزين رقم بريد صوتي على شريحة SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"إضافة رقم"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"يمكن تعديل إعدادات البريد الصوتي عن طريق المستخدم الأساسي فقط."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"‏تم إلغاء حظر شريحة SIM. جارٍ إلغاء تأمين الهاتف..."</string>
     <string name="label_ndp" msgid="780479633159517250">"‏رمز PIN لإلغاء تأمين شبكة SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"إلغاء تأمين"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"جارٍ طلب إلغاء تأمين الشبكة..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"لم ينجح طلب إلغاء تأمين الشبكة."</string>
     <string name="unlock_success" msgid="6770085622238180152">"نجح إلغاء تأمين الشبكة."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"لا تتوفّر إعدادات شبكة الجوّال لهذا المستخدم"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"لا تتوفّر إعدادات شبكة الجوّال للمستخدم الحالي."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏إعدادات اتصال نظام GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"‏إعدادات اتصال GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏إعدادات اتصال CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"إجراء المكالمات باستخدام"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"‏إجراء اتصالات SIP باستخدام"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"السؤال أولاً"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"لا تتوفر أي شبكة"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"الإعدادات"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"اختيار الحسابات"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"حسابات الهاتف"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"البريد الصوتي"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"البريد الصوتي (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"الإشعارات"</string>
     <string name="networks" msgid="8873030692174541976">"مشغلو الشبكة"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"عمليات البث في حالات الطوارئ"</string>
     <string name="call_settings" msgid="6112441768261754562">"إعدادات الاتصال"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"عند عدم الوصول"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"الرقم عند عدم الوصول"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"إعادة التوجيه إلى <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"معطّل"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"إيقاف"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"لا يتيح مشغل شبكة الجوال تعطيل اعادة توجيه المكالمة عند عدم التمكن من الوصول إلى هاتفك."</string>
     <string name="updating_title" msgid="6146755386174019046">"إعدادات الاتصال"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"لا يمكن تغيير إعدادات المكالمات إلا بواسطة المستخدم الأساسي."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"لا يمكن تغيير إعدادات المكالمات إلا بواسطة المستخدم الإداري."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"الإعدادات (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"خطأ في إعدادات الاتصال"</string>
     <string name="reading_settings" msgid="1920291699287055284">"جارٍ قراءة الإعدادات..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"لم يتم إجراء أية تغييرات."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"اختيار خدمة البريد الصوتي"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"مشغل شبكة الجوّال"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"إعدادات شبكة الجوّال"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"رقم التعريف الشخصي القديم"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"رقم التعريف الشخصي الجديد"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"يُرجى الانتظار."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"رقم التعريف الشخصي الجديد قصير جدًا."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"رقم التعريف الشخصي الجديد طويل جدًا."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"رقم التعريف الشخصي الجديد ضعيف جدًا. لا ينبغي أن تكون كلمة المرور القوية عبارة عن تسلسل متتالٍ أو أرقام متكررة."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"رقم التعريف الشخصي القديم غير مُطابِق."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"رقم التعريف الشخصي الجديد يحتوي على أحرف غير صالحة."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"غير قادر على تغيير رقم التعريف الشخصي"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"نوع الرسالة غير معتمد، اتصل على <xliff:g id="NUMBER">%s</xliff:g> لسماعها."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"إعدادات شبكة الجوال"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"شبكة الجوّال"</string>
     <string name="label_available" msgid="1181658289009300430">"الشبكات المتاحة"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"جارِ البحث…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"لم يتم العثور على شبكات."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"مسجل على الشبكة."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"اختر مشغل شبكة جوال"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"البحث عن كل الشبكات المتاحة"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"اختيار تلقائي"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"اختيار الشبكة المفضلة تلقائيًا"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"تحديد الشبكة تلقائيًا"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"الشبكة"</string>
     <string name="register_automatically" msgid="6017849844573519637">"التسجيل التلقائي..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"نوع الشبكة المفضل"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"تغيير وضع تشغيل الشبكة"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"‏نظام GSM فقط"</item>
     <item msgid="3817924849415716259">"‏GSM/WCDMA المفضل"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"جارٍ الاتصال"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"الشبكة"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"‏وضع 4G LTE المحسّن"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"اتصال متقدم"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"‏استخدام خدمات LTE لتحسين الصوت والاتصالات الأخرى (مستحسن)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"تم تمكين البيانات"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"السماح باستخدام البيانات"</string>
-    <string name="roaming" msgid="8871412572928323707">"تجوال البيانات"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"تنبيه"</string>
+    <string name="roaming" msgid="7894878421600247140">"تجوال"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"اتصال بخدمات البيانات عند التجوال"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"اتصال بخدمات البيانات عند التجوال"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"لقد فقدت اتصال البيانات نظرًا لأنك أوقفت تشغيل تجوال البيانات بشبكتك الرئيسية."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"قد يكلف ذلك رسومًا مرتفعة."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"السماح بتجوال البيانات؟"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"استخدام البيانات"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"تم استخدام <xliff:g id="ID_1">%1$s</xliff:g> من بيانات الجوال خلال الفترة بين <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"مشغل شبكة الجوّال"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"بيانات الجوال"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"الوصول إلى البيانات باستخدام شبكة الجوال"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"‏الاتصال عبر Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"مكالمة فيديو باستخدام مشغل شبكة الجوال"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"‏خيارات نظام GSM/النظام العالمي لاتصالات الجوال عن بعد (UMTS)"</string>
     <string name="cdma_options" msgid="4016822858172249884">"‏خيارات CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"استخدام البيانات"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> تم تعدي الحد الأقصى\nتم تخفيض معدل البيانات إلى <xliff:g id="USED_1">%2$d</xliff:g> كيلوبايت/ثانية"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"انقضت نسبة <xliff:g id="USED_0">%1$d</xliff:g>٪ من الدورة\nتبدأ الفترة التالية خلال <xliff:g id="USED_1">%2$d</xliff:g> يوم (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"تخفيض معدل البيانات إلى <xliff:g id="USED">%1$d</xliff:g> كيلوبايت/ثانية إذا تم تعدي حد البيانات"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"مزيد من المعلومات حول سياسة استخدام بيانات الشبكة لمشغل شبكة الجوّال"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"مزيد من المعلومات حول سياسة استخدام بيانات شبكة جوال مشغل شبكة الجوال"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"‏الرسائل القصيرة SMS لبث الخلية"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"‏الرسائل القصيرة SMS لبث الخلية"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"‏تم تمكين الرسائل القصيرة SMS لبث الخلية"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"إضافة جهة اتصال"</string>
     <string name="menu_edit" msgid="7143003705504672374">"تعديل جهة الاتصال"</string>
     <string name="menu_delete" msgid="3977150783449642851">"حذف جهة الاتصال"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"الاتصال بجهة الاتصال"</string>
     <string name="get_pin2" msgid="8204677063922225311">"‏اكتب رقم تعريف شخصي PIN2"</string>
     <string name="name" msgid="7329028332786872378">"الاسم"</string>
     <string name="number" msgid="7905950798349903858">"الرقم"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"جارٍ حذف رقم الاتصال الثابت..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"تم حذف رقم الاتصال الثابت."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"‏لم يتم تحديث FDN لأنك كتبت رقم تعريف شخصي غير صحيح."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"‏لم يتم تحديث FDN لأن العدد لا يمكن أن يتجاوز 20 رقمًا."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"‏لم يتم تحديث FDN نظرًا لأن الرقم فارغ أو يتجاوز طوله 20 رقمًا."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"‏لم يتم تحديث FDN. رقم PIN2 غير صحيح، أو تم رفض رقم الهاتف."</string>
     <string name="fdn_failed" msgid="540018079008319747">"‏أخفقت عملية FDN!"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"‏جارٍ القراءة من شريحة SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"رقم البريد الصوتي غير معروف"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"لا خدمة"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"الشبكة المحددة (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) غير متاحة"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"عليك إيقاف وضع الطائرة لإجراء مكالمة."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"شغَّل شبكة الجوال، ثم أوقف تشغيل وضع الطائرة أو أوقف تشغيل وضع توفير شحن البطارية لإجراء مكالمة."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"عليك إيقاف وضع الطائرة لإجراء مكالمة."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"عليك إيقاف وضع الطائرة أو الاتصال بشبكة لاسلكية لإجراء مكالمة."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"ينبغي الخروج من وضع معاودة الاتصال بالطوارئ لإجراء مكالمة غير طارئة."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"غير مسجل على الشبكة."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"شبكة الجوّال غير متاحة."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"شبكة الجوّال ليست متوفرة. اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"شبكة الجوال غير متاحة."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"شبكة الجوّال ليست متوفرة. اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"لإجراء مكالمة، أدخل رقمًا صالحًا."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"يتعذر الاتصال."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"‏جارٍ بدء تسلسل MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"أخفقت المكالمة."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"لا يمكن إضافة مكالمة في الوقت الحالي."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"الخدمة ليست متوفرة"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"يتعذر تبديل المكالمات."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"يتعذر فصل المكالمة."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"يتعذر إجراء مكالمات جماعية."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"يتعذر رفض المكالمة."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"يتعذر تحرير المكالمات."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"يتعذر وضع المكالمات قيد الانتظار."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"‏يمكنك تمكين اتصال Wi-Fi لإجراء مكالمة."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"مكالمة الطوارئ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"جارٍ تشغيل اللاسلكي..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"لا تتوفر خدمة. جارٍ إعادة المحاولة…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"لا يمكن دخول وضع الطائرة أثناء إجراء مكالمة طوارئ."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"يتعذر الاتصال. لا يعد <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> رقم طوارئ."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"يتعذر الاتصال. يمكنك طلب رقم طوارئ."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"استخدام لوحة المفاتيح للطلب"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"استيراد الكل"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"‏استيراد جهات اتصال شريحة SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"استيراد من جهات الاتصال"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"تم استيراد جهة اتصال"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"تعذّر استيراد جهة اتصال"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"أدوات السمع المساعدة"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"تشغيل التوافق مع أداة السمع"</string>
   <string-array name="tty_mode_entries">
@@ -486,7 +519,7 @@
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"يُجري الهاتف تنشيطًا لخدمة بيانات الجوّال.\n\nقد يستغرق هذا الأمر ما يصل إلى 5 دقائق."</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"هل تريد تخطي التنشيط؟"</string>
     <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"‏إذا تخطيت التنشيط، فلن تتمكن من إجراء مكالمات أو الاتصال بشبكات بيانات الجوال (ومع ذلك، يمكنك الاتصال بشبكات Wi-Fi). إلى أن تنشط هاتفك، ستتم مطالبتك بتنشيطه في كل مرة تشغله فيها."</string>
-    <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"تخطٍ"</string>
+    <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"تخطي"</string>
     <string name="ota_activate" msgid="1368528132525626264">"تنشيط"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"تم تنشيط الهاتف."</string>
     <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"مشكلة في التنشيط"</string>
@@ -504,14 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"تم الدخول إلى وضع هاتف معاودة الاتصال بالطوارئ"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"وضع هاتف معاودة الاتصال بالطوارئ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"تم تعطيل اتصال البيانات"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="zero">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق</item>
-      <item quantity="two">لن يتوفر اتصال بالبيانات لمدة دقيقتين (<xliff:g id="COUNT_1">%s</xliff:g>)</item>
-      <item quantity="few">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقائق</item>
-      <item quantity="many">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> دقيقة</item>
-      <item quantity="other">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق</item>
-      <item quantity="one">لن يتوفر اتصال بالبيانات لمدة <xliff:g id="COUNT_0">%s</xliff:g> دقيقة</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"لا يوجد اتصال بيانات حتى <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="zero">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة <xliff:g id="COUNT_1">%s</xliff:g> من الدقائق. وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
       <item quantity="two">سيكون الهاتف في وضع الرد على مكالمة الطوارئ لمدة دقيقتين (<xliff:g id="COUNT_1">%s</xliff:g>). وأثناء هذا الوضع، لا يمكن استخدام أي تطبيقات تستخدم اتصال بيانات. هل تريد الخروج الآن؟</item>
@@ -543,10 +569,9 @@
     <string name="selectContact" msgid="781975788478987237">"تحديد جهة اتصال"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"الاتصال الصوتي غير معتمد"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"طلب"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"الاهتزاز"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"الاهتزاز"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"بريد صوتي مرئي"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"الصوت"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"تعيين رقم التعريف الشخصي"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"تغيير رقم التعريف الشخصي"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"نغمة الرنين والاهتزاز"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"‏بطاقات SIM مدمجة"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"تشغيل مكالمات الفيديو"</string>
@@ -557,9 +582,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"مكالمات الطوارئ فقط"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"‏شريحة SIM، المنفذ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"إمكانية الوصول"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"‏مكالمة واردة عبر Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"‏مكالمة Wi-Fi من"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"‏مكالمة عبر Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"المس مرة أخرى للفتح"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"انقر مرة أخرى للفتح."</string>
     <string name="message_decode_error" msgid="3456481534066924855">"حدث خطأ أثناء فك ترميز الرسالة."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"‏نشطت شريحة SIM خدمتك وحدّثت إمكانات التجوال لهاتفك."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"هناك الكثير من المكالمات النشطة. يرجى إنهاء أو دمج المكالمات الموجودة قبل إجراء مكالمة جديدة."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"‏يتعذر الاتصال، يُرجى إدخال شريحة SIM صالحة."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"‏تم فقدان اتصال Wi-Fi. تم إنهاء المكالمة."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"تغيير رقم التعريف الشخصي للبريد الصوتي"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"متابعة"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"إلغاء"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"موافق"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"تأكيد رقم التعريف الشخصي القديم"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"أدخل رقم التعريف الشخصي لبريدك الصوتي للمتابعة."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"تعيين رقم تعريف شخصي جديد"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ينبغي لرقم التعريف الشخصي أن يتكون من <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> أرقام."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"تأكيد رقم التعريف الشخصي"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"أرقام التعريف الشخصي غير متطابقة"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"تمّ تحديث رقم التعريف الشخصي للبريد الصوتي"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"يتعذر تعيين رقم التعريف الشخصي"</string>
 </resources>
diff --git a/res/values-az-rAZ/arrays.xml b/res/values-az/arrays.xml
similarity index 100%
rename from res/values-az-rAZ/arrays.xml
rename to res/values-az/arrays.xml
diff --git a/res/values-az/config.xml b/res/values-az/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-az/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az/strings.xml
similarity index 86%
rename from res/values-az-rAZ/strings.xml
rename to res/values-az/strings.xml
index 2c84552..978e834 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobil məlumatlar"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobil Data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon Xidmətləri"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Təcili Nömrəyığan"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Səsli poçt nömrəsi çatışmır"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartda heç bir səsli poçt nömrəsi yoxdur."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Nömrə əlavə edin"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Səsli E-məktub Ayarları yalnız Əsas İstifadəçi tərəfindən dəyişdirilə bilər."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM kartınızın kilidi açıldı. Telefonunuzun da kilidi açılır…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM şəbəkəni kiliddən çıxaran PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Kilidi aç"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Şəbəkə kilidinin açılması tələbi göndərilir…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Şəbəkəni kiliddən çıxarmaq sorğusu uğursuzdur."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Şəbəkə uğurla kiliddən çıxarıldı."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobil şəbəkə ayarları bu istifadəçi üçün əlçatan deyil"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobil şəbəkə ayarları bu istifadəçi üçün əlçatan deyil"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM zəng parametrləri"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM zəng ayarları (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA zəng parametrləri"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Zənglər et"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP zəngləri et"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Əvvəlcə soruş"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Şəbəkə əlçatan deyil"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Parametrlər"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Hesabları seç"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefon hesabları"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Səsli poçt"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Səsli məktub (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"SP:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Bildirişlər"</string>
     <string name="networks" msgid="8873030692174541976">"Şəbəkə operatorları"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Təcili yayımlar"</string>
     <string name="call_settings" msgid="6112441768261754562">"Zəng parametrləri"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Zəng çatmadıqda"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Əlçatmaz olarkən yönləndiriləcək nömrə"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> nömrəsinə yönləndirilir"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Deaktiv"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Deaktiv"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Sizin mobil daşıyıcı telefon əlçatmaz olduğu zaman zəng yönləndirməni deaktiv etməyi dəstəkləmir."</string>
     <string name="updating_title" msgid="6146755386174019046">"Zəng parametrləri"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Zəng parametrləri yalnız əsas istifadəçi tərəfindən dəyişdirilə bilər."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Zəng parametrləri yalnız admin olan istifadəçi tərəfindən dəyişdirilə bilər."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ayarlar ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Zəng parametrləri xətası"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Oxuma parametrləri ..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Heç bir dəyişiklik edilmədi."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Səsli poçt xidmətinizi seçin"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatorunuz"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobil şəbəkə ayarları"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Köhnə PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yeni PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Lütfən, gözləyin."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yeni PIN kod çox qısadır."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yeni PIN kod çox uzundur."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yeni PIN kod çox zəifdir. Güclü parol ardıcıllıqdan və ya təkrarlanan rəqəmlərdən ibarət olmamalıdır."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Köhnə PIN kod uyğun gəlmir."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Yeni PIN kod yanlış simvollardan ibarətdir."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN kodu dəyişmək mümkün olmadı"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Dəstəklənməyən mesaj növü, qulaq asmaq üçün <xliff:g id="NUMBER">%s</xliff:g> nömrəsinə zəng edin."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobil şəbəkə parametrləri"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobil şəbəkə"</string>
     <string name="label_available" msgid="1181658289009300430">"Əlçatımlı şəbəkələr"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Axtarılır..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Şəbəkə tapılmadı"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Şəbəkədə qeydiyyatdan keçib."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Şəbəkə operatoru seçin"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Bütün əlçatımlı şəbəkələri axtarın"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Avtomatik seçin"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Tərcih olunmuş şəbəkəni avtomatik seçin"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Avtomatik olaraq şəbəkə seçin"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Şəbəkə"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Avtomatik qeydiyyat ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tərcih edilən şəbəkə növü"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Şəbəkə əməliyyat rejimini dəyişin"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Yalnız GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA\'ya üstünlük verilib"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Zəng edilir"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Şəbəkə"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Təkmil 4G LTE Rejimi"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Qabaqcıl Zəng"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Səs və digər kommunikasiyaları təkmilləşdirmək üçün LTE xidmətlərindən istifadə edin (tövsiyə olunur)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data aktivdir"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Data istifadəsinə icazə verin"</string>
-    <string name="roaming" msgid="8871412572928323707">"Data rouminq"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Diqqət"</string>
+    <string name="roaming" msgid="7894878421600247140">"Rominq"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Siz deaktiv edilmiş rouminq ilə daxili şəbəkəni tərk etdiyiniz üçün data bağlantısını itirdiniz."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Sizə əhəmiyyətli xərclər tətbiq edilə bilər."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Məlumat rominqinə icazə verilsin?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Data istifadəsi"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> ərzində <xliff:g id="ID_1">%1$s</xliff:g> mobil data istifadə edildi"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Mobil Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobil Data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Mobil şəbəkədən istifadə edərək dataya daxil olun"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi zəngi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operator video zəngi"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Seçimlər"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Seçimlər"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Data istifadəsi"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maksimal aşılıb\nData göstəricisi <xliff:g id="USED_1">%2$d</xliff:g> Kb/saniyəyə qədər azalıb"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ dövr keçib\nNövbəti period <xliff:g id="USED_1">%2$d</xliff:g> gün ərzində başlayır (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Əgər data istifadə limiti aşılsa, data göstəricisi <xliff:g id="USED">%1$d</xliff:g> Kb/saniyəyə qədər azalır"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Operatorun mobil şəbəkə data istifadə siyasəti haqqında ətraflı məlumat"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Karrierinizin mobil şəbəkə data istifadə siyasəti haqqında daha çox məlumat"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS Hücrə Yayımı"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Hücrə Yayım SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS Hücrə Yayımı aktivdir"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Kontakt əlavə edin"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Kontakta düzəliş edin"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Kontaktı sil"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Kontaktı yığın"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 daxil edin"</string>
     <string name="name" msgid="7329028332786872378">"Ad"</string>
     <string name="number" msgid="7905950798349903858">"Nömrə"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Sabit yığım nömrəsi silinir…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Sabit yığım nömrəsi silindi."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Yanlış PIN daxil etdiyiniz üçün FDN güncəlləşdirilmədi."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN güncəlləşdirilmədi, çünki nömrə 20 rəqəmdən çox ola bilməz."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Nömrə boş olduğundan və ya 20 rəqəmi keçdiyindən FDN yenilənmədi."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN güncəlləşdirilmədi. PIN2 yanlış idi və ya telefon nömrəsi rədd edildi."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN əməliyyatı aılnmadı."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM kart oxunur ..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Səsli poçt nömrəsi naməlumdur"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Xidmət yoxdur"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Seçilmiş (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) şəbəkə əlçatmazdır"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Zəng etmək üçün təyyarə rejimini deaktiv edin."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Zəng etmək üçün mobil şəbəkəni aktiv edin, uçuş rejimini deaktiv edin və ya enerji qənaətini deaktiv edin."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Zəng etmək üçün təyyarə rejimini deaktiv edin."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Zəng etmək üçün təyyarə rejimini deaktiv edin və ya Wi-Fi şəbəkəsinə qoşulun."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Qeyri-fövqəladə zəng etmək üçün fövqəladə zəng rejimindən çıxın."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Şəbəkədə qeydə alınmayıb."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil şəbəkə əlçatan deyil"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobil şəbəkə əlçatmazdır. Zəng etmək üçün Wi-Fi şəbəkəsinə qoşulun."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobil şəbəkə əlçatımlı deyil."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobil şəbəkə əlçatmazdır. Zəng etmək üçün Wi-Fi şəbəkəsinə qoşulun."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Zəng etmək mümkün deyil."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI başlanma ardıcıllığı…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Zəng alınmadı."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hazırda çağrı edilə bilməz."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Xidmət dəstəklənmir"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Zəngləri keçirmək mümkün deyil."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Zəngi ayırmaq mümkün deyil."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Zənglərin konfransı mümkün deyil."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Zəngi rədd etmək mümkün deyil."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Zəngləri buraxmaq mümkün deyil."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Zənglər saxlanıla bilməz."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Zəng etmək üçün Wi-Fi şəbəkəsinə qoşulun."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Zəng etmək üçün Wi-Fi zəngini dəyişdirin."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Təcili zəng"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yandırılır ..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Xidmət yoxdur. Yenidən cəhd edilir…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Fövqəladə zəng zamanı təyyarə rejimini daxil etmək mümkün deyil."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Zəng etmək mümkün deyil. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> fövqəladə nömrə deyil."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Zəng etmək mümkün deyil. Fövqəladə nömrəni yığ."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Yığmaq üçün klaviatura istifadə edin"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Hamısını import edin"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM kontaktlar import edilir"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Kontaktlardan import edin"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Idxal olunmuş kontakt"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontakt idxalı uğursuz oldu"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Eşitmə yardımı"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Eşitmə yardımı uyğunluğunu aktivləşdirin"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Təcili Geriyə Zəng Rejimi Daxil Edildi"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Təcisi Geriyə Zəng Rejimi"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data bağlantısı deaktiv edildi"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> dəqiqə ərzində məlumat bağlantısı yoxdur</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> dəqiqə ərzində məlumat bağlantısı yoxdur</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> vaxtına qədər data bağlantısı yoxdur"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefon <xliff:g id="COUNT_1">%s</xliff:g> dəqiqə Fövqəladə Cavab Zəngi rejimində olacaq. Bu rejimdə olarkən məlumat bağlantısından istifadə edən heç bir proqram istifadə edilə bilməz. İndi çıxmaq istəyirsiniz?</item>
       <item quantity="one">Telefon <xliff:g id="COUNT_0">%s</xliff:g> dəqiqə Fövqəladə Cavab Zəngi rejimində olacaq. Bu rejimdə olarkən məlumat bağlantısından istifadə edən heç bir proqram istifadə edilə bilməz. İndi çıxmaq istəyirsiniz?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"kontakt seçin"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Səsli zəng dəstəklənmir"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"Yığ"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrasiya"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrasiya"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizual Səsli Mesaj"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Səs"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN kodu ayarlayın"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN kodu dəyişin"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zəng səsi &amp; Vibrasiya"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Daxili SIM kartlar"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Video çağrını aktivləşdirin"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Yalnız təcili zəng"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kart, yuva: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Münasiblik"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Gələn Wi-Fi zəngi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi zəngi"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi zəng"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Yenidən açmaq üçün toxunun"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Açmaq üçün yenidən tıklayın"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Mesaj dekod edilən zaman xəta oldu."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kart xidmətinizi aktivləşdirdi və telefonunuzun rominq imkanlarını güncəlləşdi."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Burada həddindən çox aktiv zəng var. Yeni birini yerləşdirmək üçün mövcud zəngləri sonlandırın və ya birləşdirin."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Qoşulmaq olmadı, etibarlı SİM kart daxil edin."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi bağlantısı kəsildi. Zəng başa çatdı."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Səsli poçtun PIN kodunu dəyişin"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Davam edin"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Ləğv edin"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Ok"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Köhnə PIN kodu təsdiq edin"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Davam etmək üçün səsli poçtun PIN kodunu daxil edin"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Yeni PIN kodu təyin edin"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> rəqəm olmalıdır."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PİN kodunuzu təsdiq edin"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN kodlar üst-üstə düşmür"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Səsli poçtun PIN kodu yeniləndi"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN kodu ayarlamaq olmur"</string>
 </resources>
diff --git a/res/values-ky-rKG/arrays.xml b/res/values-b+sr+Latn/arrays.xml
similarity index 85%
copy from res/values-ky-rKG/arrays.xml
copy to res/values-b+sr+Latn/arrays.xml
index ebaa329..ff6cd57 100644
--- a/res/values-ky-rKG/arrays.xml
+++ b/res/values-b+sr+Latn/arrays.xml
@@ -18,9 +18,9 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string-array name="preferred_network_mode_choices_world_mode">
-    <item msgid="3391522821603584785">"Глобалдуу"</item>
-    <item msgid="6753774959494729275">"LTE / CDMA"</item>
-    <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
+    <item msgid="3391522821603584785">"Globalno"</item>
+    <item msgid="6753774959494729275">"LTE/CDMA"</item>
+    <item msgid="8658695584186942227">"LTE/GSM/UMTS"</item>
   </string-array>
   <string-array name="preferred_network_mode_values_world_mode">
     <item msgid="8390941159766263625">"10"</item>
diff --git a/res/values-b+sr+Latn/config.xml b/res/values-b+sr+Latn/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-b+sr+Latn/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..d9a7486
--- /dev/null
+++ b/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Podaci za mobilne uređaje"</string>
+    <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonske usluge"</string>
+    <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Hitni pozivi"</string>
+    <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Lista brojeva za fiksno biranje"</string>
+    <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
+    <string name="private_num" msgid="6713286113000232309">"Privatan broj"</string>
+    <string name="payphone" msgid="4793877574636445118">"Telefonska govornica"</string>
+    <string name="onHold" msgid="9035493194749959955">"Na čekanju"</string>
+    <string name="mmiStarted" msgid="6347869857061147003">"Pokrenut je MMI kôd."</string>
+    <string name="ussdRunning" msgid="485588686340541690">"USSD kôd je pokrenut…"</string>
+    <string name="mmiCancelled" msgid="2771923949751842276">"MMI kôd je otkazan"</string>
+    <string name="cancel" msgid="5044513931633602634">"Otkaži"</string>
+    <string name="enter_input" msgid="1810529547726803893">"USSD poruka mora da ima između <xliff:g id="MIN_LEN">%d</xliff:g> i <xliff:g id="MAX_LEN">%d</xliff:g> znakova. Probajte ponovo."</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Upravljanje konferencijskim pozivom"</string>
+    <string name="ok" msgid="3811371167865772377">"Potvrdi"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Zvučnik"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Slušalica telefona"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Žičane slušalice"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Želite li da pošaljete sledeće tonove?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Tonovi slanja\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Pošalji"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Da"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Ne"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Zamenite džoker znak sa"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj za govornu poštu"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Nije uskladišten nijedan broj govorne pošte na SIM kartici."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
+    <!-- no translation found for voice_number_setting_primary_user_only (6596604364907022416) -->
+    <skip />
+    <string name="puk_unlocked" msgid="2284912838477558454">"Vaša SIM kartica je odblokirana. Telefon se otključava..."</string>
+    <string name="label_ndp" msgid="780479633159517250">"PIN za otključavanje mreže na SIM kartici"</string>
+    <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Otključaj"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Odbaci"</string>
+    <string name="requesting_unlock" msgid="6412629401033249351">"Traženje otključavanja mreže"</string>
+    <string name="unlock_failed" msgid="6490531697031504225">"Neuspešan zahtev za zaključavanje mreže."</string>
+    <string name="unlock_success" msgid="6770085622238180152">"Uspešno otključavanje mreže"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Podešavanja mobilne mreže nisu dostupna za ovog korisnika"</string>
+    <string name="labelGSMMore" msgid="5930842194056092106">"Podešavanja GSM poziva"</string>
+    <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Podešavanja GSM poziva (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA podešavanja poziva"</string>
+    <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Podešavanja CDMA poziva (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Nazivi pristupnih tačaka"</string>
+    <string name="settings_label" msgid="3876743539816984008">"Mrežna podešavanja"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Nalozi za pozivanje"</string>
+    <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Upućujte pozive pomoću"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Upućujte SIP pozive pomoću"</string>
+    <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Prvo pitaj"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Mreža nije dostupna"</string>
+    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Podešavanja"</string>
+    <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Izaberite naloge"</string>
+    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Nalozi na telefonu"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Dodaj SIP nalog"</string>
+    <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfigurisanje podešavanja naloga"</string>
+    <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"Svi nalozi za pozivanje"</string>
+    <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Izaberite koji nalozi mogu da obavljaju pozive"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"Pozivanje preko Wi-Fi-ja"</string>
+    <string name="connection_service_default_label" msgid="1498481943805913754">"Ugrađena usluga povezivanja"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Govorna pošta"</string>
+    <string name="voicemail_settings_with_label" msgid="152724978380748296">"Glasovna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="networks" msgid="8873030692174541976">"Mrežni operateri"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hitni prenosi"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Podešavanja poziva"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Dodatna podešavanja"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Dodatna podešavanja (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Dodatna podešavanja poziva samo za GSM"</string>
+    <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Dodatna CDMA podešavanja poziva"</string>
+    <string name="sum_cdma_call_settings" msgid="284753265979035549">"Dodatna samo CDMA podešavanja poziva"</string>
+    <string name="labelNwService" msgid="4699970172021870983">"Podešavanja mrežne usluge"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"ID pozivaoca"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Učitavaju se podešavanja…"</string>
+    <string name="sum_hide_caller_id" msgid="1071407020290873782">"Broj je skriven u odlaznim pozivima"</string>
+    <string name="sum_show_caller_id" msgid="6768534125447290401">"Broj prikazan u odlaznim pozivima"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"Koristi podrazumevana podešavanja operatera za prikazivanje mog broja u odlaznim porukama"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Poziv na čekanju"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Tokom poziva, obavesti me o dolaznim pozivima"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Tokom poziva, obavesti me o dolaznim pozivima"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Podešavanja preusmeravanja poziva"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Podešavanja preusmeravanja poziva (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Preusmeravanje poziva"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Uvek prosledi"</string>
+    <string name="messageCFU" msgid="3560082430662923687">"Uvek koristi ovaj broj"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Prosleđivanje svih poziva"</string>
+    <string name="sum_cfu_enabled" msgid="2450052502198827927">"Prosleđivanje svih poziva na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Broj nije dostupan"</string>
+    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Isključeno"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Kad je zauzeto"</string>
+    <string name="messageCFB" msgid="3711089705936187129">"Broj kad je zauzeto"</string>
+    <string name="sum_cfb_enabled" msgid="5984198104833116690">"Prosleđuje se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Isključeno"</string>
+    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Operater ne podržava onemogućavanje preusmeravanja poziva kada je telefon zauzet."</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Kad se ne javim"</string>
+    <string name="messageCFNRy" msgid="672317899884380374">"Broj kad se ne javim"</string>
+    <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Prosleđuje se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Isključeno"</string>
+    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Operater ne podržava onemogućavanje preusmeravanja poziva kada se na poziv ne odgovori."</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Kad sam nedostupan/a"</string>
+    <string name="messageCFNRc" msgid="6380695421020295119">"Broj kad je nedostupno"</string>
+    <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Prosleđuje se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Isključeno"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Mobilni operater ne podržava onemogućavanje preusmeravanja poziva kada je telefon nedostupan."</string>
+    <string name="updating_title" msgid="6146755386174019046">"Podešavanja poziva"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Samo korisniku sa administratorskim pravima je dozvoljeno da menja podešavanja poziva."</string>
+    <string name="call_settings_with_label" msgid="3401177261468593519">"Podešavanja (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Greška u podešavanjima poziva"</string>
+    <string name="reading_settings" msgid="1920291699287055284">"Podešavanja se učitavaju…"</string>
+    <string name="updating_settings" msgid="8171225533884883252">"Ažuriranje podešavanja…"</string>
+    <string name="reverting_settings" msgid="4752151682666912828">"Vraćanje podešavanja…"</string>
+    <string name="response_error" msgid="6674110501330139405">"Neočekivani odgovor mreže."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Greška na mreži ili SIM kartici."</string>
+    <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS zahtev je promenjen u DIAL zahtev."</string>
+    <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS zahtev je promenjen u USSD zahtev."</string>
+    <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS zahtev je promenjen u novi SS zahtev."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"Podešavanje Brojeva za fiksno biranje aplikacije Telefon je uključeno. Zbog toga neke funkcije u vezi sa pozivima ne funkcionišu."</string>
+    <string name="radio_off_error" msgid="2304459933248513376">"Uključite radio pre pregledanja ovih podešavanja."</string>
+    <string name="close_dialog" msgid="2365884406356986917">"Potvrdi"</string>
+    <string name="enable" msgid="7248657275000173526">"Uključi"</string>
+    <string name="disable" msgid="4678348128118573672">"Isključi"</string>
+    <string name="change_num" msgid="239476305819844391">"Ažuriraj"</string>
+  <string-array name="clir_display_values">
+    <item msgid="5560134294467334594">"Podrazumevano za mrežu"</item>
+    <item msgid="7876195870037833661">"Sakrij broj"</item>
+    <item msgid="1108394741608734023">"Prikaži broj"</item>
+  </string-array>
+    <string name="vm_changed" msgid="380744030726254139">"Promenjen je broj govorne pošte."</string>
+    <string name="vm_change_failed" msgid="3352934863246208918">"Nije moguće promeniti broj govorne pošte.\nKontaktirajte mobilnog operatera ako se ovaj problem nastavi."</string>
+    <string name="fw_change_failed" msgid="5298103228470214665">"Nije moguće promeniti broj za preusmeravanje.\nKontaktirajte mobilnog operatera ako se ovaj problem nastavi."</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Nije moguće preuzeti i sačuvati trenutna podešavanja broja za prosleđivanje.\nŽelite li da ipak pređete na novog dobavljača?"</string>
+    <string name="no_change" msgid="3186040086622435212">"Nisu izvršene nikakve promene."</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Odaberite uslugu govorne pošte"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"Mobilni operater"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stari PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novi PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Sačekajte."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Novi PIN je prekratak."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Novi PIN je predugačak."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Novi PIN je preslab. Jaka lozinka ne treba da sadrži uzastopni niz ni ponovljene cifre."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Stari PIN se ne podudara."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Novi PIN sadrži nevažeće znakove."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Promena PIN-a nije uspela"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepodržani tip poruke. Pozovite <xliff:g id="NUMBER">%s</xliff:g> da biste je preslušali."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Podešavanja za mob. mrežu"</string>
+    <string name="label_available" msgid="1181658289009300430">"Dostupne mreže"</string>
+    <string name="load_networks_progress" msgid="5230707536168902952">"Pretražuje se…"</string>
+    <string name="empty_networks_list" msgid="4249426905018815316">"Nisu pronađene mreže."</string>
+    <string name="search_networks" msgid="1601136049300882441">"Pretraži mreže"</string>
+    <string name="network_query_error" msgid="6828516148953325006">"Greška tokom traženja mreža."</string>
+    <string name="register_on_network" msgid="9055203954040805084">"Registrovanje na <xliff:g id="NETWORK">%s</xliff:g>…"</string>
+    <string name="not_allowed" msgid="5613353860205691579">"SIM kartica ne dozvoljava vezu sa ovom mrežom."</string>
+    <string name="connect_later" msgid="2308119155752343975">"Trenutno nije moguće povezati se sa ovom mrežom. Probajte ponovo kasnije."</string>
+    <string name="registration_done" msgid="495135664535876612">"Registrovano na mreži."</string>
+    <string name="sum_carrier_select" msgid="3494252551249882718">"Izaberite mrežnog operatera"</string>
+    <string name="sum_search_networks" msgid="2921092249873272715">"Potraži sve dostupne mreže"</string>
+    <string name="select_automatically" msgid="5628402124471810174">"Izaberi automatski"</string>
+    <string name="register_automatically" msgid="6017849844573519637">"Automatska registracija..."</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Željeni tip mreže"</string>
+    <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Promena režima rada mreže"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Željeni tip mreže"</string>
+    <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Željeni režim mreže: WCDMA"</string>
+    <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Željeni režim mreže: samo GSM"</string>
+    <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Željeni režim mreže: samo WCDMA"</string>
+    <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"Željeni režim mreže: GSM/WCDMA"</string>
+    <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"Željeni režim mreže: CDMA"</string>
+    <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"Željeni režim mreže: CDMA/EvDo"</string>
+    <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"Željeni režim mreže: samo CDMA"</string>
+    <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"Željeni režim mreže: samo EvDo"</string>
+    <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"Željeni režim mreže: CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Željeni režim mreže: LTE"</string>
+    <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Željeni režim mreže: GSM/WCDMA/LTE"</string>
+    <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Željeni režim mreže: CDMA+LTE/EVDO"</string>
+    <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Željeni režim mreže: Globalno"</string>
+    <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Željeni režim mreže: LTE/WCDMA"</string>
+    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Željeni mrežni režim: LTE/GSM/UMTS"</string>
+    <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Željeni režim mreže: LTE/CDMA"</string>
+    <string name="preferred_network_mode_tdscdma_summary" msgid="8021016193718678775">"Željeni režim mreže: TDSCDMA"</string>
+  <string-array name="preferred_network_mode_choices">
+    <item msgid="7886739962255042385">"LTE/WCDMA"</item>
+    <item msgid="577652050447385699">"LTE"</item>
+    <item msgid="6813597571293773656">"Globalno"</item>
+    <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+    <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+    <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+    <item msgid="545430093607698090">"Samo EvDo"</item>
+    <item msgid="1508557726283094448">"CDMA bez EvDo-a"</item>
+    <item msgid="4341433122263841224">"CDMA/EvDo automatski"</item>
+    <item msgid="5958053792390386668">"GSM/WCDMA automatski"</item>
+    <item msgid="7913148405605373434">"Samo WCDMA"</item>
+    <item msgid="1524224863879435516">"Samo GSM"</item>
+    <item msgid="3817924849415716259">"GSM/WCDMA ima prednost"</item>
+  </string-array>
+    <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Poboljšani 4G LTE režim"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Napredno pozivanje"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Korišćenje LTE usluga za poboljšanje glasovnih i drugih komunikacija (preporučeno)"</string>
+    <string name="data_enabled" msgid="5972538663568715366">"Podaci su omogućeni"</string>
+    <string name="data_enable_summary" msgid="2382798156640007971">"Omogućavanje potrošnje podataka"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Pažnja"</string>
+    <string name="roaming" msgid="8871412572928323707">"Prenos podataka u romingu"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Povezivanje sa uslugom za podatke tokom rominga"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Povezivanje sa uslugom za podatke tokom rominga"</string>
+    <string name="roaming_reenable_message" msgid="8913735676127858115">"Veza za prenos podataka je prekinuta zato što ste napustili kućnu mrežu sa isključenim prenosom podataka u romingu."</string>
+    <string name="roaming_warning" msgid="1603164667540144353">"Mogu da nastanu značajni troškovi."</string>
+    <string name="roaming_alert_title" msgid="3654815360303826008">"Dozvoljavate li prenos podataka u romingu?"</string>
+    <string name="gsm_umts_options" msgid="6538311689850981686">"Opcije za GSM/UMTS"</string>
+    <string name="cdma_options" msgid="4016822858172249884">"CDMA opcije"</string>
+    <string name="throttle_data_usage" msgid="3715677828160555808">"Korišćenje podataka"</string>
+    <string name="throttle_current_usage" msgid="8762280193043815361">"Podaci korišćeni u trenutnom periodu"</string>
+    <string name="throttle_time_frame" msgid="1915198770363734685">"Period korišćenja podataka"</string>
+    <string name="throttle_rate" msgid="4710388992676803508">"Smernice za ocenu podataka"</string>
+    <string name="throttle_help" msgid="243651091785169900">"Saznajte više"</string>
+    <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) od <xliff:g id="USED_2">%3$s</xliff:g> maksimalnog perioda\nSledeći period počinje za <xliff:g id="USED_3">%4$d</xliff:g> dana (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+    <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"Maksimalno <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) od <xliff:g id="USED_2">%3$s</xliff:g> perioda"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maksimum je premašen\nStopa prenosa podataka smanjena je na <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
+    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪  je proteklo od ciklusa\nSledeći period počinje za <xliff:g id="USED_1">%2$d</xliff:g> dana (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Brzina prenosa podataka smanjena je na <xliff:g id="USED">%1$d</xliff:g> Kb/s ako je premašeno ograničenje za korišćenje podataka"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Više informacija o smernicama za korišćenje podataka mobilne mreže operatera"</string>
+    <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS info servisa"</string>
+    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS info servisa"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Omogućen je SMS info servisa"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Onemogućeno je slanje SMS-a info servisa"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"Podešavanja za SMS info servisa"</string>
+    <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Hitan prenos"</string>
+    <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Omogućen je hitan prenos"</string>
+    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Hitan prenos je onemogućen"</string>
+    <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativni"</string>
+    <string name="administrative_enable" msgid="1750086122962032235">"Administrativno je omogućeno"</string>
+    <string name="administrative_disable" msgid="8433273857248698539">"Administrativno je onemogućeno"</string>
+    <string name="enable_disable_maintenance" msgid="1819693083025106678">"Održavanje"</string>
+    <string name="maintenance_enable" msgid="8566636458770971189">"Održavanje je omogućeno"</string>
+    <string name="maintenance_disable" msgid="7340189100885066077">"Održavanje je onemogućeno"</string>
+    <string name="general_news_settings" msgid="4968779723948432978">"Opšte vesti"</string>
+    <string name="bf_news_settings" msgid="3935593091894685267">"Poslovne i finansijske vesti"</string>
+    <string name="sports_news_settings" msgid="7649399631270052835">"Sportske vesti"</string>
+    <string name="entertainment_news_settings" msgid="5051153952959405035">"Vesti iz šou-biznisa"</string>
+    <string name="enable_disable_local" msgid="7890281063123416120">"Lokalno"</string>
+    <string name="local_enable" msgid="6370463247609136359">"Lokalne vesti su omogućene"</string>
+    <string name="local_disable" msgid="4405691986943795798">"Onemogućene su lokalne vesti"</string>
+    <string name="enable_disable_regional" msgid="4905652414535565872">"Regionalno"</string>
+    <string name="regional_enable" msgid="4434680415437834759">"Regionalne vesti su omogućene"</string>
+    <string name="regional_disable" msgid="5359325527213850077">"Regionalne vesti su onemogućene"</string>
+    <string name="enable_disable_national" msgid="236278090206880734">"Nacionalno"</string>
+    <string name="national_enable" msgid="1172443648912246952">"Omogućene su nacionalne vesti"</string>
+    <string name="national_disable" msgid="326018148178601166">"Onemogućene su nacionalne vesti"</string>
+    <string name="enable_disable_international" msgid="7535348799604565592">"Međunarodno"</string>
+    <string name="international_enable" msgid="5855356769925044927">"Međunarodne vesti su omogućene"</string>
+    <string name="international_disable" msgid="2850648591041088931">"Međunarodne vesti su onemogućene"</string>
+    <string name="list_language_title" msgid="2841683501919760043">"Jezik"</string>
+    <string name="list_language_summary" msgid="8109546531071241601">"Izaberite jezik vesti"</string>
+  <string-array name="list_language_entries">
+    <item msgid="6137851079727305485">"engleski"</item>
+    <item msgid="1151988412809572526">"francuski"</item>
+    <item msgid="577840534704312665">"španski"</item>
+    <item msgid="8385712091143148180">"japanski"</item>
+    <item msgid="1858401628368130638">"korejski"</item>
+    <item msgid="1933212028684529632">"kineski"</item>
+    <item msgid="1908428006803639064">"hebrejski"</item>
+  </string-array>
+  <string-array name="list_language_values">
+    <item msgid="1804908636436467150">"1"</item>
+    <item msgid="289708030346890334">"2"</item>
+    <item msgid="1121469729692402684">"3"</item>
+    <item msgid="2614093115912897722">"4"</item>
+    <item msgid="2411164639857960614">"5"</item>
+    <item msgid="5884448729274543324">"6"</item>
+    <item msgid="5511864807618312598">"7"</item>
+  </string-array>
+    <string name="list_language_dtitle" msgid="5442908726538951934">"Jezici"</string>
+    <string name="enable_disable_local_weather" msgid="986967454867219114">"Lokalno vreme"</string>
+    <string name="local_weather_enable" msgid="6199315114382448922">"Lokalno vreme je omogućeno"</string>
+    <string name="local_weather_disable" msgid="2510158089142626480">"Lokalno vreme je onemogućeno"</string>
+    <string name="enable_disable_atr" msgid="8339572391278872343">"Izveštaji o lokalnom saobraćaju"</string>
+    <string name="atr_enable" msgid="5541757457789181799">"Omogućeni su izveštaji o lokalnom saobraćaju"</string>
+    <string name="atr_disable" msgid="7085558154727596455">"Onemogućeni su izveštaji o lokalnom saobraćaju"</string>
+    <string name="enable_disable_lafs" msgid="668189073721277199">"Red letenja lokalnog aerodroma"</string>
+    <string name="lafs_enable" msgid="2791978667205137052">"Omogućen je red letenja lokalnog aerodroma"</string>
+    <string name="lafs_disable" msgid="2391212397725495350">"Onemogućen je red letenja lokalnog aerodroma"</string>
+    <string name="enable_disable_restaurants" msgid="6240381945336814024">"Restorani"</string>
+    <string name="restaurants_enable" msgid="5137657479469118847">"Restorani su omogućeni"</string>
+    <string name="restaurants_disable" msgid="3678480270938424092">"Restorani su onemogućeni"</string>
+    <string name="enable_disable_lodgings" msgid="1822029172658551202">"Evidencije"</string>
+    <string name="lodgings_enable" msgid="3230042508992850322">"Dnevnici su omogućeni"</string>
+    <string name="lodgings_disable" msgid="3387879742320682391">"Evidencije su onemogućene"</string>
+    <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Katalog maloprodaje"</string>
+    <string name="retail_directory_enable" msgid="3280626290436111496">"Omogućen je katalog maloprodaje"</string>
+    <string name="retail_directory_disable" msgid="6479739816662879027">"Onemogućen je katalog maloprodaje"</string>
+    <string name="enable_disable_advertisements" msgid="5999495926176182128">"Oglasi"</string>
+    <string name="advertisements_enable" msgid="2050305021264683786">"Oglasi su omogućeni"</string>
+    <string name="advertisements_disable" msgid="8350985908788707935">"Oglasi su onemogućeni"</string>
+    <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"Cene akcija"</string>
+    <string name="stock_quotes_enable" msgid="4384802470887170543">"Omogućene su cene akcija"</string>
+    <string name="stock_quotes_disable" msgid="4781450084565594998">"Cene akcija su onemogućene"</string>
+    <string name="enable_disable_eo" msgid="4863043263443942494">"Mogućnosti za zapošljavanje"</string>
+    <string name="eo_enable" msgid="8623559062015685813">"Mogućnosti za zapošljavanje su omogućene"</string>
+    <string name="eo_disable" msgid="3863812478090907609">"Mogućnosti za zapošljavanje su onemogućene"</string>
+    <string name="enable_disable_mhh" msgid="908214593528968522">"Medicina, zdravlje i bolnica"</string>
+    <string name="mhh_enable" msgid="5544500632306446815">"Medicina, zdravlje i bolnica su omogućeni"</string>
+    <string name="mhh_disable" msgid="8998210550117117437">"Medicina, zdravlje i bolnica su onemogućeni"</string>
+    <string name="enable_disable_technology_news" msgid="3517184627114999149">"Vesti iz tehnologije"</string>
+    <string name="technology_news_enable" msgid="7995209394210455181">"Vesti iz tehnologije su omogućene"</string>
+    <string name="technology_news_disable" msgid="5483490380561851946">"Vesti iz tehnologije su onemogućene"</string>
+    <string name="enable_disable_multi_category" msgid="626771003122899280">"Više kategorija"</string>
+    <string name="multi_category_enable" msgid="1179299804641721768">"Omogućeno je više kategorija"</string>
+    <string name="multi_category_disable" msgid="880104702904139505">"Onemogućeno je više kategorija"</string>
+    <string name="network_lte" msgid="7702681952521375754">"LTE (preporučeno)"</string>
+    <string name="network_4G" msgid="2723512640529983138">"4G (preporučeno)"</string>
+    <string name="network_global" msgid="1323190488685355309">"Globalno"</string>
+    <string name="cdma_system_select_title" msgid="5757657769327732833">"Izbor sistema"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Promena režima CDMA rominga"</string>
+    <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Izbor sistema"</string>
+  <string-array name="cdma_system_select_choices">
+    <item msgid="176474317493999285">"Samo početna"</item>
+    <item msgid="1205664026446156265">"Automatski"</item>
+  </string-array>
+    <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA prijava"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Promeni između RUIM/SIM i NV"</string>
+    <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"prijava"</string>
+  <string-array name="cdma_subscription_choices">
+    <item msgid="2258014151300708431">"RUIM/SIM"</item>
+    <item msgid="5127722015571873880">"NV"</item>
+  </string-array>
+  <string-array name="cdma_subscription_values">
+    <item msgid="7494167883478914080">"0"</item>
+    <item msgid="6043847456049107742">"1"</item>
+  </string-array>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"Aktiviranje uređaja"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"Podesite usl. prenosa podataka"</string>
+    <string name="carrier_settings_title" msgid="9028166176523012300">"Podešavanja operatera"</string>
+    <string name="fdn" msgid="7878832555095183202">"Brojevi za fiksno biranje"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Brojevi za fiksno biranje (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Lista brojeva za fiksno biranje"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista brojeva za fiksno biranje (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"FDN aktivacija"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Omogućeni su brojevi za fiksno biranje"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Onemogućeni su brojevi za fiksno biranje"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Omogući broj za fiksno biranje"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Onemogući broj za fiksno biranje"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"Promeni PIN2"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Onemogući broj za fiksno biranje"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Omogući broj za fiksno biranje"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Upravljanje brojevima za fiksno biranje"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Promeni PIN za pristup broju za fiksno biranje"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Upravljanje listom telefonskih brojeva"</string>
+    <string name="voice_privacy" msgid="3776841382844614716">"Privatnost glasa"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Omogući poboljšan režim privatnosti"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY režim"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Podesi TTY režim"</string>
+    <string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatski ponovni pokušaj"</string>
+    <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Omogućavanje režima automatskog ponovnog pokušaja"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Promena TTY režima nije dozvoljena tokom video poziva"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
+    <string name="menu_edit" msgid="7143003705504672374">"Izmeni kontakt"</string>
+    <string name="menu_delete" msgid="3977150783449642851">"Izbriši kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Pozovi kontakt"</string>
+    <string name="get_pin2" msgid="8204677063922225311">"Unesite PIN2"</string>
+    <string name="name" msgid="7329028332786872378">"Ime"</string>
+    <string name="number" msgid="7905950798349903858">"Broj"</string>
+    <string name="save" msgid="4094274636321939086">"Sačuvaj"</string>
+    <string name="add_fdn_contact" msgid="2481915899633353976">"Dodaj broj za fiksno biranje"</string>
+    <string name="adding_fdn_contact" msgid="7627379633721940991">"Dodavanje broja za fiksno biranje…"</string>
+    <string name="fdn_contact_added" msgid="7458335758501736665">"Dodat je broj za fiksno biranje."</string>
+    <string name="edit_fdn_contact" msgid="7976936035587081480">"Izmeni broj za fiksno biranje"</string>
+    <string name="updating_fdn_contact" msgid="8370929876849803600">"Ažuriranje broja za fiksno biranje…"</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"Ažuriran je broj za fiksno biranje."</string>
+    <string name="delete_fdn_contact" msgid="6668958073074151717">"Izbriši broj za fiksno biranje"</string>
+    <string name="deleting_fdn_contact" msgid="5669163206349319969">"Brisanje broja za fiksno biranje…"</string>
+    <string name="fdn_contact_deleted" msgid="7154162327112259569">"Izbrisan je broj za fiksno biranje."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"Broj za fiksno biranje nije ažuriran jer ste uneli netačan PIN kôd."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Broj za fiksno biranje nije ažuriran jer je prazan ili ima više od 20 cifara."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN nije ažuriran. PIN2 je netačan ili je broj telefona odbačen."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"Radnja sa brojem za fiksno biranje nije uspela."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čita se sa SIM kartice…"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Nema kontakata na SIM kartici."</string>
+    <string name="simContacts_title" msgid="1861472842524839921">"Izbor kontakata za uvoz"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Isključite režim rada u avionu da biste uvezli kontakte sa SIM kartice."</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Omogućavanje/onemogućavanje SIM PIN-a"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Promena SIM PIN-a"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
+    <string name="oldPinLabel" msgid="5287773661246368314">"Stari PIN"</string>
+    <string name="newPinLabel" msgid="207488227285336897">"Novi PIN"</string>
+    <string name="confirmPinLabel" msgid="257597715098070206">"Potvrdite novi PIN"</string>
+    <string name="badPin" msgid="8955102849303984935">"Stari PIN kôd koji ste uneli je netačan. Probajte ponovo."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"PIN kodovi koje ste uneli se ne podudaraju. Probajte ponovo."</string>
+    <string name="invalidPin" msgid="5981171102258684792">"Otkucajte PIN koji ima od 4 do 8 brojeva."</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"Brisanje PIN-a za SIM"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"Podešavanje PIN-a za SIM"</string>
+    <string name="enable_in_progress" msgid="3417917024688497010">"PIN se podešava…"</string>
+    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN je podešen"</string>
+    <string name="disable_pin_ok" msgid="2109571368635883688">"PIN je obrisan"</string>
+    <string name="pin_failed" msgid="5644377896213584760">"PIN nije tačan"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"PIN je ažuriran"</string>
+    <string name="puk_requested" msgid="5921393215789090200">"Lozinka nije tačna. PIN je sada blokiran. Potreban je PUK."</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"Stari PIN2"</string>
+    <string name="newPin2Label" msgid="4573956902204349054">"Novi PIN2"</string>
+    <string name="confirmPin2Label" msgid="8100319484454787708">"Potvrdite novi PIN2"</string>
+    <string name="badPuk2" msgid="7910064009531541708">"PUK2 nije tačan. Probajte ponovo."</string>
+    <string name="badPin2" msgid="6646896629970023109">"Stari PIN2 nije tačan. Probajte ponovo."</string>
+    <string name="mismatchPin2" msgid="4177967478551851117">"PIN2 kodovi se ne podudaraju. Probajte ponovo."</string>
+    <string name="invalidPin2" msgid="1757045131429105595">"Unesite PIN2 koji sadrži 4 do 8 cifara."</string>
+    <string name="invalidPuk2" msgid="7059081153334815973">"Unesite PUK2 koji sadrži 8 cifara."</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"PIN2 je ažuriran"</string>
+    <string name="label_puk2_code" msgid="4688069961795341948">"Unesite kôd PUK2"</string>
+    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Lozinka nije tačna. PIN2 je sada blokiran. Da biste pokušali ponovo, promenite PIN 2."</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"Lozinka nije tačna. SIM je sada blokiran. Unesite PUK2."</string>
+    <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 je trajno blokiran."</string>
+    <string name="pin2_attempts" msgid="720736232885011507">\n"Imate još <xliff:g id="NUMBER">%d</xliff:g> pokušaja."</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 više nije blokiran"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Greška na mreži ili SIM kartici"</string>
+    <string name="doneButton" msgid="2859593360997984240">"Gotovo"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Broj govorne pošte"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Poziva se"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Ponovno biranje"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Konferencijski poziv"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Dolazni poziv"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Poziv je završen"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Na čekanju"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Prekid veze"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"U pozivu"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Nova govorna pošta"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nova govorna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nepoznat broj govorne pošte"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Nema usluge"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Izabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nije dostupna"</string>
+    <string name="incall_error_power_off" product="watch" msgid="772302793483607711">"Isključite režim rada u avionu ili uštede baterije da biste uputili poziv."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Isključite režim rada u avionu da biste uputili poziv."</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Isključite režim rada u avionu ili se povežite na bežičnu mrežu da biste uputili poziv."</string>
+    <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Izađite iz režima hitnog povratnog poziva da biste uputili poziv koji nije hitan."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nije registrovano na mreži."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilna mreža nije dostupna."</string>
+    <!-- no translation found for incall_error_out_of_service_wfc (8741629779555132471) -->
+    <skip />
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Da biste uputili poziv, unesite važeći broj."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Poziv nije uspeo."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Trenutno nije moguće dodati poziv."</string>
+    <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Usluga nije podržana"</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Zamena poziva nije uspela."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Razdvajanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Prebacivanje nije uspelo."</string>
+    <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konferencijski pozivi nisu mogući."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Odbijanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Uspostavljanje poziva nije uspelo."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nije moguće stavljati pozive na čekanje."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se na bežičnu mrežu da biste uputili poziv."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Omogućite pozivanje preko Wi-Fi-ja da biste uputili poziv."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitan poziv"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema mreže. Ponovni pokušaj…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Ulazak u režim rada u avionu nije moguć tokom hitnog poziva."</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Poziv nije uspeo. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nije broj za hitne slučajeve."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Poziv nije uspeo. Pozovite broj za hitne slučajeve."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Koristite tastaturu za pozivanje"</string>
+    <string name="onscreenHoldText" msgid="2285258239691145872">"Čekanje"</string>
+    <string name="onscreenEndCallText" msgid="4403855834875398585">"Završi"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Numerička tastatura"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Isključi zvuk"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Dodaj poziv"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Objedini pozive"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Zameni"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Upravljajte pozivima"</string>
+    <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Upravljaj konferencijom"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Audio"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Video poz."</string>
+    <string name="importSimEntry" msgid="6614358325359736031">"Uvezi"</string>
+    <string name="importAllSimEntries" msgid="1503181169636198673">"Uvezi sve"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Uvoz SIM kontakata"</string>
+    <string name="importToFDNfromContacts" msgid="2130620207013368580">"Uvezi iz kontakata"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt je uvezen"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Uvoz kontakta nije uspeo"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Slušni aparat"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Uključi kompatibilnost sa slušnim aparatom"</string>
+  <string-array name="tty_mode_entries">
+    <item msgid="512950011423868021">"TTY je isključen"</item>
+    <item msgid="3971695875449640648">"TTY je pun"</item>
+    <item msgid="1937509904407445684">"TTY HCO"</item>
+    <item msgid="5644925873488772224">"TTY VCO"</item>
+  </string-array>
+    <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF tonovi"</string>
+    <string name="dtmf_tones_summary" msgid="3351820372864020331">"Podesi jačinu DTMF tonova"</string>
+  <string-array name="dtmf_tone_entries">
+    <item msgid="899650777817315681">"Normalan"</item>
+    <item msgid="2883365539347850535">"Dugačak"</item>
+  </string-array>
+    <string name="network_info_message" msgid="7738596060242881930">"Mrežna poruka"</string>
+    <string name="network_error_message" msgid="3394780436230411413">"Poruka o grešci"</string>
+    <string name="ota_title_activate" msgid="8616918561356194398">"Aktivirajte telefon"</string>
+    <string name="ota_touch_activate" msgid="6553212803262586244">"Potrebno je da uputite poseban poziv da biste aktivirali uslugu svoj telefona. \n\nNakon što pritisnete dugme „Aktiviraj“, slušajte data uputstva da biste da biste aktivirali svoj telefon."</string>
+    <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Aktiviranje..."</string>
+    <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"Telefon aktivira uslugu mobilnog prenosa podataka.\n\nTo može da potraje i do 5 minuta."</string>
+    <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Želite li da preskočite aktivaciju?"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Ako preskočite aktivaciju, ne možete da upućujete pozive ili da se povezujete sa mrežama za mobilni prenos podataka (iako možete da se povežete sa Wi-Fi mrežama). Sve dok ne aktivirate svoj telefon, bićete upitani da to učinite svaki put kada ga uključite."</string>
+    <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Preskoči"</string>
+    <string name="ota_activate" msgid="1368528132525626264">"Aktiviraj"</string>
+    <string name="ota_title_activate_success" msgid="6570240212263372046">"Telefon je aktiviran."</string>
+    <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Problem sa aktivacijom"</string>
+    <string name="ota_listen" msgid="162923839877584937">"Sledite izgovorena uputstva sve dok ne čujete da je aktivacija završena."</string>
+    <string name="ota_speaker" msgid="6904589278542719647">"Zvučnik"</string>
+    <string name="ota_progress" msgid="460876637828044519">"Telefon se programira…"</string>
+    <string name="ota_failure" msgid="7713756181204620397">"Programiranje telefona nije uspelo"</string>
+    <string name="ota_successful" msgid="1880780692887077407">"Telefon je sada aktiviran. Možda će biti potrebno najviše 15 minuta da bi se usluga pokrenula."</string>
+    <string name="ota_unsuccessful" msgid="8072141612635635357">"Telefon se nije aktivirao. \nMožda je potrebno da pronađete oblast sa boljom pokrivenošću (blizu prozora ili napolju). \n\nProbajte ponovo ili pozovite korisničku podršku za još opcija."</string>
+    <string name="ota_spc_failure" msgid="3909983542575030796">"SLUČAJNA SPC GREŠKA"</string>
+    <string name="ota_call_end" msgid="4537279738134612388">"Nazad"</string>
+    <string name="ota_try_again" msgid="7685477206465902290">"Probaj ponovo"</string>
+    <string name="ota_next" msgid="3904945374358235910">"Sledeće"</string>
+    <string name="ecm_exit_dialog" msgid="4448531867763097533">"Dijalog za izlazak iz režima hitnog povratnog poziva"</string>
+    <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Unet je režim za hitan povratni poziv"</string>
+    <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Režim za hitan povratni poziv"</string>
+    <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Veza za prenos podataka je onemogućena"</string>
+    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+      <item quantity="one">Nema veze za prenos podataka <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+      <item quantity="few">Nema veze za prenos podataka <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+      <item quantity="other">Nema veze za prenos podataka <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+    </plurals>
+    <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+      <item quantity="one">Telefon će biti u Režimu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minut. Dok je u ovom režimu ne možete da koristite aplikacije koje koriste vezu za prenos podataka. Želite li odmah da izađete iz ovog režima?</item>
+      <item quantity="few">Telefon će biti u Režimu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minuta. Dok je u ovom režimu ne možete da koristite aplikacije koje koriste vezu za prenos podataka. Želite li odmah da izađete iz ovog režima?</item>
+      <item quantity="other">Telefon će biti u Režimu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minuta. Dok je u ovom režimu ne možete da koristite aplikacije koje koriste vezu za prenos podataka. Želite li odmah da izađete iz ovog režima?</item>
+    </plurals>
+    <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+      <item quantity="one">Izabrana radnja nije dostupna dok ste u Režimu hitnog povratnog poziva. Telefon će biti u ovom režimu <xliff:g id="COUNT_1">%s</xliff:g> minut. Želite li odmah da izađete iz ovog režima?</item>
+      <item quantity="few">Izabrana radnja nije dostupna dok ste u Režimu hitnog povratnog poziva. Telefon će biti u ovom režimu <xliff:g id="COUNT_1">%s</xliff:g> minuta. Želite li odmah da izađete iz ovog režima?</item>
+      <item quantity="other">Izabrana radnja nije dostupna dok ste u Režimu hitnog povratnog poziva. Telefon će biti u ovom režimu <xliff:g id="COUNT_1">%s</xliff:g> minuta. Želite li odmah da izađete iz ovog režima?</item>
+    </plurals>
+    <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Izabrana radnja nije dostupna kada je u toku hitan poziv"</string>
+    <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Izlazak iz Režima hitnog povratnog poziva"</string>
+    <string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
+    <string name="alert_dialog_no" msgid="1476091437797628703">"Ne"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Odbaci"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Usluga"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Podešavanje"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nije podešeno&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Druga podešavanja poziva"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Pozivanje preko <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"slika kontakta"</string>
+    <string name="goPrivate" msgid="865837794424530980">"idi na privatno"</string>
+    <string name="selectContact" msgid="781975788478987237">"izaberite kontakt"</string>
+    <string name="not_voice_capable" msgid="2739898841461577811">"Audio pozivi nisu podržani"</string>
+    <string name="description_dial_button" msgid="7459705245418435351">"biranje"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibracija"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibracija"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuelna govorna pošta"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Podesite PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Promenite PIN"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ugrađene SIM kartice"</string>
+    <string name="enable_video_calling_title" msgid="7237253660669000899">"Uključi video pozive"</string>
+    <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Da biste uključili video pozive, treba da omogućite Poboljšani 4G LTE režim u podešavanjima mreže."</string>
+    <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Podešavanja mreže"</string>
+    <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Zatvori"</string>
+    <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Hitni pozivi"</string>
+    <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo za hitne pozive"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"SIM kartica, otvor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pristupačnost"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi poziv od"</string>
+    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi poziv"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Dodirnite ponovo da biste otvorili"</string>
+    <string name="message_decode_error" msgid="3456481534066924855">"Došlo je do greške pri dekodiranju poruke."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartica je aktivirala uslugu i ažurirala funkcije rominga na telefonu."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ima previše aktivnih poziva. Završite ili objedinite postojeće pozive pre nego što uputite novi."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Povezivanje nije uspelo, ubacite važeću SIM karticu."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi veza je prekinuta. Poziv je završen."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Promenite PIN kôd govorne pošte"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Nastavi"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Otkaži"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Potvrdi"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potvrdite stari PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"kôd govorne pošte da biste nastavili."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Podesite novi PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Broj cifara koje PIN mora da sadrži: <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potvrdite PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-ovi se ne podudaraju"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN kôd govorne pošte je ažuriran"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Podešavanje PIN-a nije uspelo"</string>
+</resources>
diff --git a/res/values-gl-rES/arrays.xml b/res/values-be/arrays.xml
similarity index 100%
copy from res/values-gl-rES/arrays.xml
copy to res/values-be/arrays.xml
diff --git a/res/values-be/config.xml b/res/values-be/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-be/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
new file mode 100644
index 0000000..aa1ef68
--- /dev/null
+++ b/res/values-be/strings.xml
@@ -0,0 +1,600 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
+    <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Тэлефонныя службы"</string>
+    <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Экстраныя выклікі"</string>
+    <string name="phoneIconLabel" msgid="2331230813161304895">"Тэлефон"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Спіс FDN"</string>
+    <string name="unknown" msgid="6878797917991465859">"Невядомы"</string>
+    <string name="private_num" msgid="6713286113000232309">"Прыватны нумар"</string>
+    <string name="payphone" msgid="4793877574636445118">"Таксафон"</string>
+    <string name="onHold" msgid="9035493194749959955">"У чаканні"</string>
+    <string name="mmiStarted" msgid="6347869857061147003">"Пачалося выкананне MMI кода"</string>
+    <string name="ussdRunning" msgid="485588686340541690">"Запускаецца USSD-код..."</string>
+    <string name="mmiCancelled" msgid="2771923949751842276">"Код MMI адменены"</string>
+    <string name="cancel" msgid="5044513931633602634">"Адмяніць"</string>
+    <string name="enter_input" msgid="1810529547726803893">"Паведамленне USSD павінна складацца з наступнай колькасцi знакаў:  ад <xliff:g id="MIN_LEN">%d</xliff:g> да <xliff:g id="MAX_LEN">%d</xliff:g>. Паспрабуйце яшчэ раз."</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Кіраванне канферэнц-выклікам"</string>
+    <string name="ok" msgid="3811371167865772377">"ОК"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Дынамік"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Дынамік тэлефона"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Правадная гарнітура"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Адправіць наступныя тоны?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Адпраўка сігналаў\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Адправіць"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Так"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Не"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Замяніце выпадковы сімвал:"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Адсутнічае нумар галасавой пошты"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM-карце няма нумару галасавой пошты."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Дадаць нумар"</string>
+    <!-- no translation found for voice_number_setting_primary_user_only (6596604364907022416) -->
+    <skip />
+    <string name="puk_unlocked" msgid="2284912838477558454">"Ваша SIM-карта была разблакаваная. Ваш тэлефон разблакоўваецца..."</string>
+    <string name="label_ndp" msgid="780479633159517250">"PIN-код разблакавання сеткі SIM"</string>
+    <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Разблакаваць"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Адхіліць"</string>
+    <string name="requesting_unlock" msgid="6412629401033249351">"Запыт разблакавання сеткі..."</string>
+    <string name="unlock_failed" msgid="6490531697031504225">"Запыт разблакавання сеткі няўдалы."</string>
+    <string name="unlock_success" msgid="6770085622238180152">"Сетка паспяхова разблакавана."</string>
+    <!-- no translation found for mobile_network_settings_not_available (7355254462995117896) -->
+    <skip />
+    <string name="labelGSMMore" msgid="5930842194056092106">"Налады выклікаў GSM"</string>
+    <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Налады выклікаў GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCDMAMore" msgid="1630676740428229339">"Налады выклікаў CDMA"</string>
+    <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Налады выклікаў CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Назвы кропак доступу"</string>
+    <string name="settings_label" msgid="3876743539816984008">"Налады сеткі"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Уліковыя запісы для выклікаў"</string>
+    <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Рабіць выклікі праз"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Рабіць SIP-выклікі праз"</string>
+    <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Спачатку запытваць"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Даступных сетак няма"</string>
+    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Налады"</string>
+    <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Выбраць уліковыя запісы"</string>
+    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Уліковыя запісы тэлефона"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Дадаць уліковы запіс SIP"</string>
+    <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Канфігурацыя налад уліковых запісаў"</string>
+    <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"Усе ўліковыя запісы выклікаў"</string>
+    <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Выберыце, з якіх уліковых запісаў можна рабіць выклікі"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi-тэлефанія"</string>
+    <string name="connection_service_default_label" msgid="1498481943805913754">"Убудаваная служба злучэнняў"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Галасавая пошта"</string>
+    <string name="voicemail_settings_with_label" msgid="152724978380748296">"Галасавая пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
+    <string name="networks" msgid="8873030692174541976">"Сеткавыя аператары"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Экстранныя трансляцыі"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Налады выклікаў"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Дадатковыя налады"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Дадатковыя налады (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Дадатковыя налады выклікаў толькі для GSM"</string>
+    <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Дадатковыя налады выклікаў CDMA"</string>
+    <string name="sum_cdma_call_settings" msgid="284753265979035549">"Дадатковыя налады толькі для выклікаў CDMA"</string>
+    <string name="labelNwService" msgid="4699970172021870983">"Налады сеткавых паслуг"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"АВН"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Загрузка налад..."</string>
+    <string name="sum_hide_caller_id" msgid="1071407020290873782">"Нумар схаваны з выходных выклікаў"</string>
+    <string name="sum_show_caller_id" msgid="6768534125447290401">"Нумар, якi паказваецца ў выходных выкліках"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"Выкарыстоўваць налады па змаўчаннi, каб аператар мог адлюстроўваць мой нумар у выходных выкліках"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Чаканне выкліку"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Паведамляць пра ўваходныя выклікі падчас размовы"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Паведамляць пра ўваходныя выклікі падчас размовы"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Налады пераадрасацыі выкліку"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Налады пераадрасацыі выкліку (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Пераадрасацыя выкліку"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Заўсёды пераадрасоўваць"</string>
+    <string name="messageCFU" msgid="3560082430662923687">"Заўсёды выкарыстоўваць гэты нумар"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Пераадрасацыя ўсіх выклікаў"</string>
+    <string name="sum_cfu_enabled" msgid="2450052502198827927">"Пераадрасацыя ўсіх тэлефанаванняў на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Нумар недаступны"</string>
+    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Выкл."</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Калі заняты"</string>
+    <string name="messageCFB" msgid="3711089705936187129">"Нумар, калі занята"</string>
+    <string name="sum_cfb_enabled" msgid="5984198104833116690">"Пераадрасацыя на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Выкл."</string>
+    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Ваш аператар не падтрымлівае адключэнне перанакіравання выклікаў, калі тэлефон заняты."</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Калі няма адказу"</string>
+    <string name="messageCFNRy" msgid="672317899884380374">"Нумар, калі няма адказу"</string>
+    <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Пераадрасацыя на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Выкл."</string>
+    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Ваш аператар не падтрымлівае адключэнне перанакіравання выклікаў, калі тэлефон не адказвае."</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Калі недасягальны"</string>
+    <string name="messageCFNRc" msgid="6380695421020295119">"Нумар, калі недаступны"</string>
+    <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Пераадрасацыя на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Выключаны"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ваш аператар не падтрымлівае адключэнне пераадрасацыi выклікаў, калі тэлефон недаступны."</string>
+    <string name="updating_title" msgid="6146755386174019046">"Налады выклікаў"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Налады выклікаў можа мяняць толькі адміністратар."</string>
+    <string name="call_settings_with_label" msgid="3401177261468593519">"Налады (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Памылка налад выкліку"</string>
+    <string name="reading_settings" msgid="1920291699287055284">"Чытанне налад..."</string>
+    <string name="updating_settings" msgid="8171225533884883252">"Абнаўленне налад..."</string>
+    <string name="reverting_settings" msgid="4752151682666912828">"Вяртанне налад..."</string>
+    <string name="response_error" msgid="6674110501330139405">"Нечаканы адказ ад сеткі."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Памылка сеткі ці SIM-карты."</string>
+    <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"Запыт SS зменены на запыт DIAL."</string>
+    <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"Запыт SS зменены на запыт USSD."</string>
+    <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"Запыт SS зменены на новы запыт SS."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"Уключаны дазволеныя нумары. У выніку некаторыя функцыі адносна званкоў не працуюць."</string>
+    <string name="radio_off_error" msgid="2304459933248513376">"Перад праглядам гэтых параметраў уключыце радыё."</string>
+    <string name="close_dialog" msgid="2365884406356986917">"ОК"</string>
+    <string name="enable" msgid="7248657275000173526">"Уключыць"</string>
+    <string name="disable" msgid="4678348128118573672">"Адключыць"</string>
+    <string name="change_num" msgid="239476305819844391">"Абнавіць"</string>
+  <string-array name="clir_display_values">
+    <item msgid="5560134294467334594">"Для сеткі па змаўчаннi"</item>
+    <item msgid="7876195870037833661">"Схаваць нумар"</item>
+    <item msgid="1108394741608734023">"Паказаць нумар"</item>
+  </string-array>
+    <string name="vm_changed" msgid="380744030726254139">"Нумар галасавой пошты змяніўся."</string>
+    <string name="vm_change_failed" msgid="3352934863246208918">"Не атрымалася змяніць нумар галасавой пошты.\nКалі праблема не вырашыцца, звярніцеся да свайго аператара."</string>
+    <string name="fw_change_failed" msgid="5298103228470214665">"Не атрымалася змяніць нумар для пераадрасацыi.\nКалі гэтая праблема не вырашыцца, звярніцеся да свайго аператара."</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Немагчыма атрымаць і захаваць бягучыя налады пераадрасацыі нумару.\nУсё роўна пераключыць на новага пастаўшчыка?"</string>
+    <string name="no_change" msgid="3186040086622435212">"Змены не выкананы."</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Выберыце службу галасавой пошты"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"Ваш аператар"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стары PIN-код"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Новы PIN-код"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Пачакайце."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новы PIN-код занадта кароткі."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новы PIN-код занадта доўгі."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новы PIN-код занадта слабы. Моцны пароль не павінен змяшчаць знакаў, што ідуць па чарзе, або лічбы, якія паўтараюцца."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Стары PIN-код не падыходзіць."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Новы PIN-код змяшчае несапраўдныя сімвалы."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Немагчыма змяніць PIN-код"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Гэты тып паведамлення не падтрымліваецца; каб праслухаць, патэлефануйце на <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Налады мабільнай сеткі"</string>
+    <string name="label_available" msgid="1181658289009300430">"Даступныя сеткі"</string>
+    <string name="load_networks_progress" msgid="5230707536168902952">"Пошук..."</string>
+    <string name="empty_networks_list" msgid="4249426905018815316">"Сеткі не знойдзены."</string>
+    <string name="search_networks" msgid="1601136049300882441">"Шукаць сеткі"</string>
+    <string name="network_query_error" msgid="6828516148953325006">"Памылка падчас пошуку сетак."</string>
+    <string name="register_on_network" msgid="9055203954040805084">"Рэгістрацыя ў сетцы <xliff:g id="NETWORK">%s</xliff:g>..."</string>
+    <string name="not_allowed" msgid="5613353860205691579">"Ваша SIM-карта не дазваляе падключацца да гэтай сеткі."</string>
+    <string name="connect_later" msgid="2308119155752343975">"Зараз немагчыма падключыцца да гэтай сеткі. Паўтарыце спробу пазней."</string>
+    <string name="registration_done" msgid="495135664535876612">"Зарэгістраваны ў сетцы."</string>
+    <string name="sum_carrier_select" msgid="3494252551249882718">"Выберыце аператара сеткі"</string>
+    <string name="sum_search_networks" msgid="2921092249873272715">"Пошук усіх даступных сетак"</string>
+    <string name="select_automatically" msgid="5628402124471810174">"Выбраць аўтаматычна"</string>
+    <string name="sum_select_automatically" msgid="5614890115123292400">"Аўтаматычна выбраць прыярытэтную сетку"</string>
+    <string name="register_automatically" msgid="6017849844573519637">"Аўтаматычная рэгістрацыя..."</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Прыярытэтны тып сеткі"</string>
+    <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Змяніць рэжым работы сеткі"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Прыярытэтны тып сеткі"</string>
+    <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Пераважны рэжым сеткі: пераважна WCDMA"</string>
+    <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Пераважны рэжым сеткі: толькі GSM"</string>
+    <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Пераважны рэжым сеткі: толькі WCDMA"</string>
+    <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"Пераважны рэжым сеткі: GSM/WCDMA"</string>
+    <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"Пераважны рэжым сеткі: CDMA"</string>
+    <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"Пераважны рэжым сеткі: CDMA/EvDo"</string>
+    <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"Пераважны рэжым сеткі: толькі CDMA"</string>
+    <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"Пераважны рэжым сеткі: толькі EvDo"</string>
+    <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"Пераважная сетка: CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Пераважная сетка: LTE"</string>
+    <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Пераважная сетка: GSM/WCDMA/LTE"</string>
+    <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Пераважная сетка: CDMA+LTE/EVDO"</string>
+    <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Пераважная сетка: глабальная"</string>
+    <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Пераважная сетка: LTE / WCDMA"</string>
+    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Пажаданы рэжым сеткі: LTE / GSM / UMTS"</string>
+    <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Пераважны рэжым сеткі: LTE/CDMA"</string>
+    <string name="preferred_network_mode_tdscdma_summary" msgid="8021016193718678775">"Пажаданы рэжым сеткі: TDSCDMA"</string>
+  <string-array name="preferred_network_mode_choices">
+    <item msgid="7886739962255042385">"LTE / WCDMA"</item>
+    <item msgid="577652050447385699">"LTE"</item>
+    <item msgid="6813597571293773656">"Глабальныя"</item>
+    <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+    <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+    <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+    <item msgid="545430093607698090">"Толькі EVDO"</item>
+    <item msgid="1508557726283094448">"CDMA без EvDo"</item>
+    <item msgid="4341433122263841224">"Аўтаматычны выбар CDMA/EvDo"</item>
+    <item msgid="5958053792390386668">"Аўтаматычны выбар GSM/WCDMA"</item>
+    <item msgid="7913148405605373434">"Толькі WCDMA"</item>
+    <item msgid="1524224863879435516">"Толькі GSM"</item>
+    <item msgid="3817924849415716259">"Пажадана GSM/WCDMA"</item>
+  </string-array>
+    <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Удасканалены рэжым 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Пашыраны выклік"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Карыстайцеся службамі LTE, каб палепшыць галасавую і іншую сувязь (рэкаменд.)"</string>
+    <string name="data_enabled" msgid="5972538663568715366">"Дадзеныя ўключаныя"</string>
+    <string name="data_enable_summary" msgid="2382798156640007971">"Дазволіць выкарыстанне даных"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Увага"</string>
+    <string name="roaming" msgid="8871412572928323707">"Перадача даных у роўмінгу"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Падключацца да сэрвісаў перадачы даных у роўмінгу"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Падключацца да сэрвісаў перадачы даных у роўмінгу"</string>
+    <string name="roaming_reenable_message" msgid="8913735676127858115">"Падлучэнне для перадачы дадзеных страчана, таму што вы выйшлі з зоны пакрыцця сваёй сеткі, а перадача дадзеных у роўмінгу адключана."</string>
+    <string name="roaming_warning" msgid="1603164667540144353">"Гэта можа прывесці да значных выдаткаў."</string>
+    <string name="roaming_alert_title" msgid="3654815360303826008">"Дазволіць перадачу даных у роўмінгу?"</string>
+    <string name="gsm_umts_options" msgid="6538311689850981686">"Параметры GSM/UMTS"</string>
+    <string name="cdma_options" msgid="4016822858172249884">"Параметры CDMA"</string>
+    <string name="throttle_data_usage" msgid="3715677828160555808">"Выкарыстанне трафіку"</string>
+    <string name="throttle_current_usage" msgid="8762280193043815361">"Выкарыстанне даных у бягучы перыяд"</string>
+    <string name="throttle_time_frame" msgid="1915198770363734685">"Перыяд выкарыстання дадзеных"</string>
+    <string name="throttle_rate" msgid="4710388992676803508">"Палітыка хуткасці перадачы дадзеных"</string>
+    <string name="throttle_help" msgid="243651091785169900">"Дадатковая iнфармацыя"</string>
+    <string name="throttle_status_subtext" msgid="1657318943142085170">"Выкарыстана <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>??) з максімуму перыяду <xliff:g id="USED_2">%3$s</xliff:g>\nНаступны перыяд пачнецца праз <xliff:g id="USED_3">%4$d</xliff:g> д. (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+    <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"Выкарыстана <xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>??) з максімуму перыяду (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Максімум <xliff:g id="USED_0">%1$s</xliff:g> перавышаны\nХуткасць перадачы дадзеных зніжана да <xliff:g id="USED_1">%2$d</xliff:g> Кб/с"</string>
+    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>?? цыклу прайшло\nНаступны перыяд пачнецца праз <xliff:g id="USED_1">%2$d</xliff:g> д. (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Хуткасць перадачы дадзеных зніжаецца да <xliff:g id="USED">%1$d</xliff:g> Кб/с, калі абмежаванне выкарыстання дадзеных перавышанае"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Больш падрабязная інфармацыя аб палітыцы выкарыстання дадзеных у сетцы вашага мабільнага аператара"</string>
+    <string name="cell_broadcast_sms" msgid="5584192824053625842">"Перадача SMS на сотавыя"</string>
+    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Перадача SMS на сотавыя"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Перадача SMS на сотавыя ўключана"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Перадача SMS на сотавыя адключаная"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"Налады перадачы SMS на сотавыя"</string>
+    <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Экстраная перадача"</string>
+    <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Уключаная экстраная перадача"</string>
+    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Экстраная перадача адключаная"</string>
+    <string name="enable_disable_administrative" msgid="6501582322182059412">"Адміністрацыйны"</string>
+    <string name="administrative_enable" msgid="1750086122962032235">"Адміністрацыйныя функцыi ўключаныя"</string>
+    <string name="administrative_disable" msgid="8433273857248698539">"Адміністрацыйныя функцыi адключаны"</string>
+    <string name="enable_disable_maintenance" msgid="1819693083025106678">"Абслугоўванне"</string>
+    <string name="maintenance_enable" msgid="8566636458770971189">"Тэхнічнае абслугоўванне ўключана"</string>
+    <string name="maintenance_disable" msgid="7340189100885066077">"Абслугоўванне адключана"</string>
+    <string name="general_news_settings" msgid="4968779723948432978">"Агульныя навіны"</string>
+    <string name="bf_news_settings" msgid="3935593091894685267">"Навіны бізнэсу і фінансаў"</string>
+    <string name="sports_news_settings" msgid="7649399631270052835">"Навіны спорту"</string>
+    <string name="entertainment_news_settings" msgid="5051153952959405035">"Забаўляльныя навіны"</string>
+    <string name="enable_disable_local" msgid="7890281063123416120">"Мясцовы"</string>
+    <string name="local_enable" msgid="6370463247609136359">"Мясцовыя навіны ўключаны"</string>
+    <string name="local_disable" msgid="4405691986943795798">"Мясцовыя навіны адключаны"</string>
+    <string name="enable_disable_regional" msgid="4905652414535565872">"Рэгіянальныя"</string>
+    <string name="regional_enable" msgid="4434680415437834759">"Рэгіянальныя навіны ўключаны"</string>
+    <string name="regional_disable" msgid="5359325527213850077">"Рэгіянальныя навіны адключаны"</string>
+    <string name="enable_disable_national" msgid="236278090206880734">"Нацыянальны"</string>
+    <string name="national_enable" msgid="1172443648912246952">"Нацыянальныя навіны ўключаныя"</string>
+    <string name="national_disable" msgid="326018148178601166">"Нацыянальныя навіны адключаныя"</string>
+    <string name="enable_disable_international" msgid="7535348799604565592">"Міжнародны"</string>
+    <string name="international_enable" msgid="5855356769925044927">"Уключаны міжнародныя навіны"</string>
+    <string name="international_disable" msgid="2850648591041088931">"Міжнародныя навіны адключаныя"</string>
+    <string name="list_language_title" msgid="2841683501919760043">"Мова"</string>
+    <string name="list_language_summary" msgid="8109546531071241601">"Выберыце мову навін"</string>
+  <string-array name="list_language_entries">
+    <item msgid="6137851079727305485">"Англійская"</item>
+    <item msgid="1151988412809572526">"Французская"</item>
+    <item msgid="577840534704312665">"Іспанская"</item>
+    <item msgid="8385712091143148180">"Японская"</item>
+    <item msgid="1858401628368130638">"Карэйская"</item>
+    <item msgid="1933212028684529632">"Кітайская"</item>
+    <item msgid="1908428006803639064">"Іўрыт"</item>
+  </string-array>
+  <string-array name="list_language_values">
+    <item msgid="1804908636436467150">"1"</item>
+    <item msgid="289708030346890334">"2"</item>
+    <item msgid="1121469729692402684">"3"</item>
+    <item msgid="2614093115912897722">"4"</item>
+    <item msgid="2411164639857960614">"5"</item>
+    <item msgid="5884448729274543324">"6"</item>
+    <item msgid="5511864807618312598">"7"</item>
+  </string-array>
+    <string name="list_language_dtitle" msgid="5442908726538951934">"Мовы"</string>
+    <string name="enable_disable_local_weather" msgid="986967454867219114">"Мясцовае надвор\'е"</string>
+    <string name="local_weather_enable" msgid="6199315114382448922">"Мясцовае надвор\'е ўключана"</string>
+    <string name="local_weather_disable" msgid="2510158089142626480">"Мясцовае надвор\'е адключана"</string>
+    <string name="enable_disable_atr" msgid="8339572391278872343">"Мясцовыя транспартныя паведамленні"</string>
+    <string name="atr_enable" msgid="5541757457789181799">"Мясцовыя транспартныя паведамленні ўключаны"</string>
+    <string name="atr_disable" msgid="7085558154727596455">"Мясцовыя транспартныя паведамленні адключаны"</string>
+    <string name="enable_disable_lafs" msgid="668189073721277199">"Расклады палётаў мясцовага аэрапорту"</string>
+    <string name="lafs_enable" msgid="2791978667205137052">"Уключаныя расклады палётаў мясцовага аэрапорта"</string>
+    <string name="lafs_disable" msgid="2391212397725495350">"Расклады палётаў мясцовага аэрапорта адключаныя"</string>
+    <string name="enable_disable_restaurants" msgid="6240381945336814024">"Рэстараны"</string>
+    <string name="restaurants_enable" msgid="5137657479469118847">"Рэстараны ўключаны"</string>
+    <string name="restaurants_disable" msgid="3678480270938424092">"Рэстараны адключаныя"</string>
+    <string name="enable_disable_lodgings" msgid="1822029172658551202">"Жыллё"</string>
+    <string name="lodgings_enable" msgid="3230042508992850322">"Жыллё ўключана"</string>
+    <string name="lodgings_disable" msgid="3387879742320682391">"Жыллё адключана"</string>
+    <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Рознічны каталог"</string>
+    <string name="retail_directory_enable" msgid="3280626290436111496">"Рознічны каталог ўключаны"</string>
+    <string name="retail_directory_disable" msgid="6479739816662879027">"Рознічны каталог адключаны"</string>
+    <string name="enable_disable_advertisements" msgid="5999495926176182128">"Рэклама"</string>
+    <string name="advertisements_enable" msgid="2050305021264683786">"Рэклама ўключаная"</string>
+    <string name="advertisements_disable" msgid="8350985908788707935">"Рэклама адключана"</string>
+    <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"Катыроўкі акцый"</string>
+    <string name="stock_quotes_enable" msgid="4384802470887170543">"Кацiроўкі акцый уключаны"</string>
+    <string name="stock_quotes_disable" msgid="4781450084565594998">"Кацiроўкі акцый выключаны"</string>
+    <string name="enable_disable_eo" msgid="4863043263443942494">"Магчымасці працаўладкавання"</string>
+    <string name="eo_enable" msgid="8623559062015685813">"Магчымасці працаўладкавання ўключаны"</string>
+    <string name="eo_disable" msgid="3863812478090907609">"Магчымасці працаўладкавання адключаныя"</string>
+    <string name="enable_disable_mhh" msgid="908214593528968522">"Медыцына, здароўе і бальніцы"</string>
+    <string name="mhh_enable" msgid="5544500632306446815">"Уключаны раздзел \"Медыцына, здароўе і бальніцы\""</string>
+    <string name="mhh_disable" msgid="8998210550117117437">"Адключаны раздзел \"Медыцына, здароўе і бальніцы\""</string>
+    <string name="enable_disable_technology_news" msgid="3517184627114999149">"Навіны тэхналогій"</string>
+    <string name="technology_news_enable" msgid="7995209394210455181">"Навіны тэхналогій уключаны"</string>
+    <string name="technology_news_disable" msgid="5483490380561851946">"Навіны тэхналогій адключаны"</string>
+    <string name="enable_disable_multi_category" msgid="626771003122899280">"Мульці-катэгорыя"</string>
+    <string name="multi_category_enable" msgid="1179299804641721768">"Мульці-катэгорыя ўключана"</string>
+    <string name="multi_category_disable" msgid="880104702904139505">"Мульці-катэгорыя адключаная"</string>
+    <string name="network_lte" msgid="7702681952521375754">"LTE (рэкамендуецца)"</string>
+    <string name="network_4G" msgid="2723512640529983138">"4G (рэкамендуецца)"</string>
+    <string name="network_global" msgid="1323190488685355309">"Глабальныя"</string>
+    <string name="cdma_system_select_title" msgid="5757657769327732833">"Выбар сістэмы"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Змяніць рэжым роўмінгу CDMA"</string>
+    <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Выбар сістэмы"</string>
+  <string-array name="cdma_system_select_choices">
+    <item msgid="176474317493999285">"Толькі галоўная"</item>
+    <item msgid="1205664026446156265">"Аўтаматычна"</item>
+  </string-array>
+    <string name="cdma_subscription_title" msgid="1162564010076763284">"Падпіска CDMA"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Пераключацца паміж RUIM/SIM і NV"</string>
+    <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"падпіска"</string>
+  <string-array name="cdma_subscription_choices">
+    <item msgid="2258014151300708431">"RUIM/SIM"</item>
+    <item msgid="5127722015571873880">"NV"</item>
+  </string-array>
+  <string-array name="cdma_subscription_values">
+    <item msgid="7494167883478914080">"0"</item>
+    <item msgid="6043847456049107742">"1"</item>
+  </string-array>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"Актывацыя прылады"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"Налады службы перад. дадзеных"</string>
+    <string name="carrier_settings_title" msgid="9028166176523012300">"Налады аператара"</string>
+    <string name="fdn" msgid="7878832555095183202">"Фіксаваныя нумары"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Нумары закрытай абаненцкай групы (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Спіс FDN"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Спіс закрытай абаненцкай групы (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"Актывацыя FDN"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Фіксаваныя нумары ўключаны"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Фіксаваныя нумары адключаны"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Уключыць FDN"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Адключыць FDN"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"Змяніць PIN2"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Адключыць FDN"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Уключыць FDN"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Кіраванне зафіксаванымі нумарамі"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Змяніць PIN-код для доступу FDN"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Кіраванне спісам тэлефонных нумароў"</string>
+    <string name="voice_privacy" msgid="3776841382844614716">"Палiтыка прыватнасцi Voice"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Уключыць пашыраны рэжым прыватнасці"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"Рэжым TTY"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Задаць рэжым TTY"</string>
+    <string name="auto_retry_mode_title" msgid="4073265511427813322">"Аўтаматычны паўтор"</string>
+    <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Уключыць рэжым аўтаматычнага паўтору"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Змяненне рэжыму TTY падчас відэавыкліку не дазваляецца"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Дадаць кантакт"</string>
+    <string name="menu_edit" msgid="7143003705504672374">"Рэдагаваць кантакт"</string>
+    <string name="menu_delete" msgid="3977150783449642851">"Выдаліць кантакт"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Набраць нумар кантакту"</string>
+    <string name="get_pin2" msgid="8204677063922225311">"Увядзіце код PIN2"</string>
+    <string name="name" msgid="7329028332786872378">"Імя"</string>
+    <string name="number" msgid="7905950798349903858">"Нумар"</string>
+    <string name="save" msgid="4094274636321939086">"Захаваць"</string>
+    <string name="add_fdn_contact" msgid="2481915899633353976">"Дадаць дазволены нумар"</string>
+    <string name="adding_fdn_contact" msgid="7627379633721940991">"Даданне дазволенага нумару..."</string>
+    <string name="fdn_contact_added" msgid="7458335758501736665">"Даданы дазволены нумар."</string>
+    <string name="edit_fdn_contact" msgid="7976936035587081480">"Змяніць дазволены нумар"</string>
+    <string name="updating_fdn_contact" msgid="8370929876849803600">"Абнаўленне дазволенага нумару..."</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"Дазволеныя нумары абноўленыя."</string>
+    <string name="delete_fdn_contact" msgid="6668958073074151717">"Выдаліць дазволены нумар"</string>
+    <string name="deleting_fdn_contact" msgid="5669163206349319969">"Выдаленне дазволенага нумару..."</string>
+    <string name="fdn_contact_deleted" msgid="7154162327112259569">"Дазволены нумар выдалены."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"FDN не быў абноўлены, таму што вы набралі няправільны PIN-код."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN не быў абноўлены, таму што нумар пусты або перавышае 20 знакаў."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Cпiс дазволеных нумароў не адноўлены. PIN2 ўведзены няправiльна, або нумар быў адхiлены."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"Аперацыя ў закрытай абаненцкай групе не ўдалася."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Чытанне з SIM-карты..."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"На вашай SIM-карце няма кантактаў."</string>
+    <string name="simContacts_title" msgid="1861472842524839921">"Выберыце кантакты для імпарту"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Адключыце рэжым палёту, каб імпартаваць кантакты з SIM-карты."</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Уключэнне/адключэнне PIN-коду SIM-карты"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Змена PIN-коду SIM-карты"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"PIN-код SIM-карты:"</string>
+    <string name="oldPinLabel" msgid="5287773661246368314">"Стары PIN"</string>
+    <string name="newPinLabel" msgid="207488227285336897">"Новы PIN"</string>
+    <string name="confirmPinLabel" msgid="257597715098070206">"Пацвердзіць новы PIN"</string>
+    <string name="badPin" msgid="8955102849303984935">"Стары PIN-код, які вы ўвялі, няправільны. Паспрабуйце яшчэ раз."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"PIN-коды, якія вы ўвялі, не супадаюць. Паспрабуйце яшчэ раз."</string>
+    <string name="invalidPin" msgid="5981171102258684792">"Увядзіце PIN-код, які змяшчае ад 4 да 8 лічбаў."</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"Выдаліць PIN-код SIM-карты"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"Задаць PIN-код SIM-карты"</string>
+    <string name="enable_in_progress" msgid="3417917024688497010">"Задаецца PIN-код…"</string>
+    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN-код зададзены"</string>
+    <string name="disable_pin_ok" msgid="2109571368635883688">"PIN-код выдалены"</string>
+    <string name="pin_failed" msgid="5644377896213584760">"PIN-код няправільны"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"PIN-код абноўлены"</string>
+    <string name="puk_requested" msgid="5921393215789090200">"Пароль няправільны. Зараз PIN-код заблакіраваны. Запытаны PUK-код."</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"Стары PIN2"</string>
+    <string name="newPin2Label" msgid="4573956902204349054">"Новы PIN2"</string>
+    <string name="confirmPin2Label" msgid="8100319484454787708">"Пацвердзіць новы PIN2"</string>
+    <string name="badPuk2" msgid="7910064009531541708">"PUK2 няправільны. Паўтарыце спробу."</string>
+    <string name="badPin2" msgid="6646896629970023109">"Стары код PIN2 няправільны. Паўтарыце спробу."</string>
+    <string name="mismatchPin2" msgid="4177967478551851117">"Коды PIN2 не супадаюць. Паўтарыце спробу."</string>
+    <string name="invalidPin2" msgid="1757045131429105595">"Увядзіце код PIN2 даўжынёй ад 4 да 8 лічбаў."</string>
+    <string name="invalidPuk2" msgid="7059081153334815973">"Увядзіце код PUK2 даўжынёй 8 лічбаў."</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"Код PIN2 абноўлены"</string>
+    <string name="label_puk2_code" msgid="4688069961795341948">"Увядзіце код PUK2"</string>
+    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Пароль няправільны. Зараз код PIN2 заблакіраваны. Каб паўтарыць спробу, змяніце код PIN 2."</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"Пароль няправільны. Зараз SIM-карта заблакіравана. Увядзіце код PUK2."</string>
+    <string name="puk2_blocked" msgid="3150263853077280049">"Код PUK2 заблакіраваны назаўжды."</string>
+    <string name="pin2_attempts" msgid="720736232885011507">\n"У вас засталося спроб: <xliff:g id="NUMBER">%d</xliff:g>."</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"Код PIN2 больш не заблакіраваны"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Памылка сеткі або SIM-карты"</string>
+    <string name="doneButton" msgid="2859593360997984240">"Гатова"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Нумар галасавой пошты"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Набор"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Паўторны набор"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Канферэнц-выклік"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Уваходны выклік"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Выклік скончаны"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"У чаканні"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Завяршэнне"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"У выкліку"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Новая галасавая пошта"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Новыя паведамленнi галасавой пошты (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Набраць <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Невядомы нумар галасавой пошты"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Не абслугоўваецца"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Выбраная сетка (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недаступная"</string>
+    <string name="incall_error_power_off" product="watch" msgid="772302793483607711">"Каб зрабіць выклік, адключыце рэжым палёту ці рэжым эканоміі зараду."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Адключыце рэжым палёту, каб зрабіць выклік."</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Адключыце рэжым палёту або падлучыцеся да бесправадной сеткі, каб зрабіць выклік."</string>
+    <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Выйдзіце з рэжыму экстранных зваротных выклікаў, каб зрабіць няэкстранны выклік."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Не зарэгістраваны ў сетцы."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Мабільная сетка недаступная."</string>
+    <!-- no translation found for incall_error_out_of_service_wfc (8741629779555132471) -->
+    <skip />
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Каб зрабіць выклік, увядзіце сапраўдны нумар."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Збой выклiку."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Зараз немагчыма дадаць выклік."</string>
+    <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Служба не падтрымліваецца"</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Немагчыма пераключыць выклікі."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Немагчыма аддзяліць выклік."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Немагчыма перадаць выклік."</string>
+    <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Канферэнц-выклікі немагчымы."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Немагчыма адхіліць выклік."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Немагчыма скончыць выклік(і)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Немагчыма ўтрымліваць выклікі."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Падлучыцеся да бесправадной сеткі, каб зрабіць выклік."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Дазволіць выклік па Wi-Fi-тэлефаніі."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Экстраны выклік"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Уключэнне радыё..."</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Не абслугоўваецца. Паўтор спробы..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Немагчыма ўвайсцi ў рэжым палёту падчас экстранага выклiку"</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Выклік немагчымы. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> не з\'яўляецца нумарам экстраннай службы."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Выклік немагчымы. Набраць нумар экстраннай службы."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Выкарыстоўвайце клавіятуру, каб набраць нумар"</string>
+    <string name="onscreenHoldText" msgid="2285258239691145872">"Утрымліваць"</string>
+    <string name="onscreenEndCallText" msgid="4403855834875398585">"Скончыць"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Кнопкі набору"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Выключыць гук"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Дадаць выклік"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Аб\'яднаць выклікі"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Пераключыць"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Кіраваць выклікамі"</string>
+    <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Кірав. канферэнцыяй"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Аўдыё"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Відэавыклік"</string>
+    <string name="importSimEntry" msgid="6614358325359736031">"Імпартаваць"</string>
+    <string name="importAllSimEntries" msgid="1503181169636198673">"Імпартаваць усе"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Імпартаванне кантактаў з SIM-карты"</string>
+    <string name="importToFDNfromContacts" msgid="2130620207013368580">"Імпартаваць з кантактаў"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Імпартаваны кантакт"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Не ўдалося імпартаваць кантакт"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Слыхавы апарат"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Уключыць функцыю сумяшчальнасці са слыхавым апаратам"</string>
+  <string-array name="tty_mode_entries">
+    <item msgid="512950011423868021">"TTY адключаны"</item>
+    <item msgid="3971695875449640648">"TTY поўны"</item>
+    <item msgid="1937509904407445684">"TTY HCO"</item>
+    <item msgid="5644925873488772224">"TTY VCO"</item>
+  </string-array>
+    <string name="dtmf_tones_title" msgid="5163153771291340803">"Сігналы DTMF"</string>
+    <string name="dtmf_tones_summary" msgid="3351820372864020331">"Задаць даўжыню тонаў DTMF"</string>
+  <string-array name="dtmf_tone_entries">
+    <item msgid="899650777817315681">"Звычайны"</item>
+    <item msgid="2883365539347850535">"Доўгі"</item>
+  </string-array>
+    <string name="network_info_message" msgid="7738596060242881930">"Паведамленне сеткі"</string>
+    <string name="network_error_message" msgid="3394780436230411413">"Паведамленне аб памылцы"</string>
+    <string name="ota_title_activate" msgid="8616918561356194398">"Актываваць тэлефон"</string>
+    <string name="ota_touch_activate" msgid="6553212803262586244">"Каб актываваць абслугоўванне вашага тэлефона, трэба выканаць спецыяльны выклік. \n\nНацісніце \"Актываваць\" і слухайце інструкцыі, неабходныя для актывацыі тэлефона."</string>
+    <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Актывацыя..."</string>
+    <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"На тэлефоне ідзе актывацыя службы мабільнай перадачы даных.\n\nГэта можа заняць да 5 хвілін."</string>
+    <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Прапусціць актывацыю?"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Калі прапусціць актывацыю, вы не зможаце здзяйсняць званкі або падлучэнні да мабільных сетак перадачы дадзеных (хаця вы зможаце падлучыцца да Wi-Fi). Кожны раз пры ўключэнні тэлефона вам будзе прапанавана актываваць яго."</string>
+    <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Прапусціць"</string>
+    <string name="ota_activate" msgid="1368528132525626264">"Актываваць"</string>
+    <string name="ota_title_activate_success" msgid="6570240212263372046">"Тэлефон актываваны."</string>
+    <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Праблема з актывацыяй"</string>
+    <string name="ota_listen" msgid="162923839877584937">"Выконвайце гукавыя інструкцыі, пакуль не пачуеце, што актывацыя завершаная."</string>
+    <string name="ota_speaker" msgid="6904589278542719647">"Дынамік"</string>
+    <string name="ota_progress" msgid="460876637828044519">"Ідзе праграмаванне вашага тэлефона..."</string>
+    <string name="ota_failure" msgid="7713756181204620397">"Не ўдалося запраграмаваць тэлефон"</string>
+    <string name="ota_successful" msgid="1880780692887077407">"Цяпер тэлефон актываваны. Запуск службы можа заняць да 15 хвілін."</string>
+    <string name="ota_unsuccessful" msgid="8072141612635635357">"Ваш тэлефон не актываваны. \nМагчыма, вам спатрэбіцца знайсці вобласць з лепшым пакрыццём (каля акна ці на вуліцы). \n\nПаўтарыце спробу ці звярнiцеся ў цэнтр абслугоўвання кліентаў, каб атрымаць дадатковую інфармацыю."</string>
+    <string name="ota_spc_failure" msgid="3909983542575030796">"ПАМЫЛКІ ПЕРАВЫШЭННЯ SPC"</string>
+    <string name="ota_call_end" msgid="4537279738134612388">"Назад"</string>
+    <string name="ota_try_again" msgid="7685477206465902290">"Паспрабаваць яшчэ раз"</string>
+    <string name="ota_next" msgid="3904945374358235910">"Далей"</string>
+    <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+    <string name="phone_entered_ecm_text" msgid="6266424252578731203">"У рэжыме аварыйнага зваротнага выкліку"</string>
+    <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Рэжым аварыйнага зваротнага выкліку"</string>
+    <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Падлучэнне для перадачы дадзеных адключана"</string>
+    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+      <item quantity="one">Злучэння для перадачы даных няма на працягу <xliff:g id="COUNT_1">%s</xliff:g> хвіліны</item>
+      <item quantity="few">Злучэння для перадачы даных няма на працягу <xliff:g id="COUNT_1">%s</xliff:g> хвілін</item>
+      <item quantity="many">Злучэння для перадачы даных няма на працягу <xliff:g id="COUNT_1">%s</xliff:g> хвілін</item>
+      <item quantity="other">Злучэння для перадачы даных няма на працягу <xliff:g id="COUNT_1">%s</xliff:g> хвіліны</item>
+    </plurals>
+    <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+      <item quantity="one">Тэлефон пяройдзе ў рэжым экстраннага зваротнага выкліку на <xliff:g id="COUNT_1">%s</xliff:g> хвіліну. У гэтым рэжыме немагчыма карыстацца праграмамі, якія выкарыстоўваюць злучэнне для перадачы даных. Жадаеце выйсці зараз?</item>
+      <item quantity="few">Тэлефон пяройдзе ў рэжым экстраннага зваротнага выкліку на <xliff:g id="COUNT_1">%s</xliff:g> хвіліны. У гэтым рэжыме немагчыма карыстацца праграмамі, якія выкарыстоўваюць злучэнне для перадачы даных. Жадаеце выйсці зараз?</item>
+      <item quantity="many">Тэлефон пяройдзе ў рэжым экстраннага зваротнага выкліку на <xliff:g id="COUNT_1">%s</xliff:g> хвілін. У гэтым рэжыме немагчыма карыстацца праграмамі, якія выкарыстоўваюць злучэнне для перадачы даных. Жадаеце выйсці зараз?</item>
+      <item quantity="other">Тэлефон пяройдзе ў рэжым экстраннага зваротнага выкліку на <xliff:g id="COUNT_1">%s</xliff:g> хвіліны. У гэтым рэжыме немагчыма карыстацца праграмамі, якія выкарыстоўваюць злучэнне для перадачы даных. Жадаеце выйсці зараз?</item>
+    </plurals>
+    <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+      <item quantity="one">Выбранае дзеянне недаступнае ў рэжыме экстраннага зваротнага выкліку. Тэлефон застанецца ў гэтым рэжыме на <xliff:g id="COUNT_1">%s</xliff:g> хвіліну. Жадаеце выйсці зараз?</item>
+      <item quantity="few">Выбранае дзеянне недаступнае ў рэжыме экстраннага зваротнага выкліку. Тэлефон застанецца ў гэтым рэжыме на <xliff:g id="COUNT_1">%s</xliff:g> хвіліны. Жадаеце выйсці зараз?</item>
+      <item quantity="many">Выбранае дзеянне недаступнае ў рэжыме экстраннага зваротнага выкліку. Тэлефон застанецца ў гэтым рэжыме на <xliff:g id="COUNT_1">%s</xliff:g> хвілін. Жадаеце выйсці зараз?</item>
+      <item quantity="other">Выбранае дзеянне недаступнае ў рэжыме экстраннага зваротнага выкліку. Тэлефон застанецца ў гэтым рэжыме на <xliff:g id="COUNT_1">%s</xliff:g> хвіліны. Жадаеце выйсці зараз?</item>
+    </plurals>
+    <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Выбранае дзеянне недаступнае падчас экстранага выкліку."</string>
+    <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Выхад з рэжыму экстранага выкліку"</string>
+    <string name="alert_dialog_yes" msgid="6674268047820703974">"Так"</string>
+    <string name="alert_dialog_no" msgid="1476091437797628703">"Не"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Скасаваць"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Сэрвіс"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Наладка"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Не заданы&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Іншыя налады выкліку"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Званкі праз правайдара <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"фатаграфія кантакта"</string>
+    <string name="goPrivate" msgid="865837794424530980">"перайсці да прыватнай гаворкі"</string>
+    <string name="selectContact" msgid="781975788478987237">"выбраць кантакт"</string>
+    <string name="not_voice_capable" msgid="2739898841461577811">"Галасавы выклік не падтрымліваецца"</string>
+    <string name="description_dial_button" msgid="7459705245418435351">"набор"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вібрацыя"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вібрацыя"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Візуальная галасавая пошта"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Задаць PIN-код"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Змяніць PIN-код"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Гук"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Рынгтон і вiбрацыя"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Убудаваныя SIM-карты"</string>
+    <string name="enable_video_calling_title" msgid="7237253660669000899">"Уключыць відэавыклікі"</string>
+    <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Каб уключыць відэавыклікі, трэба актываваць пашыраны рэжым 4G LTE у наладах сеткі."</string>
+    <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Налады сеткі"</string>
+    <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Закрыць"</string>
+    <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Экстранныя выклікі"</string>
+    <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Толькі экстранныя выклікі"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, гняздо: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Спецыяльныя магчымасці"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Выклік праз Wi-Fi ад"</string>
+    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Выклік праз Wi-Fi"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Дакраніцеся яшчэ раз, каб адкрыць"</string>
+    <string name="message_decode_error" msgid="3456481534066924855">"Памылка расшыфравання паведамлення."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-карта актывавала вашу службу і абнавіла функцыі роўмінгу вашага тэлефона."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Занадта шмат актыўных выклікаў. Скончыце ці аб\'яднайце існуючыя выклікі, перш чым рабіць новы выклік."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Немагчыма падключыцца, устаўце сапраўдную SIM-карту."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Страчана падключэнне да Wi-Fi. Выклік завершаны."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Змяніць PIN-код галасавой пошты"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Працягнуць"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Скасаваць"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ОК"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Пацвердзіце свой стары PIN-код"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Каб працягнуць, увядзіце PIN-код галасавой пошты."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Задайце новы PIN-код"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-код павінен утрымліваць <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> лічбаў."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Пацвердзіце PIN-код"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-код не супадае"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-код галасавой пошты абноўлены"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Немагчыма прызначыць PIN-код"</string>
+</resources>
diff --git a/res/values-bg/config.xml b/res/values-bg/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-bg/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 1e476f2..ba1f236 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Клетъчни данни"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Мобилни данни"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефонни услуги"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Набиране на спешни номера"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Липсващ номер на гласова поща"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM картата няма съхранен номер за гласова поща."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Добавяне на номер"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Само основният потребител може да променя настройките на гласовата поща."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM картата ви е отблокирана. Телефонът ви се отключва…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN за отключване на SIM мрежа"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Отключване"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Изпраща се заявка за отключване на мрежата..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Заявката за отключване на мрежата не бе успешна."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Отключването на мрежата бе успешно."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Настройките за клетъчна мрежа не са налице за този потребител"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Настройките за мобилната мрежа не са налице за този потребител"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Настройки за обаждане с GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Настройки за обаждане с GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Настройки за обаждане в CDMА"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Извършване на обажданията чрез"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Извършване на обажданията през SIP чрез"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Първо да се извежда запитване"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Няма налична мрежа"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Настройки"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Избиране на профили"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Профили за телефонни услуги"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Гласова поща"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Гласова поща (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Известия"</string>
     <string name="networks" msgid="8873030692174541976">"Мрежови оператори"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Спешни излъчвания"</string>
     <string name="call_settings" msgid="6112441768261754562">"Настройки за обаждане"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Когато няма достъп"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Номер, когато няма достъп"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Пренасочва се към <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Деактивирано"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Изкл."</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Операторът ви не поддържа деактивиране на пренасочването на обаждания, когато няма връзка с телефона."</string>
     <string name="updating_title" msgid="6146755386174019046">"Настройки за обаждане"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Само основният потребител може да променя настройките за обаждане."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Само администраторът може да променя настройките за обаждане."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Настройки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Грешка в настройките за обаждане"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Извършва се четене на настройки…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Не бяха направени промени."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Избор на услугата за гласова поща"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Вашият оператор"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Настройки за клетъчна мрежа"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стар ПИН"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нов ПИН"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Моля, изчакайте."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новият ПИН е твърде къс."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новият ПИН е твърде дълъг."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новият ПИН не е достатъчно надежден. Надеждната парола не бива да има последователни или повтарящи се цифри."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Старият ПИН не съответства."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Новият ПИН съдържа невалидни знаци."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Промяната на ПИН не е възможна"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Типът на съобщението не се поддържа. Обадете се на <xliff:g id="NUMBER">%s</xliff:g>, за да го чуете."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Настройки на мобилн. мрежа"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобилна мрежа"</string>
     <string name="label_available" msgid="1181658289009300430">"Налични мрежи"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Търси се…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Не са намерени мрежи."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Регистрация в мрежа."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Избиране на мрежов оператор"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Търсене на всички налични мрежи"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Автоматичен избор"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Автоматичен избор на предпочитана мрежа"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Автоматично избиране на мрежа"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Мрежа"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Регистрира се автоматично..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Предпочитан тип мрежа"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Промяна на операционния режим на мрежата"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Само GSM"</item>
     <item msgid="3817924849415716259">"Предпочита се GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Извършва се обаждане"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Мрежа"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Подобрен режим с 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Разширени обаждания"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Ползване на LTE услуги за подобряване на гласовите и др. комуникации (препоръч.)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Данните са активирани"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Разрешаване на преноса на данни"</string>
-    <string name="roaming" msgid="8871412572928323707">"Роуминг на данни"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Внимание"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роуминг"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Свързване с услуги за данни при роуминг"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Свързване с услуги за данни при роуминг"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Изгубихте връзката за данни, защото сте излезли от домашната си мрежа при изключен роуминг."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Това може да доведе до високи такси."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Да се разреши ли роуминг на данни?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Използване на данни"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> мобилни данни са използвани за периода <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобилни данни"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Достъп до данните през мобилната мрежа"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Обаждания през Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Видеообаждания от оператора"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Опции за GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Опции на CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Използване на данни"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> надвишен максимум\nСкоростта на данните е намалена до <xliff:g id="USED_1">%2$d</xliff:g> Кб/сек"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ от цикъла са изтекли\nСледващият период започва след <xliff:g id="USED_1">%2$d</xliff:g> дни (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Намаляване на скоростта на данните до <xliff:g id="USED">%1$d</xliff:g> Кб/сек, ако се превиши съответното ограничение"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Още информация относно правилата за пренос на данни през клетъчната мрежа на оператора ви"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Още информация за правилата за използване на данни на оператора ви"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS с клетъчно предаване"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS с клетъчно предаване"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS съобщението с клетъчно предаване е активирано"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Добавяне на контакт"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Редактиране на контакт"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Изтриване на контакта"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Набиране на контакта"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Въведете PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Име"</string>
     <string name="number" msgid="7905950798349903858">"Номер"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Фиксираните номера за набиране се изтриват…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Фиксираните номера за набиране са изтрити."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN не бе актуализирано, защото сте въвели неправилен ПИН."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN не бе актуализирано, защото номерът не може да надвишава 20 цифри."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN не бе актуализиран, защото номерът е празен или надвишава 20 цифри."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN не е актуализирано. PIN2 бе неправилен или телефонният номер бе отхвърлен."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Операцията с фиксираните номера за набиране (FDN) не бе успешна."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Четене на данни от SIM картата…"</string>
@@ -377,7 +404,7 @@
     <string name="simContacts_title" msgid="1861472842524839921">"Контакти за импортиране"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Изключете самолетния режим, за да импортирате контактите от SIM картата."</string>
     <string name="enable_pin" msgid="5422767284133234860">"Активиране/деактивиране на PIN за SIM карта"</string>
-    <string name="change_pin" msgid="9174186126330785343">"Промяна на PIN за SIM карта"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Промяна на ПИН за SIM карта"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"PIN код за SIM карта:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"Стар PIN"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Нов PIN"</string>
@@ -393,7 +420,7 @@
     <string name="pin_failed" msgid="5644377896213584760">"ПИН кодът е неправилен"</string>
     <string name="pin_changed" msgid="4455736268023261662">"ПИН кодът е актуализиран"</string>
     <string name="puk_requested" msgid="5921393215789090200">"Паролата е неправилна. ПИН кодът вече е блокиран. Изисква се PUK."</string>
-    <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"ПИН2"</string>
     <string name="oldPin2Label" msgid="8559146795026261502">"Стар PIN2"</string>
     <string name="newPin2Label" msgid="4573956902204349054">"Нов PIN2"</string>
     <string name="confirmPin2Label" msgid="8100319484454787708">"Потвърждаване на новия PIN2"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Неизвестен номер за гласова поща"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Няма покритие"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Избраната мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) не е налична"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Изключете самолетния режим, за да осъществите обаждане."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Включете мобилната мрежа, изключете самолетния режим или режима за запазване на батерията, за да се обадите."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Изключете самолетния режим, за да осъществите обаждане."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Изключете самолетния режим или се свържете с безжична мрежа, за да осъществите обаждане."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Излезте от режима на обратно обаждане при спешност, за да можете да извършвате обаждания, които не са спешни."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Няма регистрация в мрежата."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Няма достъп до клетъчната мрежа."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Не е налице клетъчна мрежа. Свържете се с безжична, за да осъществите обаждане."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Няма мобилна мрежа."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Няма мобилна мрежа. Свържете се с безжична, за да се обадите."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"За да извършите обаждане, въведете валиден номер."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Не може да се извърши обаждане."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Стартира се последователността MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Обаждането не бе успешно."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Понастоящем обаждането не може да бъде добавено."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Услугата не се поддържа"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Обажданията не могат да се превключат."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Обаждането не може да се отдели."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не могат да се правят конферентни обаждания."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Обаждането не може да се отхвърли."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Обаждането или съответно обажданията не могат да се освободят."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не може да се извършват обаждания."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Свържете се с безжична мрежа, за да осъществите обаждане."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"За да извършите обаждане, активирайте обажданията през Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Спешно обаждане"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиото се включва…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Няма услуга. Извършва се нов опит…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Не може да се влезе в самолетен режим по време на спешно обаждане."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Не може да се извърши обаждане. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> не е номер за спешни случаи."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Не може да се извърши обаждане. Наберете номер за спешни случаи."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Използвайте клавиатурата за набиране"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Импортиране на всички"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Импортиране на контактите от SIM картата"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Импортиране от контактите"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Контактът е импортиран"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Импортирането на контакта не бе успешно"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Слухови апарати"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Включване на съвместимостта за слухов апарат"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Влизане в режим на обратно обаждане при спешност"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим на обратно обаждане при спешност"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Връзката с данни е деактивирана"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Няма връзка за данни в продължение на <xliff:g id="COUNT_1">%s</xliff:g> минути</item>
-      <item quantity="one">Няма връзка за данни в продължение на <xliff:g id="COUNT_0">%s</xliff:g> минута</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Няма връзка за данни до <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Телефонът ще бъде в режим за обратно обаждане при спешност в продължение на <xliff:g id="COUNT_1">%s</xliff:g> минути. В този режим не могат да се използват приложения, работещи с връзка за данни. Искате ли да излезете сега?</item>
       <item quantity="one">Телефонът ще бъде в режим за обратно обаждане при спешност в продължение на <xliff:g id="COUNT_0">%s</xliff:g> минута. В този режим не могат да се използват приложения, работещи с връзка за данни. Искате ли да излезете сега?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"избиране на контакта"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Гласови обаждания не се поддържат"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"набиране"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибриране"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибриране"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуална гласова поща"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Задаване на ПИН"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Промяна на ПИН"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодия и вибриране"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени SIM карти"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Включване на видеообажданията"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само спешни обаждания"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM карта, слот: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Достъпност"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Вход. обаждане през Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Обаждане през Wi-Fi от"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Обаждане през Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Докоснете отново за отваряне"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Докоснете отново, за да отворите"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"При декодирането на съобщението възникна грешка."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM картата е активирала клетъчните ви услуги и е актуализирала възможностите за роуминг на телефона ви."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Активните обаждания са твърде много. Моля, завършете или обединете съществуващи обаждания, преди да започнете ново."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Не може да се установи връзка. Моля, поставете валидна SIM карта."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Връзката с Wi-Fi прекъсна. Обаждането завърши."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Промяна на ПИН за гласовата поща"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Напред"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Отказ"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Потвърдете стария си ПИН"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"За да продължите, въведете ПИН за гласовата си поща."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Задайте нов ПИН"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ПИН трябва да съдържа между <xliff:g id="MIN">%1$d</xliff:g> и <xliff:g id="MAX">%2$d</xliff:g> цифри."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Потвърдете своя ПИН"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"ПИН кодовете не съвпадат"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ПИН за гласовата поща бе актуализиран"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ПИН не може да бъде зададен"</string>
 </resources>
diff --git a/res/values-bn-rBD/arrays.xml b/res/values-bn/arrays.xml
similarity index 100%
rename from res/values-bn-rBD/arrays.xml
rename to res/values-bn/arrays.xml
diff --git a/res/values-bn/config.xml b/res/values-bn/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-bn/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn/strings.xml
similarity index 84%
rename from res/values-bn-rBD/strings.xml
rename to res/values-bn/strings.xml
index 83886d9..f3d25dc 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"সেলুলার ডেটা"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"মোবাইল ডেটা"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ফোনের পরিষেবা"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"জরুরি ডায়ালার"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ফোন"</string>
@@ -35,7 +35,7 @@
     <string name="audio_mode_speaker" msgid="27649582100085266">"স্পিকার"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"হ্যান্ডসেট ইয়ারপিস"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"তারযুক্ত হেডসেট"</string>
-    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"ব্লুটুথ"</string>
     <string name="wait_prompt_str" msgid="7601815427707856238">"নিম্নলিখিত টোনগুলি পাঠাবেন?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"টোনগুলি পাঠানো হচ্ছে\n"</string>
     <string name="send_button" msgid="4106860097497818751">"পাঠান"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ভয়েসমেল নম্বর অনুপস্থিত"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"সিম কার্ডটিতে কোনো ভয়েসমেল নম্বর সংরক্ষিত নেই৷"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"একটি নম্বর যোগ করুন"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ভয়েসমেল সেটিংস কেবলমাত্র প্রাথমিক ব্যবহারকারী দ্বারা পরিবর্তন করা যাবে।"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"আপনার সিম কার্ডকে অবরোধ মুক্ত করা হয়েছে৷ আপনার ফোন আনলক করা হচ্ছে..."</string>
     <string name="label_ndp" msgid="780479633159517250">"সিম নেটওয়ার্ক আনলক পিন"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"আনলক করুন"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"নেটওয়ার্ক আনলকের অনুরোধ করা হচ্ছে..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"নেটওয়ার্ক আনলক করার অনুরোধ অসফল হয়েছে৷"</string>
     <string name="unlock_success" msgid="6770085622238180152">"নেটওয়ার্ক আনলক সফল হয়েছে৷"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"এই ব্যবহারকারীর জন্য সেলুলার নেটওয়ার্ক সেটিংস উপলব্ধ নয়"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"মোবাইল নেটওয়ার্কের সেটিংস এই ব্যবহারকারীর জন্য উপলব্ধ নয়"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM কল সেটিংস"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM কল সেটিংস (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA কল সেটিংস"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"এর দ্বারা কল করুন"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP র দ্বারা কল করুন"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"প্রথমে জিজ্ঞাসা করুন"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"কোনো নেটওয়ার্ক উপলব্ধ নেই"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"সেটিংস"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"অ্যাকাউন্টগুলি চয়ন করুন"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ফোন অ্যাকাউন্টগুলি"</string>
@@ -70,11 +72,12 @@
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"অ্যাকাউন্ট সেটিংস কনফিগার করুন"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"সমস্ত কলিং অ্যাকাউন্ট"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"কোন অ্যাকাউন্টগুলি কল করতে পারবে তা নির্বাচন করুন"</string>
-    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi কলিং"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"ওয়াই-ফাই কলিং"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"বিল্ট-ইন সংযোগ পরিষেবা"</string>
     <string name="voicemail" msgid="8693759337917898954">"ভয়েসমেল"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ভয়েসমেল (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"বিজ্ঞপ্তি"</string>
     <string name="networks" msgid="8873030692174541976">"নেটওয়ার্ক অপারেটর"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"জরুরী সম্প্রচার"</string>
     <string name="call_settings" msgid="6112441768261754562">"কল সেটিংস"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"যখন অনুপলব্ধ থাকে"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"যখন সংযোগ স্থাপন করা যাচ্ছে না তখনকার নম্বর"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> এ ফরওয়ার্ড করা হচ্ছে"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"অক্ষম করা হয়েছে"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"বন্ধ আছে"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"আপনার ক্যারিয়ার আপনার ফোনের সাথে যখন সংযোগ স্থাপন করা যাচ্ছে না সেই অবস্থায় কল ফরওয়ার্ডিংকে অক্ষম করা সমর্থন করে না৷"</string>
     <string name="updating_title" msgid="6146755386174019046">"কল সেটিংস"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"কেবলমাত্র প্রাথমিক ব্যবহারকারী কল সেটিংস পরিবর্তন করতে পারবেন৷"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"কেবলমাত্র প্রশাসক ব্যবহারকারী কল সেটিংস পরিবর্তন করতে পারবেন৷"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"সেটিংস (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"কল সেটিংসে ত্রুটি"</string>
     <string name="reading_settings" msgid="1920291699287055284">"সেটিংস পড়ছে…"</string>
@@ -144,9 +147,20 @@
     <string name="fw_change_failed" msgid="5298103228470214665">"ফরওয়ার্ড করার নম্বর পরিবর্তন করা যায়নি৷\nযদি এই সমস্যা থেকেই যায় তাহলে আপনার ক্যারিয়ারের সাথে যোগাযোগ করুন৷"</string>
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"বর্তমান ফরওয়ার্ড করার নম্বরের সেটিংস পুনরুদ্ধার এবং সংরক্ষণ করা যায়নি৷\nযেকোনো উপায়ে নতুন পরিষেবা প্রদানকারীর সাহায্য নিতে চান?"</string>
     <string name="no_change" msgid="3186040086622435212">"কোনো পরিবর্তন করা হয়নি৷"</string>
-    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ভয়েসমেল পরিষেবা চয়ন করুন"</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ভয়েসমেল পরিষেবা বেছে নিন"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"আপনার পরিষেবা প্রদানকারী"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"সেলুলার নেটওয়ার্ক সেটিংস"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"পুরানো পিন"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"নতুন পিন"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"অনুগ্রহ করে অপেক্ষা করুন৷"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"নতুন পিনটি খুবই ছোট৷"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"নতুন পিনটি খুবই বড়৷"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"নতুন পিনটি খুবই দুর্বল৷ একটি শক্তিশালী পাসওয়ার্ডে ধারাবাহিক ক্রম বা পুনরাবৃত্ত সংখ্যা থাকা উচিৎ নয়৷"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"পুরানো পিন মিলছে না৷"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"নতুন পিনে অবৈধ অক্ষর রয়েছে৷"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"পিন পরিবর্তন করা গেল না"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"এই ধরণের বার্তা সমর্থিত নয় , শুোনার জন্য <xliff:g id="NUMBER">%s</xliff:g> এ কল করুন৷"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"মোবাইল নেটওয়ার্ক সেটিংস"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"মোবাইল নেটওয়ার্ক"</string>
     <string name="label_available" msgid="1181658289009300430">"উপলব্ধ নেটওয়ার্কগুলি"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"অনুসন্ধান করছে..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"কোনো নেটওয়ার্ক পাওয়া যায়নি৷"</string>
@@ -156,14 +170,14 @@
     <string name="not_allowed" msgid="5613353860205691579">"আপনার সিম কার্ড এই নেটওয়ার্কে সংযোগ স্থাপনের অনুমতি দেয় না৷"</string>
     <string name="connect_later" msgid="2308119155752343975">"এই মুহূর্তে এই নেটওয়ার্কের সাথে সংযোগ স্থাপন করা যাচ্ছে না৷ পরে আবার চেষ্টা করুন৷"</string>
     <string name="registration_done" msgid="495135664535876612">"নেটওয়ার্কে নিবন্ধিত করা হয়েছে৷"</string>
-    <string name="sum_carrier_select" msgid="3494252551249882718">"একটি নেটওয়ার্ক অপারেটর চয়ন করুন"</string>
+    <string name="sum_carrier_select" msgid="3494252551249882718">"একটি নেটওয়ার্ক অপারেটর বেছে নিন"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"সমস্ত উপলব্ধ নেটওয়ার্কের জন্য অনুসন্ধান করুন"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"স্বয়ংক্রিয়ভাবে চয়ন করুন"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"স্বয়ংক্রিয়ভাবে পছন্দের নেটওয়ার্ক চয়ন করুন"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"স্বয়ংক্রিয়ভাবে নেটওয়ার্ক নির্বাচন করুন"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"নেটওয়ার্ক"</string>
     <string name="register_automatically" msgid="6017849844573519637">"স্বয়ংক্রিয় নিবন্ধীকরণ..."</string>
-    <string name="preferred_network_mode_title" msgid="2336624679902659306">"পছন্দের নেটওয়ার্ক প্রকার"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"পছন্দের নেটওয়ার্ক"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"নেটওয়ার্ক অপারেটিং মোড পরিবর্তন করুন"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"পছন্দের নেটওয়ার্ক প্রকার"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"পছন্দের নেটওয়ার্ক"</string>
     <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"পছন্দের নেটওয়ার্ক মোড: WCDMA পছন্দসই"</string>
     <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"পছন্দের নেটওয়ার্ক মোড: শুধুমাত্র GSM"</string>
     <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"পছন্দের নেটওয়ার্ক মোড: শুধুমাত্র WCDMA"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"শুধুমাত্র GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA সুবিধাজনক"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"কলিং"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"নেটওয়ার্ক"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"উন্নত 4G LTE মোড"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"উন্নত কলিং"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ভয়েস এবং অন্যান্য যোগাযোগব্যবস্থা উন্নত করতে LTE পরিষেবা ব্যবহার করুন (প্রস্তাবিত)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ডেটা সক্ষম করা হয়েছে"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ডেটা ব্যবহারের অনুমতি দিন"</string>
-    <string name="roaming" msgid="8871412572928323707">"রোমিং ডেটা"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"খেয়াল করুন"</string>
+    <string name="roaming" msgid="7894878421600247140">"রোমিং"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"রোমিংয়ে থাকাকালীন ডেটা পরিষেবাগুলির সাথে সংযোগ স্থাপন করুন"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"রোমিংয়ে থাকাকালীন ডেটা পরিষেবাগুলির সাথে সংযোগ স্থাপন করুন"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"আপনি ডেটা রোমিং বন্ধ করে আপনার হোম নেটওয়ার্কের বাইরে চলে আসায় আপনার ডেটা সংযোগ হারিয়ে ফেলেছেন৷"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"আপনাকে উল্লেখযোগ্য পরিমাণে চার্জ করা হতে পারে৷"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ডেটা রোমিংয়ের অনুমতি দেবেন?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ডেটার ব্যবহার"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> এর মধ্যে <xliff:g id="ID_1">%1$s</xliff:g> মোবাইল ডেটা ব্যবহার করা হয়েছে"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"পরিষেবা প্রদানকারী"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"মোবাইল ডেটা"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"মোবাইল নেটওয়ার্ক ব্যবহার করে ডেটা অ্যাক্সেস করুন"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"ওয়াই-ফাই কলিং"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"পরিষেবা প্রদানকারীর ভিডিও কলিং"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS বিকল্পগুলি"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA বিকল্পগুলি"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ডেটা ব্যবহার"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> সর্বোচ্চ সীমা পেরিয়ে গেছে\nডেটার হার <xliff:g id="USED_1">%2$d</xliff:g> Kb/s এ হ্রাস করা হয়েছে"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"এই সময়কালের <xliff:g id="USED_0">%1$d</xliff:g>٪ অতিক্রান্ত হয়েছে\nপরবর্তী সময়কাল <xliff:g id="USED_1">%2$d</xliff:g> দিনের মধ্যে শুরু হবে (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ডেটা ব্যবহারের সীমা পেরিয়ে গেলে ডেটা হারকে কমিয়ে <xliff:g id="USED">%1$d</xliff:g> Kb/s করা হয়"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"আপনার পরিষেবা প্রদানকারীর সেলুলার নেটওয়ার্ক ডেটা ব্যবহারের নীতি সম্বন্ধে আরো তথ্য"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"আপনার ক্যারিয়ারের মোবাইল নেটওয়ার্ক ডেটা ব্যবহারের নীতি সম্বন্ধে আরো তথ্য"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"সেল সম্প্রচার SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"সেল সম্প্রচার SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"সেল সম্প্রচার SMS সক্ষম করা হয়েছে"</string>
@@ -349,12 +375,13 @@
     <string name="voice_privacy_summary" msgid="3159383389833516214">"উন্নত গোপনীয়তা মোড সক্ষম করুন"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY মোড"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY মোড সেট করুন"</string>
-    <string name="auto_retry_mode_title" msgid="4073265511427813322">"স্বয়ংক্রিয় পুনরায় প্রচেষ্টা"</string>
+    <string name="auto_retry_mode_title" msgid="4073265511427813322">"স্বয়ংক্রিয় আবার প্রচেষ্টা"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করার মোড সক্ষম করুন"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"একটি ভিডিও কল করার সময় TTY মোড পরিবর্তন করার অনুমতি দেওয়া হয় না"</string>
     <string name="menu_add" msgid="1882023737425114762">"পরিচিতি যোগ করুন"</string>
     <string name="menu_edit" msgid="7143003705504672374">"পরিচিতি সম্পাদনা করুন"</string>
     <string name="menu_delete" msgid="3977150783449642851">"পরিচিতি মুছুন"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"পরিচিতির নম্বরে ডায়াল করুন"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 টাইপ করুন"</string>
     <string name="name" msgid="7329028332786872378">"নাম"</string>
     <string name="number" msgid="7905950798349903858">"নম্বর"</string>
@@ -369,13 +396,13 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ডায়াল করার জন্য স্থির নম্বর মোছা হচ্ছে..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"স্থায়ী ডায়ালের নম্বর মুছে ফেলা হয়েছে৷"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"আপনি একটি ভুল পিন টাইপ করায় FDN আপডেট করা হয়নি৷"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN আপডেট করা হয়নি কারণ নম্বরটি ২০ সংখ্যার বেশি হলে চলবে না৷"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN আপডেট করা হয়নি কারণ নম্বরটি খালি বা ২০ সংখ্যার বেশি।"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN আপডেট করা হয়নি৷ PIN2 ভুল ছিল, বা ফোন নম্বর বাতিল করা হয়েছে৷"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN অপারেশন ব্যর্থ হয়েছে৷"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"সিম কার্ড থেকে পড়া হচ্ছে…"</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"আপনার সিম কার্ডে কোনো পরিচিত নেই৷"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"পরিচিতগুলি আমদানি করুন"</string>
-    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM কার্ডটি থেকে পরিচিতিগুলি আমদানি করতে বিমান মোড বন্ধ করুন৷"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"সিম কার্ডটি থেকে পরিচিতিগুলি আমদানি করতে বিমান মোড বন্ধ করুন৷"</string>
     <string name="enable_pin" msgid="5422767284133234860">"সিম পিন সক্ষম/অক্ষম করুন"</string>
     <string name="change_pin" msgid="9174186126330785343">"সিম পিন পরিবর্তন করুন"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"সিম পিন:"</string>
@@ -385,8 +412,8 @@
     <string name="badPin" msgid="8955102849303984935">"আপনার দ্বারা টাইপ করা পুরানো পিন সঠিক নয়৷ আবার চেষ্টা করুন৷"</string>
     <string name="mismatchPin" msgid="5923253370683071889">"আপনার টাইপ করা PINগুলি মিলছে না৷ আবার চেষ্টা করুন৷"</string>
     <string name="invalidPin" msgid="5981171102258684792">"৪ থেকে ৮ সংখ্যা বিশিষ্ট একটি পিন টাইপ করুন৷"</string>
-    <string name="disable_sim_pin" msgid="3419351358300716472">"SIM এর পিন সাফ করুন"</string>
-    <string name="enable_sim_pin" msgid="4845145659651484248">"SIM এর পিন সেট করুন"</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"সিম এর পিন সাফ করুন"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"সিম এর পিন সেট করুন"</string>
     <string name="enable_in_progress" msgid="3417917024688497010">"পিন সেটিং…"</string>
     <string name="enable_pin_ok" msgid="2918545971413270063">"পিন সেট করুন"</string>
     <string name="disable_pin_ok" msgid="2109571368635883688">"পিন সাফ করা হয়েছে"</string>
@@ -405,15 +432,15 @@
     <string name="pin2_changed" msgid="3724522579945610956">"PIN2 আপডেট হয়েছে"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"PUK2 কোড লিখুন"</string>
     <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"পাসওয়ার্ডটি ভুল৷ পিন2 এখন অবরুদ্ধ৷ আবার চেষ্টা করতে, পিন 2 পরিবর্তন করুন৷"</string>
-    <string name="puk2_requested" msgid="5831015200030161434">"পাসওয়ার্ডটি ভুল৷ SIM এখন অবরুদ্ধ৷ PUK2 লিখুন৷"</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"পাসওয়ার্ডটি ভুল৷ সিম এখন অবরুদ্ধ৷ PUK2 লিখুন৷"</string>
     <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 স্থায়ীভাবে অবরুদ্ধ করা হয়েছে৷"</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"আপনার কাছে <xliff:g id="NUMBER">%d</xliff:g>টি প্রচেষ্টা অবশিষ্ট রয়েছে৷"</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 এখন আর অবরুদ্ধ নয়"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"নেটওয়ার্ক বা SIM কার্ড ত্রুটি৷"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"নেটওয়ার্ক বা সিম কার্ড ত্রুটি৷"</string>
     <string name="doneButton" msgid="2859593360997984240">"সম্পন্ন হয়েছে"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"ভয়েসমেল নম্বর"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"ডায়াল করা হচ্ছে"</string>
-    <string name="card_title_redialing" msgid="8253487008234167266">"পুনরায় ডায়াল করা হচ্ছে"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"আবার ডায়াল করা হচ্ছে"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"কনফারেন্স কল"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"ইনকামিং কল"</string>
     <string name="card_title_call_ended" msgid="5544730338889702298">"কল সমাপ্ত হয়েছে"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ভয়েসমেল নম্বর অজানা"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"কোনো পরিষেবা নেই"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"নির্বাচিত নেটওয়ার্ক (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) অনুপলব্ধ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"কল করতে বিমান মোড বন্ধ করুন৷"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"কল করতে মোবাইল নেটওয়ার্ক চালু করুন, বিমান মোড বা ব্যাটারি সেভার বন্ধ করুন৷"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"কল করতে বিমান মোড বন্ধ করুন৷"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"বিমান মোড বন্ধ করুন বা কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"একটি সাধারণ কল করতে জরুরি কলব্যাক মোডের বাইরে আসুন৷"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"নেটওয়ার্কে নিবন্ধিত নয়৷"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"সেলুলার নেটওয়ার্ক উপলব্ধ নয়।"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"মোবাইল নেটওয়ার্ক উপলব্ধ নেই৷ একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"মোবাইল নেটওয়ার্ক উপলব্ধ নয়৷"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"মোবাইল নেটওয়ার্ক উপলব্ধ নেই৷ একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"কল করা যাবে না৷"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ক্রম চালু হচ্ছে…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"কল ব্যর্থ হয়েছে৷"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"এই মুহূর্তে কল যোগ করা যাবে না৷"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"পরিষেবা সমর্থিত নয়"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"কলগুলি স্যুইচ করা যাবে না৷"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"কল আলাদা করা যাবে না৷"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"কনফারেন্স কলগুলি করা যায়নি৷"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"কল প্রত্যাখ্যান কলা যাবে না৷"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"কল(গুলি) কাটা যাবে না৷"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"কলগুলি ধরে রাখা যাবে না।"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"কোনো কল করতে Wi-Fi কলিং সক্ষম করুন৷"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"জরুরি কল"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"রেডিও চালু করা হচ্ছে…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"কোন পরিষেবা নেই৷ আবার চেষ্টা করা হচ্ছে..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"কোনো জরুরী কলের সময় বিমান মোডে প্রবেশ করা যাবে না৷"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"কল করা যাবে না৷ <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> কোনো জরুরী নম্বর নয়৷"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"কল করা যাবে না৷ কোনো জরুরী নম্বর ডায়াল করুন৷"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ডায়াল করতে কীবোর্ড ব্যবহার করুন"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"সবকিছু আমদানি করুন"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"সিম পরিচিতিগুলি আমদানি করা হচ্ছে"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"পরিচিতিগুলি থেকে আমদানি করুন"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"পরিচিতি আমদানি করা হয়েছে"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"পরিচিতি আমদানি করতে ব্যর্থ হয়েছে"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"শ্রবণ যন্ত্রগুলি"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"শ্রবণ যন্ত্র উপযুক্ততা চালু করুন"</string>
   <string-array name="tty_mode_entries">
@@ -485,7 +518,7 @@
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"সক্রিয় হচ্ছে..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"ফোনটি আপনার মোবাইল ডেটা পরিষেবা সক্রিয় করছে৷\n\nএটি ৫ মিনিট পর্যন্ত সময় নিতে পারে৷"</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"সক্রিয়করণ এড়িয়ে যেতে চান?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"যদি আপনি সক্রিয়করণকে উপেক্ষা করেন, তাহলে আপনি কল করতে অথবা মোবাইল ডেটা নেটওয়ার্কগুলির সাথে সংযোগ স্থাপন করতে পারবেন না (যদিও আপনি Wi-Fi নেটওয়ার্কগুলির সাথে সংযুক্ত হতে পারছেন)৷ যতক্ষণ না আপনি আপনার ফোন সক্রিয় করছেন, ততক্ষণ যখনই আপনি এটি চালু করবেন তখনই আপনাকে এটি সক্রিয় করতে বলা হবে৷"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"যদি আপনি সক্রিয়করণকে উপেক্ষা করেন, তাহলে আপনি কল করতে অথবা মোবাইল ডেটা নেটওয়ার্কগুলির সাথে সংযোগ স্থাপন করতে পারবেন না (যদিও আপনি ওয়াই-ফাই নেটওয়ার্কগুলির সাথে সংযুক্ত হতে পারছেন)৷ যতক্ষণ না আপনি আপনার ফোন সক্রিয় করছেন, ততক্ষণ যখনই আপনি এটি চালু করবেন তখনই আপনাকে এটি সক্রিয় করতে বলা হবে৷"</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"এড়িয়ে যান"</string>
     <string name="ota_activate" msgid="1368528132525626264">"সক্রিয় করুন"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"ফোন সক্রিয় করা হয়েছে৷"</string>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"জরুরি কলব্যাক মোডে প্রবেশ করা হয়েছে"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"জরুরি কলব্যাক মোড"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ডেটা সংযোগ অক্ষম করা হয়েছে"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> মিনিট পর্যন্ত কোনো ডেটা সংযোগ থাকবে না</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> পর্যন্ত কোনো ডেটা সংযোগ থাকবে না"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য জরুরী কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন একটি ডেটা সংযোগ ব্যবহার করে কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
       <item quantity="other">ফোনটি <xliff:g id="COUNT_1">%s</xliff:g> মিনিটের জন্য জরুরী কলব্যাক মোডে থাকবে৷ এই মোডে থাকাকালীন একটি ডেটা সংযোগ ব্যবহার করে কোনো অ্যাপ্লিকেশান ব্যবহার করা যাবে না৷ আপনি কি এখনই প্রস্থান করতে চান?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"পরিচিতি নির্বাচন করুন"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ভয়েস কলিং সমর্থিত নয়"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ডায়াল করুন"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"কম্পন"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"কম্পন"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ভিজ্যুয়াল ভয়েসমেল"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"শব্দ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN সেট করুন"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"পিন পরিবর্তন করুন"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"রিংটোন ও কম্পন"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"বিল্ট-ইন সিম কার্ডগুলি"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ভিডিও কলিং চালু করুন"</string>
@@ -543,11 +572,26 @@
     <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"বন্ধ করুন"</string>
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"জরুরি কলগুলি"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"শুধুমাত্র জরুরী কলিং"</string>
-    <string name="sim_description_default" msgid="4778679519938775515">"SIM কার্ড, স্লট: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"সিম কার্ড, স্লট: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"অ্যাক্সেসযোগ্যতা"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"আগত Wi-Fi কল"</string>
-    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi কল"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"খোলার জন্য আবার স্পর্শ করুন"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"এর থেকে Wi-Fi কল"</string>
+    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ওয়াই-ফাই কল"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"খোলার জন্য আবার আলতো চাপুন"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"বার্তাটি ডিকোড করার সময় একটি ত্রুটি ঘটেছে৷"</string>
-    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"একটি SIM কার্ড আপনার পরিষেবা সক্রিয় করেছে এবং আপনার ফোনের রোমিং ক্ষমতা আপডেট করা হয়েছে৷"</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"একটি সিম কার্ড আপনার পরিষেবা সক্রিয় করেছে এবং আপনার ফোনের রোমিং ক্ষমতা আপডেট করা হয়েছে৷"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"অনেকগুলি কল সক্রিয় রয়েছে। অনুগ্রহ করে একটি নতুন কল করার আগে বিদ্যমান কলগুলি কেটে দিন বা এটিকে সেই কলগুলিতে অন্তর্ভুক্ত করুন।"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"সংযোগ করা যায়নি, অনুগ্রহ করে একটি বৈধ SIM কার্ড ঢোকান৷"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"ওয়াই-ফাই সংযোগ বিচ্ছিন্ন হয়েছে। কল কেটে গেছে।"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ভয়েসমেলের PIN পরিবর্তন করুন"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"চালিয়ে যান"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"বাতিল করুন"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ঠিক আছে"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"আপনার পুরানো PIN নিশ্চিত করুন"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"চালিয়ে যেতে আপনার ভয়েসমেলের PIN লিখুন৷"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"একটি নতুন PIN সেট করুন"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN অবশ্যই <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> সংখ্যার হওয়া উচিৎ৷"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"আপনার PIN নিশ্চিত করুন"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PINগুলি মিলছে না"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ভয়েসমেলের PIN আপডেট করা হয়েছে"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN সেট করা গেল না"</string>
 </resources>
diff --git a/res/values-ky-rKG/arrays.xml b/res/values-bs/arrays.xml
similarity index 94%
copy from res/values-ky-rKG/arrays.xml
copy to res/values-bs/arrays.xml
index ebaa329..42d6395 100644
--- a/res/values-ky-rKG/arrays.xml
+++ b/res/values-bs/arrays.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string-array name="preferred_network_mode_choices_world_mode">
-    <item msgid="3391522821603584785">"Глобалдуу"</item>
+    <item msgid="3391522821603584785">"Globalno"</item>
     <item msgid="6753774959494729275">"LTE / CDMA"</item>
     <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
   </string-array>
diff --git a/res/values-bs/config.xml b/res/values-bs/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-bs/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
new file mode 100644
index 0000000..af16abc
--- /dev/null
+++ b/res/values-bs/strings.xml
@@ -0,0 +1,597 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilni podaci"</string>
+    <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonske usluge"</string>
+    <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Hitno biranje"</string>
+    <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"FDN lista"</string>
+    <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
+    <string name="private_num" msgid="6713286113000232309">"Privatni broj"</string>
+    <string name="payphone" msgid="4793877574636445118">"Telefonska govornica"</string>
+    <string name="onHold" msgid="9035493194749959955">"Na čekanju"</string>
+    <string name="mmiStarted" msgid="6347869857061147003">"MMI kȏd je pokrenut"</string>
+    <string name="ussdRunning" msgid="485588686340541690">"USSD kȏd je pokrenut…"</string>
+    <string name="mmiCancelled" msgid="2771923949751842276">"MMI kȏd je otkazan"</string>
+    <string name="cancel" msgid="5044513931633602634">"Otkaži"</string>
+    <string name="enter_input" msgid="1810529547726803893">"USSD poruka mora imati između <xliff:g id="MIN_LEN">%d</xliff:g> i <xliff:g id="MAX_LEN">%d</xliff:g> znakova. Pokušajte ponovo."</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Upravljaj konferencijskim pozivom"</string>
+    <string name="ok" msgid="3811371167865772377">"Uredu"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Zvučnik"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"Slušalice telefona"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Žičane slušalice"</string>
+    <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
+    <string name="wait_prompt_str" msgid="7601815427707856238">"Poslati sljedeće tonove?\n"</string>
+    <string name="pause_prompt_str" msgid="1789964702154314806">"Slanje tonova\n"</string>
+    <string name="send_button" msgid="4106860097497818751">"Pošalji"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Da"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"Ne"</string>
+    <string name="wild_prompt_str" msgid="5543521676355533577">"Zamijeni zamjenski znak sa"</string>
+    <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj govorne pošte"</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Broj govorne pošte nije pohranjen na SIM kartici."</string>
+    <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
+    <!-- no translation found for voice_number_setting_primary_user_only (6596604364907022416) -->
+    <skip />
+    <string name="puk_unlocked" msgid="2284912838477558454">"Vaša SIM kartica je odblokirana. Telefon se otključava…"</string>
+    <string name="label_ndp" msgid="780479633159517250">"PIN za otključavanje mreže na SIM kartici"</string>
+    <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Otključaj"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Odbaci"</string>
+    <string name="requesting_unlock" msgid="6412629401033249351">"Traži se otključavanje mreže…"</string>
+    <string name="unlock_failed" msgid="6490531697031504225">"Neuspješan zahtjev za otključavanje mreže."</string>
+    <string name="unlock_success" msgid="6770085622238180152">"Mreža je uspješno otključana"</string>
+    <!-- no translation found for mobile_network_settings_not_available (7355254462995117896) -->
+    <skip />
+    <string name="labelGSMMore" msgid="5930842194056092106">"Postavke za GSM poziv"</string>
+    <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Postavke za GSM poziv (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCDMAMore" msgid="1630676740428229339">"Postavke za CDMA poziv"</string>
+    <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Postavke za CDMA poziv (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Nazivi pristupnih tačaka"</string>
+    <string name="settings_label" msgid="3876743539816984008">"Postavke mreže"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Računi za pozivanje"</string>
+    <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Uputi pozive putem"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Uputi SIP pozive putem"</string>
+    <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Prvo pitaj"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nema dostupnih mreža"</string>
+    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Postavke"</string>
+    <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Izaberi račune"</string>
+    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonski računi"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Dodaj SIP račun"</string>
+    <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Konfiguriraj postavke računa"</string>
+    <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"Svi računi za pozivanje"</string>
+    <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Odaberite koji računi mogu upućivati pozive"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi pozivanje"</string>
+    <string name="connection_service_default_label" msgid="1498481943805913754">"Ugrađena usluga povezivanja"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Govorna pošta"</string>
+    <string name="voicemail_settings_with_label" msgid="152724978380748296">"Govorna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="voicemail_abbreviated" msgid="2215592488517217448">"GP:"</string>
+    <string name="networks" msgid="8873030692174541976">"Mrežni operateri"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hitna emitiranja"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Postavke poziva"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Dodatne postavke"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Dodatne postavke (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Dodatne postavke samo GSM poziva"</string>
+    <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Dodatne postavke za CDMA poziv"</string>
+    <string name="sum_cdma_call_settings" msgid="284753265979035549">"Dodatne postavke samo CDMA poziva"</string>
+    <string name="labelNwService" msgid="4699970172021870983">"Postavke mrežne usluge"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"ID pozivaoca"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Učitavanje postavki…"</string>
+    <string name="sum_hide_caller_id" msgid="1071407020290873782">"Broj je skriven u odlaznim pozivima"</string>
+    <string name="sum_show_caller_id" msgid="6768534125447290401">"Broj je prikazan u odlaznim pozivima"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"Koristi zadane postavke operatera za prikaz mog broja u odlaznim pozivima"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Poziv na čekanju"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Tokom poziva, obavijesti me o dolaznim pozivima"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Tokom poziva, obavijesti me o dolaznim pozivima"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Postavke preusmjeravanja poziva"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Postavke preusmjeravanja poziva (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Preusmjeravanje poziva"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Uvijek preusmjeri"</string>
+    <string name="messageCFU" msgid="3560082430662923687">"Uvijek koristi ovaj broj"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Preusmjeravanje svih poziva"</string>
+    <string name="sum_cfu_enabled" msgid="2450052502198827927">"Preusmjeravaju se svi pozivi na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Broj je nedostupan"</string>
+    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Isključeno"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Kada je zauzeto"</string>
+    <string name="messageCFB" msgid="3711089705936187129">"Broj kada je zauzeto"</string>
+    <string name="sum_cfb_enabled" msgid="5984198104833116690">"Preusmjerava se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Isključeno"</string>
+    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Vaš operater ne podržava onemogućavanje preusmjeravanja poziva kada je telefon zauzet."</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Kada nema odgovora"</string>
+    <string name="messageCFNRy" msgid="672317899884380374">"Broj kada nema odgovora"</string>
+    <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Preusmjerava se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Isključeno"</string>
+    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Vaš operater ne podržava onemogućavanje preusmjeravanja poziva kada se ne odgovori na poziv."</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Kada je nedostupno"</string>
+    <string name="messageCFNRc" msgid="6380695421020295119">"Broj kada je nedostupno"</string>
+    <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Preusmjerava se na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Isključeno"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Vaš operater ne podržava onemogućavanje preusmjeravanja poziva kada ste nedostupni."</string>
+    <string name="updating_title" msgid="6146755386174019046">"Postavke poziva"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Postavke poziva može promijeniti samo administrator."</string>
+    <string name="call_settings_with_label" msgid="3401177261468593519">"Postavke (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Greška u postavkama poziva"</string>
+    <string name="reading_settings" msgid="1920291699287055284">"Čitanje postavki u toku…"</string>
+    <string name="updating_settings" msgid="8171225533884883252">"Ažuriranje postavki u toku…"</string>
+    <string name="reverting_settings" msgid="4752151682666912828">"Vraćanje postavki u toku…"</string>
+    <string name="response_error" msgid="6674110501330139405">"Neočekivani odgovor mreže."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Greška s mrežom ili SIM karticom."</string>
+    <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS zahtjev je izmijenjen u DIAL zahtjev."</string>
+    <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS zahtjev je izmijenjen u USSD zahtjev."</string>
+    <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS zahtjev je izmijenjen u novi SS zahtjev."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"Uključena je postavka brojeva fiksnog biranja u Aplikaciji za telefon. Zbog toga ne rade neke funkcije vezane za pozive."</string>
+    <string name="radio_off_error" msgid="2304459933248513376">"Uključite radio prije prikazivanja ovih postavki."</string>
+    <string name="close_dialog" msgid="2365884406356986917">"Uredu"</string>
+    <string name="enable" msgid="7248657275000173526">"Uključi"</string>
+    <string name="disable" msgid="4678348128118573672">"Isključi"</string>
+    <string name="change_num" msgid="239476305819844391">"Ažuriraj"</string>
+  <string-array name="clir_display_values">
+    <item msgid="5560134294467334594">"Zadana vrijednost mreže"</item>
+    <item msgid="7876195870037833661">"Sakrij broj"</item>
+    <item msgid="1108394741608734023">"Prikaži broj"</item>
+  </string-array>
+    <string name="vm_changed" msgid="380744030726254139">"Broj govorne pošte je promijenjen."</string>
+    <string name="vm_change_failed" msgid="3352934863246208918">"Nije moguće promijeniti broj govorne pošte.\nObratite se svom operateru ako se ovaj problem nastavi."</string>
+    <string name="fw_change_failed" msgid="5298103228470214665">"Nije moguće promijeniti broj za preusmjeravanje.\nObratite se svom operateru ako se ovaj problem nastavi."</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Nije moguće preuzeti i sačuvati trenutne postavke broja za preusmjeravanje.\nŽelite li i dalje preći na novu mrežu?"</string>
+    <string name="no_change" msgid="3186040086622435212">"Nisu izvršene promjene."</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Izaberite uslugu govorne pošte"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"Vaš operater"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stari PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novi PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Pričekajte."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Novi PIN je prekratak."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Novi PIN je predug."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Novi PIN je preslab. Jaka lozinka ne smije sadržavati uzastopni niz ili ponovljene cifre."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Stari PIN se ne podudara."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Novi PIN sadrži nevažeće znakove."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Nije moguće promijeniti PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepodržana vrsta poruke. Pozovite <xliff:g id="NUMBER">%s</xliff:g> da je preslušate."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Postavke mobilne mreže"</string>
+    <string name="label_available" msgid="1181658289009300430">"Dostupne mreže"</string>
+    <string name="load_networks_progress" msgid="5230707536168902952">"Pretraživanje…"</string>
+    <string name="empty_networks_list" msgid="4249426905018815316">"Nije pronađena nijedna mreža."</string>
+    <string name="search_networks" msgid="1601136049300882441">"Pretraži mreže"</string>
+    <string name="network_query_error" msgid="6828516148953325006">"Greška prilikom traženja mreža."</string>
+    <string name="register_on_network" msgid="9055203954040805084">"Registriranje na <xliff:g id="NETWORK">%s</xliff:g> u toku…"</string>
+    <string name="not_allowed" msgid="5613353860205691579">"Vaša SIM kartica ne dozvoljava povezivanje na ovu mrežu."</string>
+    <string name="connect_later" msgid="2308119155752343975">"Trenutno nije moguće povezati se s ovom mrežom. Pokušajte ponovo kasnije."</string>
+    <string name="registration_done" msgid="495135664535876612">"Registrirano na mrežu."</string>
+    <string name="sum_carrier_select" msgid="3494252551249882718">"Odaberite operatera"</string>
+    <string name="sum_search_networks" msgid="2921092249873272715">"Traži sve dostupne mreže"</string>
+    <string name="select_automatically" msgid="5628402124471810174">"Izaberi automatski"</string>
+    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatski izaberi preferiranu mrežu"</string>
+    <string name="register_automatically" msgid="6017849844573519637">"Automatska registracija u toku…"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferirana vrsta mreže"</string>
+    <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Promijeni način rada mreže"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Preferirana vrsta mreže"</string>
+    <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Preferirani način rada mreže: preferiraj WCDMA"</string>
+    <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Preferirani način rada mreže: samo GSM"</string>
+    <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Preferirani način rada mreže: samo WCDMA"</string>
+    <string name="preferred_network_mode_gsm_wcdma_summary" msgid="3161255745326408587">"Preferirani način rada mreže: GSM / WCDMA"</string>
+    <string name="preferred_network_mode_cdma_summary" msgid="3175690187294334241">"Preferirani način rada mreže: CDMA"</string>
+    <string name="preferred_network_mode_cdma_evdo_summary" msgid="8332063064712726618">"Preferirani način rada mreže: CDMA / EvDo"</string>
+    <string name="preferred_network_mode_cdma_only_summary" msgid="1309770926198634150">"Preferirani način rada mreže: samo CDMA"</string>
+    <string name="preferred_network_mode_evdo_only_summary" msgid="8472220691721269155">"Preferirani način rada mreže: samo EvDo"</string>
+    <string name="preferred_network_mode_cdma_evdo_gsm_wcdma_summary" msgid="4726682079415227330">"Preferirani način rada mreže: CDMA/EvDo/GSM/WCDMA"</string>
+    <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Preferirani način rada mreže: LTE"</string>
+    <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Preferirani način rada mreže: GSM/WCDMA/LTE"</string>
+    <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Preferirani način rada mreže: CDMA+LTE/EVDO"</string>
+    <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Preferirani način rada mreže: globalno"</string>
+    <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Preporučeni način rada mreže: LTE / WCDMA"</string>
+    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Preferirani način rada mreže: LTE / GSM / UMTS"</string>
+    <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Preferirani način rada mreže: LTE / CDMA"</string>
+    <string name="preferred_network_mode_tdscdma_summary" msgid="8021016193718678775">"Preferirani način rada mreže: TDSCDMA"</string>
+  <string-array name="preferred_network_mode_choices">
+    <item msgid="7886739962255042385">"LTE / WCDMA"</item>
+    <item msgid="577652050447385699">"LTE"</item>
+    <item msgid="6813597571293773656">"Globalno"</item>
+    <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
+    <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
+    <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
+    <item msgid="545430093607698090">"Samo EvDo"</item>
+    <item msgid="1508557726283094448">"CDMA w/o EvDo"</item>
+    <item msgid="4341433122263841224">"CDMA / EVDO automatski"</item>
+    <item msgid="5958053792390386668">"Automatski GSM/WCDMA"</item>
+    <item msgid="7913148405605373434">"Samo WCDMA"</item>
+    <item msgid="1524224863879435516">"Samo GSM"</item>
+    <item msgid="3817924849415716259">"Preferiraj GSM/WCDMA"</item>
+  </string-array>
+    <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Poboljšani 4G LTE način rada"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Napredno pozivanje"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Koristi LTE usluge za poboljšanje glasovne i drugih komunikacija (preporučeno)"</string>
+    <string name="data_enabled" msgid="5972538663568715366">"Podaci su omogućeni"</string>
+    <string name="data_enable_summary" msgid="2382798156640007971">"Dozvoli korištenje podataka"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Pažnja"</string>
+    <string name="roaming" msgid="8871412572928323707">"Roming podataka"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Poveži se na usluge prijenosa podataka u romingu"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Poveži se na usluge prijenosa podataka u romingu"</string>
+    <string name="roaming_reenable_message" msgid="8913735676127858115">"Izgubili ste podatkovnu vezu jer ste napustili matičnu mrežu dok je roming podataka isključen."</string>
+    <string name="roaming_warning" msgid="1603164667540144353">"Može dovesti do značajnih troškova."</string>
+    <string name="roaming_alert_title" msgid="3654815360303826008">"Dozvoliti roming podataka?"</string>
+    <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS opcije"</string>
+    <string name="cdma_options" msgid="4016822858172249884">"CDMA opcije"</string>
+    <string name="throttle_data_usage" msgid="3715677828160555808">"Korištenje podataka"</string>
+    <string name="throttle_current_usage" msgid="8762280193043815361">"Iskorišteni podaci u trenutnom periodu"</string>
+    <string name="throttle_time_frame" msgid="1915198770363734685">"Period korištenja podataka"</string>
+    <string name="throttle_rate" msgid="4710388992676803508">"Pravila o brzini prijenosa podataka"</string>
+    <string name="throttle_help" msgid="243651091785169900">"Saznajte više"</string>
+    <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) od <xliff:g id="USED_2">%3$s</xliff:g> maksimuma perioda\nSljedeći period počinje za <xliff:g id="USED_3">%4$d</xliff:g> dan(a) (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+    <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) od <xliff:g id="USED_2">%3$s</xliff:g> maksimuma perioda"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ograničenje je prekoračeno \nBrzina prijenosa podataka je smanjena na <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
+    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Proteklo je <xliff:g id="USED_0">%1$d</xliff:g> ٪ ciklusa\nSljedeći period počinje za <xliff:g id="USED_1">%2$d</xliff:g> dan(a) (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Brzina prijenosa podataka se smanjuje na <xliff:g id="USED">%1$d</xliff:g> Kb/s ako se prekorači ograničenje korištenja podataka"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Više informacija o pravilima korištenja podataka mobilne mreže vašeg operatera"</string>
+    <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS info servisa"</string>
+    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS info servisa"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS info servisa je omogućen"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"SMS info servisa je onemogućen"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"Postavke SMS-a info servisa"</string>
+    <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Hitno emitiranje"</string>
+    <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Hitno emitiranje je omogućeno"</string>
+    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Hitno emitiranje je onemogućeno"</string>
+    <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativno"</string>
+    <string name="administrative_enable" msgid="1750086122962032235">"Administrativno je omogućeno"</string>
+    <string name="administrative_disable" msgid="8433273857248698539">"Administrativno je onemogućeno"</string>
+    <string name="enable_disable_maintenance" msgid="1819693083025106678">"Održavanje"</string>
+    <string name="maintenance_enable" msgid="8566636458770971189">"Održavanje je omogućeno"</string>
+    <string name="maintenance_disable" msgid="7340189100885066077">"Održavanje je onemogućeno"</string>
+    <string name="general_news_settings" msgid="4968779723948432978">"Opće vijesti"</string>
+    <string name="bf_news_settings" msgid="3935593091894685267">"Poslovne i finansijske vijesti"</string>
+    <string name="sports_news_settings" msgid="7649399631270052835">"Sportske vijesti"</string>
+    <string name="entertainment_news_settings" msgid="5051153952959405035">"Vijesti iz svijeta zabave"</string>
+    <string name="enable_disable_local" msgid="7890281063123416120">"Lokalno"</string>
+    <string name="local_enable" msgid="6370463247609136359">"Lokalne vijesti su omogućene"</string>
+    <string name="local_disable" msgid="4405691986943795798">"Lokalne vijesti su onemogućene"</string>
+    <string name="enable_disable_regional" msgid="4905652414535565872">"Regionalno"</string>
+    <string name="regional_enable" msgid="4434680415437834759">"Regionalne vijesti su omogućene"</string>
+    <string name="regional_disable" msgid="5359325527213850077">"Regionalne vijesti su onemogućene"</string>
+    <string name="enable_disable_national" msgid="236278090206880734">"Državno"</string>
+    <string name="national_enable" msgid="1172443648912246952">"Državne vijesti su omogućene"</string>
+    <string name="national_disable" msgid="326018148178601166">"Državne vijesti su onemogućene"</string>
+    <string name="enable_disable_international" msgid="7535348799604565592">"Međunarodno"</string>
+    <string name="international_enable" msgid="5855356769925044927">"Međunarodne vijesti su omogućene"</string>
+    <string name="international_disable" msgid="2850648591041088931">"Međunarodne vijesti su onemogućene"</string>
+    <string name="list_language_title" msgid="2841683501919760043">"Jezik"</string>
+    <string name="list_language_summary" msgid="8109546531071241601">"Odaberite jezik vijesti"</string>
+  <string-array name="list_language_entries">
+    <item msgid="6137851079727305485">"engleski"</item>
+    <item msgid="1151988412809572526">"francuski"</item>
+    <item msgid="577840534704312665">"španski"</item>
+    <item msgid="8385712091143148180">"japanski"</item>
+    <item msgid="1858401628368130638">"korejanski"</item>
+    <item msgid="1933212028684529632">"kineski"</item>
+    <item msgid="1908428006803639064">"hebrejski"</item>
+  </string-array>
+  <string-array name="list_language_values">
+    <item msgid="1804908636436467150">"1"</item>
+    <item msgid="289708030346890334">"2"</item>
+    <item msgid="1121469729692402684">"3"</item>
+    <item msgid="2614093115912897722">"4"</item>
+    <item msgid="2411164639857960614">"5"</item>
+    <item msgid="5884448729274543324">"6"</item>
+    <item msgid="5511864807618312598">"7"</item>
+  </string-array>
+    <string name="list_language_dtitle" msgid="5442908726538951934">"Jezici"</string>
+    <string name="enable_disable_local_weather" msgid="986967454867219114">"Lokalna vremenska prognoza"</string>
+    <string name="local_weather_enable" msgid="6199315114382448922">"Lokalna vremenska prognoza je omogućena"</string>
+    <string name="local_weather_disable" msgid="2510158089142626480">"Lokalna vremenska prognoza je onemogućena"</string>
+    <string name="enable_disable_atr" msgid="8339572391278872343">"Izvještaji o lokalnom saobraćaju"</string>
+    <string name="atr_enable" msgid="5541757457789181799">"Izvještaji o lokalnom saobraćaju su omogućeni"</string>
+    <string name="atr_disable" msgid="7085558154727596455">"Izvještaji o lokalnom saobraćaju su onemogućeni"</string>
+    <string name="enable_disable_lafs" msgid="668189073721277199">"Raspored letova za lokalni aerodrom"</string>
+    <string name="lafs_enable" msgid="2791978667205137052">"Raspored letova za lokalni aerodrom je omogućen"</string>
+    <string name="lafs_disable" msgid="2391212397725495350">"Raspored letova za lokalni aerodrom je onemogućen"</string>
+    <string name="enable_disable_restaurants" msgid="6240381945336814024">"Restorani"</string>
+    <string name="restaurants_enable" msgid="5137657479469118847">"Restorani su omogućeni"</string>
+    <string name="restaurants_disable" msgid="3678480270938424092">"Restorani su onemogućeni"</string>
+    <string name="enable_disable_lodgings" msgid="1822029172658551202">"Smještaj"</string>
+    <string name="lodgings_enable" msgid="3230042508992850322">"Smještaj je omogućen"</string>
+    <string name="lodgings_disable" msgid="3387879742320682391">"Smještaj je onemogućen"</string>
+    <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Katalog maloprodaje"</string>
+    <string name="retail_directory_enable" msgid="3280626290436111496">"Katalog maloprodaje je omogućen"</string>
+    <string name="retail_directory_disable" msgid="6479739816662879027">"Katalog maloprodaje je onemogućen"</string>
+    <string name="enable_disable_advertisements" msgid="5999495926176182128">"Oglasi"</string>
+    <string name="advertisements_enable" msgid="2050305021264683786">"Oglasi su omogućeni"</string>
+    <string name="advertisements_disable" msgid="8350985908788707935">"Oglasi su onemogućeni"</string>
+    <string name="enable_disable_stock_quotes" msgid="6397810445293533603">"Cijene dionica"</string>
+    <string name="stock_quotes_enable" msgid="4384802470887170543">"Cijene akcija su omogućene"</string>
+    <string name="stock_quotes_disable" msgid="4781450084565594998">"Cijene dionica su onemogućene"</string>
+    <string name="enable_disable_eo" msgid="4863043263443942494">"Prilike za zapošljavanje"</string>
+    <string name="eo_enable" msgid="8623559062015685813">"Prilike za zapošljavanje su omogućene"</string>
+    <string name="eo_disable" msgid="3863812478090907609">"Prilike za zapošljavanje su onemogućene"</string>
+    <string name="enable_disable_mhh" msgid="908214593528968522">"Medicina, zdravlje i bolnice"</string>
+    <string name="mhh_enable" msgid="5544500632306446815">"Medicina, zdravlje i bolnice su omogućene"</string>
+    <string name="mhh_disable" msgid="8998210550117117437">"Medicina, zdravlje i bolnice su onemogućene"</string>
+    <string name="enable_disable_technology_news" msgid="3517184627114999149">"Tehnološke vijesti"</string>
+    <string name="technology_news_enable" msgid="7995209394210455181">"Tehnološke vijesti su omogućene"</string>
+    <string name="technology_news_disable" msgid="5483490380561851946">"Tehnološke vijesti su onemogućene"</string>
+    <string name="enable_disable_multi_category" msgid="626771003122899280">"Više kategorija"</string>
+    <string name="multi_category_enable" msgid="1179299804641721768">"Više kategorija je omogućeno"</string>
+    <string name="multi_category_disable" msgid="880104702904139505">"Više kategorija je onemogućeno"</string>
+    <string name="network_lte" msgid="7702681952521375754">"LTE (preporučeno)"</string>
+    <string name="network_4G" msgid="2723512640529983138">"4G (preporučeno)"</string>
+    <string name="network_global" msgid="1323190488685355309">"Globalno"</string>
+    <string name="cdma_system_select_title" msgid="5757657769327732833">"Odabir sistema"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Promijeni način rada CDMA rominga"</string>
+    <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Odabir sistema"</string>
+  <string-array name="cdma_system_select_choices">
+    <item msgid="176474317493999285">"Samo kuća"</item>
+    <item msgid="1205664026446156265">"Automatski"</item>
+  </string-array>
+    <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA pretplata"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Promjena između RUIM/SIM i NV"</string>
+    <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"pretplata"</string>
+  <string-array name="cdma_subscription_choices">
+    <item msgid="2258014151300708431">"RUIM/SIM"</item>
+    <item msgid="5127722015571873880">"NV"</item>
+  </string-array>
+  <string-array name="cdma_subscription_values">
+    <item msgid="7494167883478914080">"0"</item>
+    <item msgid="6043847456049107742">"1"</item>
+  </string-array>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"Aktiviraj uređaj"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"Postavi prijenos podataka"</string>
+    <string name="carrier_settings_title" msgid="9028166176523012300">"Postavke operatera"</string>
+    <string name="fdn" msgid="7878832555095183202">"Brojevi fiksnog biranja"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Brojevi fiksnog biranja (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"FDN lista"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN lista (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"FDN aktivacija"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Brojevi fiksnog biranja su omogućeni"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Brojevi fiksnog biranja su onemogućeni"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Omogući FDN"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Onemogući FDN"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"Promijeni PIN2"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Onemogući FDN"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Omogući FDN"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Upravljaj brojevima fiksnog biranja"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Promijeni PIN za FDN pristup"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Upravljaj listom brojeva telefona"</string>
+    <string name="voice_privacy" msgid="3776841382844614716">"Privatnost glasa"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Omogući poboljšani naćin rada za privatnost"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY način rada"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Postavi TTY način rada"</string>
+    <string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatski ponovni pokušaj"</string>
+    <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Omogući način rada za automatski ponovni pokušaj"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Promjena TTY načina rada nije dozvoljena tokom videopoziva"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
+    <string name="menu_edit" msgid="7143003705504672374">"Uredi kontakt"</string>
+    <string name="menu_delete" msgid="3977150783449642851">"Izbriši kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Pozivanje kontakta"</string>
+    <string name="get_pin2" msgid="8204677063922225311">"Upišite PIN2"</string>
+    <string name="name" msgid="7329028332786872378">"Ime"</string>
+    <string name="number" msgid="7905950798349903858">"Broj"</string>
+    <string name="save" msgid="4094274636321939086">"Sačuvaj"</string>
+    <string name="add_fdn_contact" msgid="2481915899633353976">"Dodaj broj fiksnog biranja"</string>
+    <string name="adding_fdn_contact" msgid="7627379633721940991">"Dodaje se broj fiksnog biranja…"</string>
+    <string name="fdn_contact_added" msgid="7458335758501736665">"Broj fiksnog biranja je dodan."</string>
+    <string name="edit_fdn_contact" msgid="7976936035587081480">"Uredi broj fiksnog biranja"</string>
+    <string name="updating_fdn_contact" msgid="8370929876849803600">"Ažuriranje broja fiksnog biranja u toku…"</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"Broj fiksnog biranja je ažuriran."</string>
+    <string name="delete_fdn_contact" msgid="6668958073074151717">"Izbriši broj fiksnog biranja"</string>
+    <string name="deleting_fdn_contact" msgid="5669163206349319969">"Brisanje broja fiksnog biranja u toku…"</string>
+    <string name="fdn_contact_deleted" msgid="7154162327112259569">"Broj fiksnog biranja je izbrisan."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"FDN nije ažuriran jer ste upisali netačan PIN."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN nije ažuriran jer je broj prazan ili ima više od 20 cifara."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN nije ažuriran. PIN2 je netačan ili je broj telefona odbijen."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"FDN operacija nije uspjela."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čitanje sa SIM kartice u toku…"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Nema kontakata na SIM kartici."</string>
+    <string name="simContacts_title" msgid="1861472842524839921">"Odaberite kontakte za uvoz"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Isključite način rada u avionu da uvezete kontakte sa SIM kartice."</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Omogući/onemogući PIN za SIM"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Promijeni PIN za SIM"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"PIN za SIM:"</string>
+    <string name="oldPinLabel" msgid="5287773661246368314">"Stari PIN"</string>
+    <string name="newPinLabel" msgid="207488227285336897">"Novi PIN"</string>
+    <string name="confirmPinLabel" msgid="257597715098070206">"Potvrdi novi PIN"</string>
+    <string name="badPin" msgid="8955102849303984935">"Stari PIN koji ste upisali nije tačan. Pokušajte ponovo."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"PIN-ovi koje ste upisali se ne podudaraju. Pokušajte ponovo."</string>
+    <string name="invalidPin" msgid="5981171102258684792">"Unesite PIN koji sadrži od 4 do 8 brojeva."</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"Obriši PIN za SIM"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"Postavi PIN za SIM"</string>
+    <string name="enable_in_progress" msgid="3417917024688497010">"Postavljanje PIN-a u toku…"</string>
+    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN je postavljen"</string>
+    <string name="disable_pin_ok" msgid="2109571368635883688">"PIN je obrisan"</string>
+    <string name="pin_failed" msgid="5644377896213584760">"PIN je netačan"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"PIN je ažuriran"</string>
+    <string name="puk_requested" msgid="5921393215789090200">"Lozinka je netačna. PIN je sada blokiran. Traži se PUK."</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"Stari PIN2"</string>
+    <string name="newPin2Label" msgid="4573956902204349054">"Novi PIN2"</string>
+    <string name="confirmPin2Label" msgid="8100319484454787708">"Potvrdite novi PIN2"</string>
+    <string name="badPuk2" msgid="7910064009531541708">"PUK2 je pogrešan. Pokušajte ponovo."</string>
+    <string name="badPin2" msgid="6646896629970023109">"Stari PIN2 je netačan. Pokušajte ponovo."</string>
+    <string name="mismatchPin2" msgid="4177967478551851117">"PIN2 kodovi se ne podudaraju. Pokušajte ponovo."</string>
+    <string name="invalidPin2" msgid="1757045131429105595">"Unesite PIN2 koji sadrži od 4 do 8 brojeva."</string>
+    <string name="invalidPuk2" msgid="7059081153334815973">"Unesite PUK2 koji sadrži 8 brojeva."</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"PIN2 je ažuriran"</string>
+    <string name="label_puk2_code" msgid="4688069961795341948">"Unesite PUK2 kȏd"</string>
+    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Lozinka je netačna. PIN2 je sada blokiran. Da pokušate ponovo, promijenite PIN 2."</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"Lozinka je netačna. SIM je sada zaključan. Unesite PUK2."</string>
+    <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 je trajno blokiran."</string>
+    <string name="pin2_attempts" msgid="720736232885011507">\n"Broj preostalih pokušaja: <xliff:g id="NUMBER">%d</xliff:g>."</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 više nije blokiran"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Greška s mrežom ili SIM karticom"</string>
+    <string name="doneButton" msgid="2859593360997984240">"Gotovo"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Broj govorne pošte"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Biranje"</string>
+    <string name="card_title_redialing" msgid="8253487008234167266">"Ponovno biranje"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"Konferencijski poziv"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Dolazni poziv"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Poziv je završen"</string>
+    <string name="card_title_on_hold" msgid="821463117892339942">"Na čekanju"</string>
+    <string name="card_title_hanging_up" msgid="3999101620995182450">"Prekid veze"</string>
+    <string name="card_title_in_call" msgid="6346543933068225205">"Poziv u toku"</string>
+    <string name="notification_voicemail_title" msgid="8933468752045550523">"Nova govorna pošta"</string>
+    <string name="notification_voicemail_title_count" msgid="4366360747660929916">"Nova govorna pošta (<xliff:g id="COUNT">%d</xliff:g>)"</string>
+    <string name="notification_voicemail_text_format" msgid="4447323569453981685">"Pozovi <xliff:g id="VOICEMAIL_NUMBER">%s</xliff:g>"</string>
+    <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nepoznat broj govorne pošte"</string>
+    <string name="notification_network_selection_title" msgid="4224455487793492772">"Nema mreže"</string>
+    <string name="notification_network_selection_text" msgid="2607085729661923269">"Odabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) je nedostupna"</string>
+    <string name="incall_error_power_off" product="watch" msgid="772302793483607711">"Isključite način rada u avionu ili način uštede baterije da uputite poziv."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Isključite način rada u avionu da uputite poziv."</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Isključite način rada u avionu ili se povežite na bežičnu mrežu da uputite poziv."</string>
+    <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Izađite iz načina rada za hitni povratni poziv da uputite poziv koji nije hitan."</string>
+    <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nije registrirano na mreži."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilna mreža nije dostupna."</string>
+    <!-- no translation found for incall_error_out_of_service_wfc (8741629779555132471) -->
+    <skip />
+    <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Da uputite poziv, upišite važeći broj."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Poziv nije uspio."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Trenutno nije moguće dodati poziv."</string>
+    <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Usluga nije podržana"</string>
+    <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nije moguće prebacivanje poziva."</string>
+    <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nije moguće odvojiti poziv."</string>
+    <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"Prijenos nije moguć."</string>
+    <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nije moguće uspostaviti konferencijske pozive."</string>
+    <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nije moguće odbiti poziv."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nije moguće uputiti poziv(e)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nije moguće staviti pozive na čekanje."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se na bežičnu mrežu da uputite poziv."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Omogućite Wi-Fi pozivanje da uputite poziv."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitni poziv"</string>
+    <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija u toku…"</string>
+    <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema mreže. Novi pokušaj u toku…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Nije moguće aktivirati način rada u avionu tokom hitnog poziva."</string>
+    <string name="dial_emergency_error" msgid="1509085166367420355">"Nije moguće pozvati. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nije broj za hitne slučajeve."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nije moguće pozvati. Birajte broj za hitne slučajeve."</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Koristi tastaturu za biranje"</string>
+    <string name="onscreenHoldText" msgid="2285258239691145872">"Stavi na čekanje"</string>
+    <string name="onscreenEndCallText" msgid="4403855834875398585">"Prekini"</string>
+    <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Telefonska tipkovnica"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Isključi zvuk poziva"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Dodaj poziv"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Spoji pozive"</string>
+    <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Zamijeni"</string>
+    <string name="onscreenManageCallsText" msgid="5473231160123254154">"Upravljaj pozivima"</string>
+    <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Upravljaj konferenc."</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Zvuk"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"Videopoziv"</string>
+    <string name="importSimEntry" msgid="6614358325359736031">"Uvezi"</string>
+    <string name="importAllSimEntries" msgid="1503181169636198673">"Uvezi sve"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Uvoz kontakata sa SIM kartice u toku"</string>
+    <string name="importToFDNfromContacts" msgid="2130620207013368580">"Uvezi iz kontakata"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt je uvezen"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Uvoz kontakta nije uspio"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Slušni aparat"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Uključi kompatibilnost za slušni aparat"</string>
+  <string-array name="tty_mode_entries">
+    <item msgid="512950011423868021">"TTY je isključen"</item>
+    <item msgid="3971695875449640648">"TTY je pun"</item>
+    <item msgid="1937509904407445684">"TTY HCO"</item>
+    <item msgid="5644925873488772224">"TTY VCO"</item>
+  </string-array>
+    <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF tonovi"</string>
+    <string name="dtmf_tones_summary" msgid="3351820372864020331">"Postavi dužinu DTMF tonova"</string>
+  <string-array name="dtmf_tone_entries">
+    <item msgid="899650777817315681">"Normalno"</item>
+    <item msgid="2883365539347850535">"Dugo"</item>
+  </string-array>
+    <string name="network_info_message" msgid="7738596060242881930">"Mrežna poruka"</string>
+    <string name="network_error_message" msgid="3394780436230411413">"Poruka o grešci"</string>
+    <string name="ota_title_activate" msgid="8616918561356194398">"Aktivirajte svoj telefon"</string>
+    <string name="ota_touch_activate" msgid="6553212803262586244">"Za aktiviranje telefonske usluge potrebno je uputiti poseban poziv. \n\nNakon što pritisnete „Aktiviraj“, poslušajte uputstva za aktiviranje telefona."</string>
+    <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Aktivacija u toku..."</string>
+    <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"Telefon aktivira uslugu prijenosa mobilnih podataka.\n\nTo može potrajati do 5 minuta."</string>
+    <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Preskočiti aktivaciju?"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Ako preskočite aktivaciju, nećete moći upućivati pozive niti se povezati na mobilne podatkovne mreže (iako se možete povezati na Wi-Fi mreže). Dok ne aktivirate telefon, prikazivat će se upit za aktivaciju svaki put kada upalite telefon."</string>
+    <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Preskoči"</string>
+    <string name="ota_activate" msgid="1368528132525626264">"Aktiviraj"</string>
+    <string name="ota_title_activate_success" msgid="6570240212263372046">"Telefon je aktiviran."</string>
+    <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Problem s aktivacijom"</string>
+    <string name="ota_listen" msgid="162923839877584937">"Slijedite govorna uputstva dok ne čujete da je aktivacija završena."</string>
+    <string name="ota_speaker" msgid="6904589278542719647">"Zvučnik"</string>
+    <string name="ota_progress" msgid="460876637828044519">"Programiranje telefona u toku…"</string>
+    <string name="ota_failure" msgid="7713756181204620397">"Nije moguće programirati telefon"</string>
+    <string name="ota_successful" msgid="1880780692887077407">"Vaš telefon je sada aktiviran. Može biti potrebno do 15 minuta za pokretanje usluge."</string>
+    <string name="ota_unsuccessful" msgid="8072141612635635357">"Telefon se nije aktivirao. \nMožda biste trebali pronaći područje s boljom pokrivenošću (pored prozora ili napolju).\n\nPokušajte ponovo ili pozovite službu za korisnike za više opcija."</string>
+    <string name="ota_spc_failure" msgid="3909983542575030796">"GREŠKE PRETJERANOG SPC-a"</string>
+    <string name="ota_call_end" msgid="4537279738134612388">"Nazad"</string>
+    <string name="ota_try_again" msgid="7685477206465902290">"Pokušaj ponovo"</string>
+    <string name="ota_next" msgid="3904945374358235910">"Sljedeće"</string>
+    <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
+    <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Aktiviran način rada za hitni povratni poziv"</string>
+    <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Način rada za hitni povratni poziv"</string>
+    <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Podatkovna veza je onemogućena"</string>
+    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
+      <item quantity="one">Nema podatkovne veze <xliff:g id="COUNT_1">%s</xliff:g> minutu</item>
+      <item quantity="few">Nema podatkovne veze <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
+      <item quantity="other">Nema podatkovne veze <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
+    </plurals>
+    <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
+      <item quantity="one">Telefon će biti u Načinu rada za hitni povratni poziv <xliff:g id="COUNT_1">%s</xliff:g> minutu. Dok se nalazi u ovom načinu rada, ne mogu se upotrebljavati aplikacije koje koriste podatkovnu vezu. Želite li izaći iz ovog načina rada sada?</item>
+      <item quantity="few">Telefon će biti u Načinu rada za hitni povratni poziv u <xliff:g id="COUNT_1">%s</xliff:g> minute. Dok se nalazi u ovom načinu rada, ne mogu se upotrebljavati aplikacije koje koriste podatkovnu vezu. Želite li izaći iz ovog načina rada sada?</item>
+      <item quantity="other">Telefon će biti u Načinu rada za hitni povratni poziv <xliff:g id="COUNT_1">%s</xliff:g> minuta. Dok se nalazi u ovom načinu rada, ne mogu se upotrebljavati aplikacije koje koriste podatkovnu vezu. Želite li izaći iz ovog načina rada sada?</item>
+    </plurals>
+    <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
+      <item quantity="one">Odabrana radnja nije dostupna u načinu rada za hitni povratni poziv. Telefon će biti u ovom načinu rada <xliff:g id="COUNT_1">%s</xliff:g> minutu. Želite li izaći iz ovog načina rada sada?</item>
+      <item quantity="few">Odabrana radnja nije dostupna u načinu rada za hitni povratni poziv. Telefon će biti u ovom načinu rada <xliff:g id="COUNT_1">%s</xliff:g> minute. Želite li izaći iz ovog načina rada sada?</item>
+      <item quantity="other">Odabrana radnja nije dostupna u načinu rada za hitni povratni poziv. Telefon će biti u ovom načinu rada <xliff:g id="COUNT_1">%s</xliff:g> minuta. Želite li izaći iz ovog načina rada sada?</item>
+    </plurals>
+    <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Odabrana radnja nije dostupna tokom hitnog poziva."</string>
+    <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Izlazak iz načina rada za hitni povratni poziv"</string>
+    <string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
+    <string name="alert_dialog_no" msgid="1476091437797628703">"Ne"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Odbaci"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Usluga"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Postavljanje"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nije postavljeno&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Ostale postavke poziva"</string>
+    <string name="calling_via_template" msgid="4839419581866928142">"Pozivanje putem mreže <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"fotografija kontakta"</string>
+    <string name="goPrivate" msgid="865837794424530980">"idi na privatno"</string>
+    <string name="selectContact" msgid="781975788478987237">"odaberi kontakt"</string>
+    <string name="not_voice_capable" msgid="2739898841461577811">"Glasovni pozivi nisu podržani"</string>
+    <string name="description_dial_button" msgid="7459705245418435351">"biraj"</string>
+    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibriranje"</string>
+    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibriranje"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuelna govorna pošta"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Postavljanje PIN-a"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Promijeni PIN"</string>
+    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ugrađene SIM kartice"</string>
+    <string name="enable_video_calling_title" msgid="7237253660669000899">"Uključi videopozive"</string>
+    <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Da uključite videopozive, omogućite Poboljšani 4G LTE način rada u postavkama mreže."</string>
+    <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Postavke mreže"</string>
+    <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Zatvori"</string>
+    <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Hitni pozivi"</string>
+    <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo hitni pozivi"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"SIM kartica, utor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pristupačnost"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi poziv od"</string>
+    <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi poziv"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Dodirnite ponovo da otvorite"</string>
+    <string name="message_decode_error" msgid="3456481534066924855">"Došlo je do greške prilikom dekodiranja poruke."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartica je aktivirala vašu uslugu i ažurirala mogućnosti rominga za telefon."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Previše aktivnih poziva. Prekinite ili spojite postojeće pozive prije upućivanja novog poziva."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Povezivanje nije moguće, umetnite važeću SIM karticu."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi veza je prekinuta. Poziv je završen."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Promijeni PIN govorne pošte"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Nastavi"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Otkaži"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Uredu"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potvrdite stari PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Za nastavak unesite PIN govorne pošte."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Postavite novi PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN mora imati između <xliff:g id="MIN">%1$d</xliff:g> i <xliff:g id="MAX">%2$d</xliff:g> cifri."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potvrdite PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-ovi se ne podudaraju"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN govorne pošte je ažuriran"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nije moguće postaviti PIN"</string>
+</resources>
diff --git a/res/values-ca/config.xml b/res/values-ca/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ca/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index cd24482..0648786 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dades mòbils"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dades mòbils"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Serveis del telèfon"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Marcador d\'emergència"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telèfon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de la bústia de veu"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No hi ha cap número de bústia de veu emmagatzemat a la targeta SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Afegeix número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Només l\'usuari principal pot modificar la configuració dels missatges de veu."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"La targeta SIM s\'ha desbloquejat. El telèfon s\'està desbloquejant..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN de desbloqueig de xarxa SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloqueja"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"S\'està sol·licitant el desbloqueig de la xarxa..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Sol·licitud de desbloqueig de xarxa incorrecta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueig de la xarxa correcte."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"La configuració de la xarxa mòbil no està disponible per a aquest usuari."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"La configuració de la xarxa per a mòbils no està disponible per a aquest usuari."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Configuració de trucades GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Configuració de trucades GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configuració de trucades CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Truca amb"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Fes trucades SIP amb"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Pregunta primer"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No hi ha cap xarxa disponible"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Configuració"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Tria els comptes"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes del telèfon"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Bústia de veu"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Bústia de veu (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"CV:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificacions"</string>
     <string name="networks" msgid="8873030692174541976">"Operadors de xarxa"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Missatges d\'emergència"</string>
     <string name="call_settings" msgid="6112441768261754562">"Configuració de trucada"</string>
@@ -84,7 +87,7 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Configuració addicional de trucades CDMA"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Configuració addicional de trucades només CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Configuració del servei de xarxa"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"Identificador de l\'emissor"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"Identificador de trucada"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"Carregant la configuració..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Número amagat en trucades sortints"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Número mostrat a les trucades de sortida"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"No localitzable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número quan no es pugui localitzar"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"S\'està desviant a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desactivat"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desactivat"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"El teu operador de telefonia mòbil no permet desactivar la desviació de trucades quan el telèfon estigui il·localitzable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Configuració de trucada"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Només l\'usuari principal pot canviar la configuració de trucades."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Només l\'administrador pot canviar la configuració de trucades."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Configuració (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Error de configuració de trucada"</string>
     <string name="reading_settings" msgid="1920291699287055284">"S\'està llegint la configuració…"</string>
@@ -145,8 +148,19 @@
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"No s\'ha pogut recuperar ni desar la configuració actual del número de desviació.\nVols canviar al proveïdor nou igualment?"</string>
     <string name="no_change" msgid="3186040086622435212">"No s\'ha fet cap canvi."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Trieu un servei de bústia de veu"</string>
-    <string name="voicemail_default" msgid="2001233554889016880">"Operador"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Configuració de la xarxa mòbil"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"EL teu operador"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antic"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN nou"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Espera un moment."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El PIN nou és massa curt."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El PIN nou és massa llarg."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El PIN nou no és prou segur. Les contrasenyes segures no poden contenir seqüències contínues ni dígits repetits."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"El PIN antic no coincideix."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"El PIN nou conté caràcters que no són vàlids."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"No es pot canviar el PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Aquest tipus de missatge no s\'admet. Truca al <xliff:g id="NUMBER">%s</xliff:g> per escoltar-lo."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Configuració de la xarxa mòbil"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Xarxa mòbil"</string>
     <string name="label_available" msgid="1181658289009300430">"Xarxes disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"S\'està cercant…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No s\'ha trobat cap xarxa."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrat a la xarxa."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Tria un operador de xarxa"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Cerca totes les xarxes disponibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Selecció automàtica"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Selecciona automàticament la xarxa preferida"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Selecciona la xarxa automàticament"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Xarxa"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registre automàtic..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipus de xarxa preferit"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Canvia el mode de funcionament de la xarxa"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Només GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferit"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Trucades"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Xarxa"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mode 4G LTE millorat"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Trucades avançades"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Utilitza els serveis LTE per millorar la veu i la comunicació (opció recomanada)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dades activades"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permet l\'ús de dades"</string>
-    <string name="roaming" msgid="8871412572928323707">"Itinerància de dades"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atenció"</string>
+    <string name="roaming" msgid="7894878421600247140">"Itinerància"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Estableix connexió amb serveis de dades en itinerància"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Estableix connexió amb serveis de dades en itinerància"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Has perdut la connectivitat de dades, perquè has abandonat la xarxa domèstica i la itinerància de dades està desactivada."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"És possible que se\'t facturin càrrecs elevats."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Permetre la itinerància de dades?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Ús de dades"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> de dades mòbils utilitzats durant el període <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operador de telefonia mòbil"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Dades mòbils"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Accedeix a les dades amb una xarxa mòbil"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Trucades per Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videotrucades amb l\'operador de telefonia mòbil"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opcions de GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opcions de CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Ús de dades"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> màxim superat\nVelocitat de dades reduïda a <xliff:g id="USED_1">%2$d</xliff:g> kbps"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ del cicle transcorregut\nEl període següent comença d\'aquí a <xliff:g id="USED_1">%2$d</xliff:g> dies (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"La velocitat de dades es redueix a <xliff:g id="USED">%1$d</xliff:g> kbps si se supera el límit d\'ús de dades"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Més informació sobre la política d\'us de dades de la xarxa mòbil de l\'operador de telefonia mòbil"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Més informació sobre la política d\'us de dades de la xarxa mòbil de l\'operador"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS de difusió de cel·la"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS de difusió de cel·la"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS de difusió de cel·la activat"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Afegeix un contacte"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edita el contacte"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Suprimeix el contacte"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Marca el número d\'un contacte"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Escriu el PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nom"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"S\'està suprimint el número de marcatge fix..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Número de marcatge fix suprimit."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN no s\'ha actualitzat ja que has escrit un PIN incorrecte."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN no s\'ha actualitzat ja que el nombre no pot excedir els 20 dígits."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN no s\'ha actualitzat perquè el número està buit o conté més de 20 dígits."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"El número FDN no s\'ha actualitzat. El PIN2 no és correcte o bé s\'ha rebutjat el número de telèfon."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Hi ha hagut un problema en l\'operació FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lectura de la targeta SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número de la bústia de veu desconegut"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sense servei"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"La xarxa seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no està disponible"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Per fer una trucada, desactiva el mode d\'avió."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Per fer una trucada, activa la xarxa mòbil o desactiva el mode d\'avió o el mode d\'estalvi de bateria."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Per fer una trucada, desactiva el mode d\'avió."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Per fer una trucada, desactiva el mode d\'avió o connecta amb una xarxa sense fil."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Surt del mode de devolució de trucada d\'emergència per fer un altre tipus de trucada."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"No registrat a la xarxa."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"La xarxa mòbil no està disponible."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La xarxa mòbil no està disponible. Per fer una trucada, connecta amb una xarxa sense fil."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"La xarxa mòbil no està disponible."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"La xarxa mòbil no està disponible. Per fer una trucada, connecta\'t a una xarxa sense fil."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Per realitzar una trucada, introdueix un número vàlid."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"No es pot trucar."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"S\'està iniciant la seqüència MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"No s\'ha pogut fer la trucada."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"En aquest moment no es pot afegir la trucada."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"El servei no és compatible."</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"No es pot canviar de trucada."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"No es pot separar la trucada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No es poden fer trucades de conferència."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No es pot rebutjar la trucada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No es poden alliberar trucades."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No es poden posar les trucades en espera."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Per fer una trucada, connecta amb una xarxa sense fil."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Activa les trucades per Wi-Fi per fer una trucada."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Trucada d\'emergència"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"S\'està activant el senyal mòbil..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hi ha servei. S\'està tornant a provar..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"No es pot activar el mode d\'avió durant una trucada d\'emergència."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"No es pot trucar. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> no és un número d\'emergència."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"No es pot trucar. Marca un número d\'emergència."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilitzeu el teclat per marcar"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importa-ho tot"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"S\'estan important els contactes de la SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importa dels contactes"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"El contacte s\'ha importat"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Error en importar el contacte"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Audiòfons"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Activa la compatibilitat amb audiòfons"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY desactivat"</item>
-    <item msgid="3971695875449640648">"TTY ple"</item>
+    <item msgid="3971695875449640648">"TTY complet"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"S\'ha activat al mode de devolució de trucada d\'emergència"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de devolució de trucada d\'emergència"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexió de dades desactivada"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">No hi ha hagut connexió de dades durant <xliff:g id="COUNT_1">%s</xliff:g> minuts</item>
-      <item quantity="one">No hi ha hagut connexió de dades durant <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"No hi haurà connexió de dades fins a les <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT_1">%s</xliff:g> minuts. Durant aquest temps, no es podrà utilitzar cap aplicació que faci servir una connexió de dades. Vols sortir ara?</item>
       <item quantity="one">El telèfon estarà en mode de devolució de trucades d\'emergència durant <xliff:g id="COUNT_0">%s</xliff:g> minut. Durant aquest temps, no es podrà utilitzar cap aplicació que faci servir una connexió de dades. Vols sortir ara?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"selecciona el contacte"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"No s\'admeten les trucades de veu"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"marca"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibra"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibra"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Bústia de veu visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"So"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Defineix el PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Canvia el PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"So i vibració"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Targetes SIM integrades"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activa les videotrucades"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Només trucades d\'emergència"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Targeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilitat"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Trucada per Wi-Fi entrant"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Trucada per Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Trucada per Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toca-ho de nou per obrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Torna a tocar per obrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"S\'ha produït un error en descodificar el missatge."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una targeta SIM ha activat el servei, i s\'ha actualitzat la funció d\'itinerància del telèfon."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hi ha massa trucades actives. Finalitza\'n alguna o combina-les abans de fer-ne una de nova."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"No es pot establir la connexió. Insereix una targeta SIM vàlida."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"La trucada ha finalitzat perquè s\'ha perdut la connexió Wi-Fi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Canvia el PIN per a la bústia de veu"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continua"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancel·la"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"D\'acord"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirma el teu PIN antic"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Introdueix el teu PIN per a la bústia de veu per continuar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Defineix un PIN nou"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"El PIN ha de tenir <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> dígits."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirma el teu PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Els PIN no coincideixen"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"S\'ha actualitzat el PIN per a la bústia de veu"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"No s\'ha pogut definir el PIN"</string>
 </resources>
diff --git a/res/values-cs/config.xml b/res/values-cs/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-cs/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 1c3e34a..7bfbc7f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobilní data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilní data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonní služby"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Tísňové volání"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Seznam povolených telefonních čísel"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Seznam povolených čísel"</string>
     <string name="unknown" msgid="6878797917991465859">"Neznámý volající"</string>
     <string name="private_num" msgid="6713286113000232309">"Soukromé číslo"</string>
     <string name="payphone" msgid="4793877574636445118">"Telefonní automat"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Chybí číslo hlasové schránky"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartě není uloženo žádné číslo hlasové schránky."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Přidat číslo"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Nastavení hlasové schránky může změnit pouze primární uživatel."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM karta byla odblokována. Telefon se odblokovává..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Kód PIN odblokování sítě pro SIM kartu"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Odemknout"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Žádost o odblokování sítě..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Požadavek na odblokování sítě se nezdařil."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Síť byla úspěšně odblokována."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Nastavení mobilní sítě pro tohoto uživatele není dostupné."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavení mobilní sítě pro tohoto uživatele není dostupné."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavení hovorů GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Nastavení hovorů GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavení hovorů CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Volat pomocí"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Volat prostřednictvím protokolu SIP pomocí"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Nejdříve se zeptat"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Není dostupná žádná síť"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Nastavení"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Zvolit účty"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonní účty"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Hlasová schránka"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hlasová schránka (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"HS:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Oznámení"</string>
     <string name="networks" msgid="8873030692174541976">"Síťoví operátoři"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Výstražné zprávy o výjimečné situaci"</string>
     <string name="call_settings" msgid="6112441768261754562">"Nastavení hovorů"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Při nedostupnosti"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Číslo při nedostupnosti"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Hovory budou přesměrovány na číslo <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Vypnuto"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Vypnuto"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Váš operátor neumožňuje deaktivovat přesměrování hovorů, když je telefon nedostupný."</string>
     <string name="updating_title" msgid="6146755386174019046">"Nastavení hovorů"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Nastavení hovorů může změnit pouze primární uživatel."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Nastavení hovorů může změnit pouze uživatel s oprávněním administrátora."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Nastavení (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Chyba nastavení hovorů"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Načítání nastavení..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nebyly provedeny žádné změny."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Zvolte službu hlasové schránky"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Váš operátor"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Nastavení mobilní sítě"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Starý kód PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nový kód PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Čekejte prosím."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nový kód PIN je příliš krátký."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nový kód PIN je příliš dlouhý."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nový kód PIN je příliš slabý. Silný kód by neměl obsahovat postupnou řadu čísel ani opakující se čísla."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Starý kód PIN se neshoduje."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Nový kód PIN obsahuje neplatné znaky."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Kód PIN se nepodařilo změnit"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepodporovaný typ zprávy, pokud si ji chcete poslechnout zavolejte na číslo <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Nastavení mobilní sítě"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilní síť"</string>
     <string name="label_available" msgid="1181658289009300430">"Dostupné sítě"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Vyhledávání..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Žádná síť nebyla nalezena."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Přihlášení k síti bylo úspěšné."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Vybrat síťového operátora"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Hledat všechny dostupné sítě"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Zvolit automaticky"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automaticky zvolit upřednostňovanou síť"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Vybírat síť automaticky"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Síť"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatická registrace..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferovaný typ sítě"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Změnit provozní režim sítě"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Pouze GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA – preferováno"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Volání"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Síť"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Vylepšený režim 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Rozšířené volání"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Používat ke zlepšení hlasové a další komunikace služby LTE (doporučeno)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dat. přenosy aktivovány"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Povolit používání dat"</string>
-    <string name="roaming" msgid="8871412572928323707">"Datový roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Pozor"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Používat datové služby při roamingu"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Používat datové služby při roamingu"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Datové připojení bylo přerušeno, protože jste opustili domovskou síť a máte vypnutý datový roaming."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Mohou vám být účtovány vysoké poplatky."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Povolit datový roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Využití dat"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"V období <xliff:g id="ID_2">%2$s</xliff:g> jste využili <xliff:g id="ID_1">%1$s</xliff:g> mobilních dat"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operátor"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobilní data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Přistupovat k datům přes mobilní síť"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Volání přes Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videohovory přes operátora"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Využití dat"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Byl překročen limit <xliff:g id="USED_0">%1$s</xliff:g>\nPřenosová rychlost byla snížena na <xliff:g id="USED_1">%2$d</xliff:g> kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Uplynulo <xliff:g id="USED_0">%1$d</xliff:g>٪ cyklu\nPočet dní do začátku dalšího období: <xliff:g id="USED_1">%2$d</xliff:g> (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"V případě překročení limitu využití dat se přenosová rychlost sníží na <xliff:g id="USED">%1$d</xliff:g> kb/s"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Další informace o zásadách využití dat v mobilní síti vašeho mobilního operátora"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Další informace o zásadách využití dat v mobilní síti vašeho mobilního operátora"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Zprávy SMS informační služby"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Zprávy SMS informační služby"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Zprávy SMS informační služby povoleny"</string>
@@ -332,7 +358,7 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"Nastavení operátora"</string>
     <string name="fdn" msgid="7878832555095183202">"Povolená tel. čísla"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Povolená tel. čísla (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"Seznam povolených telefonních čísel"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Seznam povolených čísel"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Povolená čísla (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Aktivace povolených telefonních čísel"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Funkce Povolená tel. čísla je zapnuta"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Přidat kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Upravit kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Smazat kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Vytočit kontakt"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Zadejte kód PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Jméno"</string>
     <string name="number" msgid="7905950798349903858">"Číslo"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Mazání povoleného telefonního čísla..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Povolené telefonní číslo bylo smazáno."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Funkce Povolená tel. čísla nebyla aktualizována, protože jste zadali chybný kód PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Funkce Povolená tel. čísla nebyla aktualizována, protože číslo nesmí obsahovat více než 20 číslic."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Funkce Povolená telefonní čísla nebyla aktualizována, protože číslo je prázdné nebo obsahuje více než 20 číslic."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Povolená tel. čísla (FDN) nebyla aktualizována. Kód PIN2 byl nesprávný nebo bylo telefonní číslo odmítnuto."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operace s čísly FDN se nezdařila."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čtení ze SIM karty..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Číslo hlasové schránky je neznámé."</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Žádný signál"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Vybraná síť (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) není k dispozici"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Chcete-li provést hovor, vypněte režim Letadlo."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Pokud chcete volat, zapněte mobilní síť a vypněte režim letadla nebo spořič baterie."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Chcete-li provést hovor, vypněte režim Letadlo."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Chcete-li se připojit k bezdrátové síti a provést hovor, vypněte režim Letadlo."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Chcete-li uskutečnit běžný hovor, opusťte režim tísňového volání."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Přihlášení k síti nebylo úspěšné."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilní síť je nedostupná."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilní síť není k dispozici. Chcete-li provést hovor, připojte se k bezdrátové síti."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilní síť je nedostupná."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilní síť není k dispozici. Pokud chcete provést hovor, připojte se k bezdrátové síti."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Hovor nelze uskutečnit."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Spouštění sekvence MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Volání se nezdařilo."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hovor teď není možné přidat."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Služba není podporována."</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Hovory nelze přepnout."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Hovor nelze rozdělit."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hovory nelze spojit do konferenčního hovoru."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Hovor nelze odmítnout."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hovor nelze ukončit."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hovory nelze podržet."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Chcete-li provést hovor, připojte se k bezdrátové síti."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Pokud chcete provést hovor, povolte volání přes připojení Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tísňové volání"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Zapínání rádia..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Služba je nedostupná. Probíhá další pokus…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Během nouzového volání není možné zapnout režim letadla."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Hovor nelze uskutečnit. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> není číslo tísňového volání."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Hovor nelze uskutečnit. Vytočte číslo tísňového volání."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Číslo vytočíte pomocí klávesnice."</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importovat vše"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importování kontaktů ze SIM karty"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import z kontaktů"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt byl importován"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontakt se nepodařilo importovat"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Naslouchátka"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Zapnout režim kompatibility s naslouchátkem"</string>
   <string-array name="tty_mode_entries">
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Byl aktivován režim tísňového zpětného volání"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Režim tísňového zpětného volání"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datové spojení zakázáno"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="few"><xliff:g id="COUNT_1">%s</xliff:g> minuty nebude k dispozici datové připojení</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%s</xliff:g> minuty nebude k dispozici datové připojení</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> minut nebude k dispozici datové připojení</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> minutu nebude k dispozici datové připojení</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Datové připojení nebude dostupné do <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="few">]Telefon bude <xliff:g id="COUNT_1">%s</xliff:g> minuty v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
       <item quantity="many">]Telefon bude <xliff:g id="COUNT_1">%s</xliff:g> minuty v režimu zpětného tísňového volání. V tomto režimu nelze používat aplikace, které používají datové připojení. Chcete akci nyní ukončit?</item>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"vybrat kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Hlasové volání není podporováno"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"vytáčení"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrace"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrace"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuální hlasová schránka"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Nastavte kód PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Změnit kód PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Vyzvánění a vibrace"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vestavěné SIM karty"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Zapnout videohovory"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Pouze tísňová volání"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM karta, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Přístupnost"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Příchozí hovor přes Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Hovor přes Wi-Fi:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Volání přes Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Otevřete opětovným klepnutím"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Akci provedete opětovným klepnutím"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Při dekódování zprávy došlo k chybě."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM karta aktivovala vaši službu a byly aktualizovány roamingové možnosti telefonu."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Máte příliš mnoho aktivních hovorů. Ukončete nebo spojte stávající hovory, než zahájíte nový."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Připojení se nezdařilo, vložte prosím platnou SIM kartu."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Bylo ztraceno připojení Wi-Fi. Hovor byl ukončen."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Změňte kód PIN hlasové schránky"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Pokračovat"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Zrušit"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potvrďte starý kód PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Pokud chcete pokračovat, zadejte kód PIN hlasové schránky."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Nastavte nový kód PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN musí mít <xliff:g id="MIN">%1$d</xliff:g> až <xliff:g id="MAX">%2$d</xliff:g> číslic."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potvrďte kód PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Kódy PIN nejsou shodné"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Kód PIN hlasové schránky byl změněn"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kód PIN se nepodařilo nastavit"</string>
 </resources>
diff --git a/res/values-da/config.xml b/res/values-da/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-da/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 7938179..26e6929 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobildata"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobildata"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Opkaldstjenester"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Nødopkald"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Opkald"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Telefonsvarernummer mangler"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Der er ikke gemt noget telefonsvarernummer på SIM-kortet."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Tilføj nummer"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Indstillingerne for telefonsvareren kan kun ændres af den primære bruger."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Blokeringen af dit SIM-kort er blevet ophævet. Din telefon låser op ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Pinkode til oplåsning af SIM-netværket"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Lås op"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Anmoder om oplåsning af netværk ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Anmodningen om oplåsning af netværk mislykkedes."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Netværket blev låst op."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Denne bruger har ikke adgang til indstillingerne for mobilnetværk"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Denne bruger har ikke adgang til mobilnetværksindstillinger"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Indstillinger for GSM-opkald"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Indstillinger for GSM-opkald (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Indstillinger for CDMA-opkald"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Foretag opkald med"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Foretag SIP-opkald med"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Spørg først"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Der er intet tilgængeligt netværk"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Indstillinger"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Vælg konti"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkonti"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Telefonsvarer"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Telefonsvarer (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Underretninger"</string>
     <string name="networks" msgid="8873030692174541976">"Netværksudbydere"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Nødudsendelser"</string>
     <string name="call_settings" msgid="6112441768261754562">"Indstillinger for opkald"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Ved utilgængelig"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nummer ved utilgængelig"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Viderestiller til <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Deaktiveret"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Fra"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Dit mobilselskab understøtter ikke deaktivering af viderestilling af opkald, når telefonen ikke er tilgængelig."</string>
     <string name="updating_title" msgid="6146755386174019046">"Indstillinger for opkald"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Opkaldsindstillinger kan kun ændres af den primære bruger."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Opkaldsindstillingerne kan kun ændres af administratorbrugeren."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Indstillinger (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Fejl i indstillinger for opkald"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Læser indstillinger ..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Der blev ikke foretaget nogen ændringer."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Vælg telefonsvarertjeneste"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Dit mobilselskab"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Indstillinger for mobilnetværk"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Nuværende pinkode"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny pinkode"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Vent et øjeblik."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nye pinkode er for kort."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nye pinkode er for lang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Denne pinkode er for svag. En stærk adgangskode består ikke af en række tal og har ikke flere af de samme tal efter hinanden."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Den gamle pinkode er forkert."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Den nye pinkode har ugyldige tegn."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Pinkoden kan ikke ændres"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Ikke-understøttet beskedtype. Ring til <xliff:g id="NUMBER">%s</xliff:g> for at aflytte."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Indstillinger for mobilnetværk"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilnetværk"</string>
     <string name="label_available" msgid="1181658289009300430">"Tilgængelige netværk"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Søger..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Der blev ikke fundet nogen netværk."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registreret på netværket."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Vælg en netværksudbyder"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Søg efter alle tilgængelige netværk"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Vælg automatisk"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Vælg automatisk det foretrukne netværk"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Vælg netværk automatisk"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Netværk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatisk registrering..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Foretrukken netværkstype"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Skift netværksdriftstilstand"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Kun GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA foretrækkes"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Opkald"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Netværk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Udvidet 4G LTE-tilstand"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Avancerede opkald"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Anvend LTE-tjenester til at forbedre tale og anden kommunikation (anbefalet)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data aktiveret"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Tillad dataforbrug"</string>
-    <string name="roaming" msgid="8871412572928323707">"Dataroaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Bemærk!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Opret forbindelse til datatjenester under roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Opret forbindelse til datatjenester under roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Du har mistet dataforbindelsen, fordi du har forladt dit hjemmenetværk, og dataroaming er slået fra."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Du kan risikere at skulle betale høje gebyrer."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillade dataroaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Dataforbrug"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobildata er brugt i perioden <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Mobilselskab"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobildata"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Få adgang til data via mobilnetværk"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-opkald"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videoopkald via mobilselskab"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Indstillinger for GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Indstillinger for CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Databrug"</string>
@@ -224,15 +250,15 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datahastigheden er nedsat til <xliff:g id="USED">%1$d</xliff:g> Kb/s, hvis datagrænsen overskrides"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Flere oplysninger om mobilselskabets politik vedrørende dataforbrug på netværket"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Oplysninger om mobilselskabets politik om databrug på netværket"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast-sms"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast-sms"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cell Broadcast-sms aktiveret"</string>
     <string name="cell_bc_sms_disable" msgid="3398365088309408749">"Cell Broadcast-sms deaktiveret"</string>
     <string name="cb_sms_settings" msgid="651715019785107312">"Indstillinger for Cell Broadcast-sms"</string>
-    <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Nødtransmission"</string>
-    <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Nødtransmission er aktiveret"</string>
-    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Nødtransmission er deaktiveret"</string>
+    <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Nødudsendelse"</string>
+    <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Nødudsendelse er aktiveret"</string>
+    <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Nødudsendelse er deaktiveret"</string>
     <string name="enable_disable_administrative" msgid="6501582322182059412">"Administration"</string>
     <string name="administrative_enable" msgid="1750086122962032235">"Administration er aktiveret"</string>
     <string name="administrative_disable" msgid="8433273857248698539">"Administration er deaktiveret"</string>
@@ -352,7 +378,7 @@
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Skift pinkode for at få adgang til begrænset opkald."</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Administrer liste over telefonnumre"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Privat talekommunikation"</string>
-    <string name="voice_privacy_summary" msgid="3159383389833516214">"Aktivér udvidet fortrolighedstilstand"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Aktivér Udvidet fortrolighedstilstand"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY-tilstand"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"Angiv TTY-tilstand"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Prøv automatisk igen"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Tilføj kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Rediger kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Slet kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Ring til kontaktperson"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Indtast PIN2-kode"</string>
     <string name="name" msgid="7329028332786872378">"Navn"</string>
     <string name="number" msgid="7905950798349903858">"Nummer"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Sletter nummer til begrænset opkald..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Nummeret til begrænset opkald blev slettet."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Nummeret til begrænset opkald blev ikke opdateret, fordi du har indtastet en forkert pinkode."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Nummeret til begrænset opkald blev ikke opdateret, fordi nummeret ikke må overstige 20 cifre."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN blev ikke opdateret, fordi antallet er tomt eller overstiger 20 cifre."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Nummeret til begrænset opkald blev ikke opdateret. PIN2-koden var forkert, eller telefonnummeret blev afvist."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Handlingen mislykkedes."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Læser fra SIM-kort ..."</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Telefonsvarernummeret er ukendt"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ingen dækning"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Det valgte netværk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgængeligt"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Slå flytilstand fra for at foretage et opkald."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Slå Mobilnetværk til, Flytilstand fra eller Batterisparefunktion fra for at foretage et opkald."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Slå flytilstand fra for at foretage et opkald."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slå flytilstand fra, eller opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Afslut nødtilbagekaldstilstand for at foretage et almindeligt opkald."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ikke registreret på netværk."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilnetværket er ikke tilgængeligt."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilnetværk er ikke tilgængeligt. Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilnetværket er ikke tilgængeligt."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilnetværk er ikke tilgængeligt. Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Indtast et gyldigt nummer for at foretage et opkald."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Kan ikke ringe op."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starter MMI-sekvens ..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Opkald mislykkedes."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Opkaldet kan ikke tilføjes på nuværende tidspunkt."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Tjenesten er ikke understøttet"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Kan ikke skifte opkald."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Kan ikke adskille opkald."</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Der kunne ikke oprettes mødeopkald."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan ikke afvise opkaldet."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigive et eller flere opkald."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Opkald kan ikke sættes i venteposition."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktivér Wi-Fi-opkald for at foretage et opkald."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødopkald"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Tænder for radio ..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver igen..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Flytilstand kan ikke slås til under et nødopkald."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Kan ikke ringe op. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> er ikke et alarmnummer."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Kan ikke ringe op. Ring til et alarmnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Brug tastatur til at ringe op"</string>
@@ -470,11 +501,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importer alle"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importerer SIM-kontakter"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importer fra kontakter"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontaktpersonen blev importeret"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontaktpersonen kunne ikke importeres"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Høreapparater"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Slå høreapparatskompatibilitet til"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY fra"</item>
-    <item msgid="3971695875449640648">"TTY er fuld"</item>
+    <item msgid="3971695875449640648">"Fuld TTY-tilstand"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Gik i nødtilbagekaldstilstand"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Nødtilbagekaldstilstand"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataforbindelsen er deaktiveret"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Ingen dataforbindelse i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
-      <item quantity="other">Ingen dataforbindelse i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Der er ingen dataforbindelse før kl. <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Telefonen vil være i tilstanden Nødopkald i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Mens denne tilstand er aktiveret, kan du ikke bruge nogen applikationer, der kræver dataforbindelse. Vil du afslutte denne tilstand nu?</item>
       <item quantity="other">Telefonen vil være i tilstanden Nødopkald i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Mens denne tilstand er aktiveret, kan du ikke bruge nogen applikationer, der kræver dataforbindelse. Vil du afslutte denne tilstand nu?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"vælg kontaktperson"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Taleopkald understøttes ikke"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ring op"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibration"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibration"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuel telefonsvarer"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Lyd"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Angiv pinkode"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Skift pinkode"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibration"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Indbyggede SIM-kort"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Slå videoopkald til"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Kun nødopkald"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kortrille: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Hjælpefunktioner"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Indgående Wi-Fi-opkald"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-opkald fra"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-opkald"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tryk igen for at åbne"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tryk igen for at åbne"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Der opstod en fejl under afkodning af beskeden."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Et SIM-kort har aktiveret din tjeneste og opdateret telefonens roamingmuligheder."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Der er for mange aktive opkald. Afslut et opkald, eller flet eksisterende opkald, inden du foretager et nyt."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Forbindelsen kunne ikke oprettes. Indsæt et gyldigt SIM-kort."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Du mistede Wi-Fi-forbindelsen. Opkaldet blev afsluttet."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Skift pinkode til din telefonsvarer"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Fortsæt"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Annuller"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Bekræft din gamle pinkode"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Angiv din pinkode til din telefonsvarer for at fortsætte."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Angiv en ny pinkode"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Pinkoden skal være på <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> cifre."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Bekræft din pinkode"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Pinkoderne er ikke ens"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Pinkode til din telefonsvarer blev opdateret"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Pinkoden kan ikke angives"</string>
 </resources>
diff --git a/res/values-de/config.xml b/res/values-de/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-de/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2a4c6fc..3cd4989 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobilfunkdaten"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilfunk"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefondienste"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Notruf"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Liste der zugelassenen Rufnummern"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Zugelassene Rufnummern"</string>
     <string name="unknown" msgid="6878797917991465859">"Unbekannt"</string>
     <string name="private_num" msgid="6713286113000232309">"Private Nummer"</string>
     <string name="payphone" msgid="4793877574636445118">"Münztelefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Fehlende Mailbox-Nummer"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Auf der SIM-Karte ist keine Mailbox-Nummer gespeichert."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer hinzufügen"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Mailboxeinstellungen können nur vom primären Nutzer geändert werden."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Deine SIM-Karte wurde entsperrt. Dein Telefon wird nun entsperrt..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN zur Entsperrung des SIM-Netzwerks"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Entsperren"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Netzwerkentsperrung wird angefordert..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Anfrage für Entsperrung des Netzwerks war nicht erfolgreich."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Entsperrung des Netzwerks nicht erfolgreich."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Die Einstellungen für Mobilfunknetze sind für diesen Nutzer nicht verfügbar."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile Netzwerkeinstellungen sind für diesen Nutzer nicht verfügbar."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-Anrufeinstellungen"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-Anrufeinstellungen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-Anrufeinstellungen"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Telefonieren mit"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP-Anrufe tätigen mit"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Erst fragen"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Kein Netzwerk verfügbar"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Einstellungen"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Konten auswählen"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkonten"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Mailbox"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mailbox (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"MB:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Benachrichtigungen"</string>
     <string name="networks" msgid="8873030692174541976">"Mobilfunkanbieter"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Notfallbenachrichtigungen"</string>
     <string name="call_settings" msgid="6112441768261754562">"Anrufeinstellungen"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Wenn nicht erreichbar"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nummer falls nicht erreichbar"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Weiterleitung an <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Deaktiviert"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Aus"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Dein Mobilfunkanbieter unterstützt die Deaktivierung der Anrufweiterleitung bei Nichterreichbarkeit nicht."</string>
     <string name="updating_title" msgid="6146755386174019046">"Anrufeinstellungen"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Anrufeinstellungen können nur vom primären Nutzer geändert werden."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Anrufeinstellungen können nur vom Administrator geändert werden."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Einstellungen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Fehler bei Anrufeinstellungen"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Einstellungen werden gelesen…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"Einstellungen werden aktualisiert…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Einstellungen werden zurückgesetzt..."</string>
     <string name="response_error" msgid="6674110501330139405">"Unerwartete Antwort von Netzwerk"</string>
-    <string name="exception_error" msgid="7027667130619518211">"Netzwerk- oder SIM-Kartenfehler"</string>
+    <string name="exception_error" msgid="7027667130619518211">"Netzwerk- oder SIM-Kartenfehler."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS-Anfrage wurde in DIAL-Anfrage geändert."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS-Anfrage wurde in USSD-Anfrage geändert."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS-Anfrage wurde in neue SS-Anfrage geändert."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Es wurden keine Änderungen vorgenommen."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Mailbox-Dienst auswählen"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Mobilfunkanbieter"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Einstellungen für Mobilfunknetze"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Alte PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Neue PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Bitte warten."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Die neue PIN ist zu kurz."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Die neue PIN ist zu lang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Die neue PIN ist zu unsicher. Ein sicheres Passwort sollte keine aufeinanderfolgenden oder wiederholten Zeichen enthalten."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Die alte PIN stimmt nicht überein."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Die neue PIN enthält ungültige Zeichen."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN kann nicht geändert werden"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nicht unterstützter Nachrichtentyp, zum Abhören <xliff:g id="NUMBER">%s</xliff:g> anrufen."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Einstellungen für Mobilfunknetze"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilfunknetz"</string>
     <string name="label_available" msgid="1181658289009300430">"Verfügbare Netzwerke"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Suche läuft..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Keine Netzwerke gefunden"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"In Netzwerk registriert."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Mobilfunkanbieter auswählen"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Nach allen verfügbaren Netzwerken suchen"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Automatisch auswählen"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Bevorzugtes Netzwerk automatisch auswählen"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Netzwerk automatisch auswählen"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Netzwerk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatische Registrierung..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Bevorzugter Netzwerktyp"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Netzwerkbetriebsmodus ändern"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Nur GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA bevorzugt"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Anrufe"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Netzwerk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Erweiterter 4G LTE-Modus"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Erweiterte Anruffunktionen"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Zur Verbesserung von Sprache und Kommunikation LTE-Dienste verwenden (empfohlen)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Daten aktiviert"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Datennutzung zulassen"</string>
-    <string name="roaming" msgid="8871412572928323707">"Daten-Roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Achtung"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Bei Roaming mit Datendienst verbinden"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Bei Roaming mit Datendienst verbinden"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Die Datenverbindung wurde unterbrochen, weil du dein privates Netzwerk verlassen hast und Daten-Roaming nicht aktiviert ist."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Es können hohe Gebühren anfallen."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Daten-Roaming zulassen?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datennutzung"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobile Daten genutzt im Zeitraum <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Mobilfunkanbieter"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobile Daten"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Datenzugriff über Mobilfunknetz"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Anrufe über WLAN"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videoanrufe über Mobilfunkanbieter"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM-/UMTS-Optionen"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-Optionen"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datenverbrauch"</string>
@@ -222,7 +248,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Maximum von <xliff:g id="USED_0">%1$s</xliff:g> wurde überschritten.\nDatenrate wurde auf <xliff:g id="USED_1">%2$d</xliff:g> kbit/s reduziert."</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g> % des Zyklus sind verstrichen. \nDer nächste Zeitraum beginnt in <xliff:g id="USED_1">%2$d</xliff:g> Tagen (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datenrate wird auf <xliff:g id="USED">%1$d</xliff:g> kbit/s reduziert, wenn Datennutzungslimit überschritten wird."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Weitere Informationen zu den Richtlinien deines Mobilfunkanbieters zur Nutzung der Mobilfunkdaten"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Weitere Informationen über die Richtlinien deines Mobilfunkanbieters zur Nutzung der Mobilfunknetzdaten"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cell Broadcast SMS aktiviert"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Kontakt hinzufügen"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Kontakt bearbeiten"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Kontakt löschen"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Nummer des Kontakts wählen"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 eingeben"</string>
     <string name="name" msgid="7329028332786872378">"Name"</string>
     <string name="number" msgid="7905950798349903858">"Nummer"</string>
@@ -373,11 +400,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Zugelassene Rufnummer wird gelöscht..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Zugelassene Rufnummer gelöscht"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Die Liste der zugelassenen Rufnummern konnte nicht aktualisiert werden, da du eine falsche PIN eingegeben hast."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Die Liste der zugelassenen Rufnummern konnte nicht aktualisiert werden, da die Nummer maximal 20 Ziffern haben darf."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Die Rufnummernbeschränkung wurde nicht aktualisiert, da die Nummer leer ist oder 20 Zeichen überschreitet."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Die Liste der zugelassenen Rufnummern konnte nicht aktualisiert werden. Die eingegebene PIN2 ist ungültig oder die Rufnummer wurde abgelehnt."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Fehler bei der Rufnummernbeschränkung"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-Karte wird ausgelesen..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Keine Kontakte auf SIM-Karte"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Keine Kontakte auf SIM-Karte."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Kontakte für Import auswählen"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Deaktiviere den Flugmodus, um Kontakte von der SIM-Karte zu importieren."</string>
     <string name="enable_pin" msgid="5422767284133234860">"PIN-Abfrage für SIM-Karte aktivieren/deaktivieren"</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Mailboxnummer unbekannt"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"kein Dienst"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Ausgewähltes Netzwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nicht verfügbar"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Deaktiviere zum Telefonieren den Flugmodus."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Zum Anrufen Mobilfunknetz aktivieren, Flugmodus oder Energiesparmodus deaktivieren."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Deaktiviere zum Telefonieren den Flugmodus."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Deaktiviere zum Telefonieren den Flugmodus oder stelle eine WLAN-Verbindung her."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Beende den Notfallrückrufmodus, um einen Anruf zu tätigen, bei dem es sich nicht um einen Notfall handelt."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nicht in Netzwerk registriert."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilfunknetz nicht verfügbar"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Es ist kein Mobilfunknetz verfügbar. Stelle zum Telefonieren eine WLAN-Verbindung her."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilfunknetz ist nicht verfügbar."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Es ist kein Mobilfunknetz verfügbar. Stelle zum Telefonieren eine WLAN-Verbindung her."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Gib eine gültige Nummer ein."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Anruf nicht möglich."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-Sequenz wird gestartet..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Fehler beim Anruf."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Der Anruf kann momentan nicht hinzugefügt werden."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Dienst wird nicht unterstützt"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Anruf kann nicht gewechselt werden."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Anruf kann nicht getrennt werden."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Keine Telefonkonferenz möglich."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Anruf kann nicht abgelehnt werden."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Anrufe können nicht freigegeben werden."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Anrufe können nicht gehalten werden."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Stelle zum Telefonieren eine WLAN-Verbindung her."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktiviere Anrufe über WLAN, um anzurufen."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Notruf"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Mobilfunkverbindung wird aktiviert..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Kein Service. Erneuter Versuch..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Während eines Notrufs ist das Wechseln in den Flugmodus nicht möglich."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Anruf nicht möglich. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ist keine Notrufnummer."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Anruf nicht möglich. Wähle eine Notrufnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Zum Wählen Tastatur verwenden"</string>
@@ -468,6 +499,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Alle importieren"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM-Kontakte werden importiert"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Aus Kontakten importieren"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt wird importiert."</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Fehler beim Importieren des Kontakts"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hörhilfen"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Hörhilfekompatibilität aktivieren"</string>
   <string-array name="tty_mode_entries">
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Notfallrückrufmodus aktiviert"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Notfallrückrufmodus"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datenverbindung deaktiviert"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> Minuten lang keine Datenverbindung</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> Minute lang keine Datenverbindung</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Keine Datenverbindung bis <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Das Smartphone wird <xliff:g id="COUNT_1">%s</xliff:g> Minuten lang in den Notfallrückrufmodus versetzt. In dieser Zeit können Apps mit Datenverbindung nicht genutzt werden. Möchtest du den Vorgang jetzt abbrechen?</item>
       <item quantity="one">Das Smartphone wird <xliff:g id="COUNT_0">%s</xliff:g> Minute lang in den Notfallrückrufmodus versetzt. In dieser Zeit können Apps mit Datenverbindung nicht genutzt werden. Möchtest du den Vorgang jetzt abbrechen?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"Kontakt wählen"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Sprachanruf wird nicht unterstützt."</string>
     <string name="description_dial_button" msgid="7459705245418435351">"Wählen"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibration"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibration"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuelle Mailbox"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Töne"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN festlegen"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN ändern"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Klingelton &amp; Vibration"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Integrierte SIM-Karten"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Videoanrufe aktivieren"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Nur Notrufe"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-Karte, Schacht: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Bedienungshilfen"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Eingehender WLAN-Anruf"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"WLAN-Anruf von"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WLAN-Anruf"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Zum Öffnen erneut berühren"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Zum Öffnen erneut tippen"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Beim Entschlüsseln der Nachricht ist ein Fehler aufgetreten."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Eine SIM-Karte hat deinen Dienst aktiviert und die Roamingfunktionen deines Smartphones aktualisiert."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Zu viele aktive Anrufe. Beende aktive Anrufe oder führe sie zusammen, bevor du einen neuen Anruf tätigst."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Verbindung kann nicht hergestellt werden. Lege eine gültige SIM-Karte ein."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"WLAN-Verbindung unterbrochen. Anruf beendet."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Mailbox-PIN ändern"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Weiter"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Abbrechen"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Alte PIN bestätigen"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Gib zum Fortfahren deine Mailbox-PIN ein."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Neue PIN festlegen"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN muss <xliff:g id="MIN">%1$d</xliff:g> - <xliff:g id="MAX">%2$d</xliff:g> Zeichen umfassen."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN bestätigen"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Die PINs stimmen nicht überein"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Mailbox-PIN aktualisiert"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Festlegen der PIN nicht möglich"</string>
 </resources>
diff --git a/res/values-el/config.xml b/res/values-el/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-el/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 78a1cac..970f9b0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Δεδομένα κινητής τηλεφωνίας"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Δεδομένα κινητής συσκευής"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Υπηρεσίες τηλεφώνου"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Πρόγραμμα κλήσης έκτακτης ανάγκης"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Τηλέφωνο"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Λείπει ο αριθμός αυτόματου τηλεφωνητή"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Δεν έχει αποθηκευτεί αριθμός για τον αυτόματο τηλεφωνητή στην κάρτα SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Προσθήκη αριθμού"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Οι ρυθμίσεις αυτόματου τηλεφωνητή μπορούν να αλλάξουν μόνο από τον κύριο χρήστη."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Καταργήθηκε ο αποκλεισμός της κάρτας SIM. Το τηλέφωνό σας ξεκλειδώνεται..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Αριθμός PIN ξεκλειδώματος δικτύου κάρτας SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Ξεκλείδωμα"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Αίτηση ξεκλειδώματος δικτύου..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ανεπιτυχές αίτημα ξεκλειδώματος δικτύου."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Το ξεκλείδωμα δικτύου ήταν επιτυχές."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Οι ρυθμίσεις δικτύου κινητής τηλεφωνίας δεν είναι διαθέσιμες για αυτόν το χρήστη"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Οι ρυθμίσεις δικτύου κινητής τηλεφωνίας δεν είναι διαθέσιμες γι\' αυτόν το χρήστη"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ρυθμίσεις κλήσης GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Ρυθμίσεις κλήσης GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ρυθμίσεις κλήσης CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Πραγματοποίηση κλήσεων με"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Πραγματοποίηση κλήσεων SIP με"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Να γίνεται ερώτηση πρώτα"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Δεν υπάρχει διαθέσιμο δίκτυο"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Ρυθμίσεις"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Επιλογή λογαριασμών"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Λογαριασμοί τηλεφώνου"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Αυτόματος τηλεφωνητής"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Τηλεφωνητής (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ΑΤ:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Ειδοποιήσεις"</string>
     <string name="networks" msgid="8873030692174541976">"Εταιρείες δικτύου"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Εκπομπές έκτακτης ανάγκης"</string>
     <string name="call_settings" msgid="6112441768261754562">"Ρυθμίσεις κλήσης"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Όταν δεν είμαι διαθέσιμος/η"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Αριθμός όταν δεν είμαι διαθέσιμος/η"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Προώθηση στο <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Απενεργοποιημένη"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Ανενεργό"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Η εταιρεία κινητής τηλεφωνίας δεν υποστηρίζει την απενεργοποίηση της προώθησης κλήσεων όταν το τηλέφωνό σας δεν έχει σήμα."</string>
     <string name="updating_title" msgid="6146755386174019046">"Ρυθμίσεις κλήσης"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Οι ρυθμίσεις κλήσεων μπορούν να αλλάξουν μόνο από τον κύριο χρήστη."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Οι ρυθμίσεις κλήσεων μπορούν να αλλάξουν μόνο από τον χρήστη που έχει ρόλο διαχειριστή."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ρυθμίσεις (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Σφάλμα ρυθμίσεων κλήσης"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Ανάγνωση ρυθμίσεων…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Δεν έγιναν αλλαγές."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Επιλογή υπηρεσίας αυτόματου τηλεφωνητή"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Ο πάροχος κινητής τηλεφωνίας"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Ρυθμίσεις δικτ. κιν. τηλ."</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Παλιό PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Νέο PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Περιμένετε."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Το νέο PIN είναι πολύ μικρό."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Το νέο PIN είναι πολύ μεγάλo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Το νέο PIN είναι πολύ αδύναμο. Ένας ισχυρός κωδικός πρόσβασης δεν θα πρέπει να αποτελείται από ακολουθίες χαρακτήρων ή επαναλαμβανόμενα ψηφία."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Το παλιό PIN δεν αντιστοιχεί."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Το νέο PIN περιέχει μη έγκυρους χαρακτήρες."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Δεν είναι δυνατή η αλλαγή του PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Μη υποστηριζόμενος τύπος μηνύματος: καλέστε στο <xliff:g id="NUMBER">%s</xliff:g> για να το ακούσετε."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Ρυθμίσεις δικτύου κινητής τηλεφωνίας"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Δίκτυο κινητής τηλεφωνίας"</string>
     <string name="label_available" msgid="1181658289009300430">"Διαθέσιμα δίκτυα"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Αναζήτηση..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Δεν βρέθηκαν δίκτυα."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Έγινε εγγραφή στο δίκτυο."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Επιλέξτε μια εταιρεία δικτύου"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Αναζήτηση διαθέσιμων δικτύων"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Αυτόματη επιλογή"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Αυτόματη επιλογή προτιμώμενου δικτύου"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Αυτόματη επιλογή δικτύου"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Δίκτυο"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Αυτόματη εγγραφή..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Προτιμώμενος τύπος δικτύου"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Αλλαγή κατάστασης λειτουργίας δικτύου"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Μόνο GSM"</item>
     <item msgid="3817924849415716259">"Προτιμώνται GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Κλήση"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Δίκτυο"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Βελτιωμένη λειτουργία 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Προηγμένες λειτουργίες κλήσης"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Χρήση υπηρεσιών LTE για τη βελτίωση της φωνητικής επικοινωνίας και άλλου είδους επικοινωνιών (συνιστάται)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Ενεργοποίηση δεδομένων"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Επιτρέπεται η χρήση δεδομένων"</string>
-    <string name="roaming" msgid="8871412572928323707">"Περιαγωγή δεδομένων"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Προσοχή"</string>
+    <string name="roaming" msgid="7894878421600247140">"Περιαγωγή"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Χάσατε τη σύνδεση δεδομένων επειδή φύγατε από το οικείο δίκτυο έχοντας την περιαγωγή δεδομένων απενεργοποιημένη."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Ενδέχεται να επιβαρυνθείτε με σημαντικές χρεώσεις."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Να επιτρέπεται η περιαγωγή δεδομένων;"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Χρήση δεδομένων"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> δεδομένα κινητής τηλεφωνίας σε χρήση μεταξύ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Εταιρεία κινητής τηλεφωνίας"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Δεδομένα κινητής τηλεφωνίας"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Πρόσβαση σε δεδομένα μέσω δικτύου κινητής τηλεφωνίας"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Κλήσεις μέσω Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Βιντεοκλήση μέσω εταιρείας κινητής τηλεφωνίας"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Επιλογές GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Επιλογές CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Χρήση δεδομένων"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Συμπληρώθηκε το μέγιστο όριο <xliff:g id="USED_0">%1$s</xliff:g>\nΗ ταχύτητα δεδομένων μειώθηκε σε <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Έχει περάσει το <xliff:g id="USED_0">%1$d</xliff:g>٪ του κύκλου\nΗ επόμενη περίοδος ξεκινά σε <xliff:g id="USED_1">%2$d</xliff:g> ημέρες (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Εάν το όριο χρήσης δεδομένων ξεπεραστεί, τότε η ταχύτητα δεδομένων θα μειωθεί σε <xliff:g id="USED">%1$d</xliff:g> Kb/s"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Περισσότερες πληροφορίες σχετικά με την πολιτική χρήσης δεδομένων στο δίκτυο της εταιρείας κινητής τηλεφωνίας που χρησιμοποιείτε"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Περισσότερες πληροφορίες σχετικά με την πολιτική χρήσης δεδομένων στο δίκτυο της εταιρείας κινητής τηλεφωνίας"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Ενεργοποιήθηκε η μετάδοση SMS μέσω κινητού τηλεφώνου"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Προσθήκη επαφής"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Επεξεργασία επαφής"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Διαγραφή επαφής"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Κλήση επαφής"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Τύπος PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Όνομα"</string>
     <string name="number" msgid="7905950798349903858">"Αριθμός"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Διαγραφή καθορισμένου αριθμού κλήσης…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Ο καθορισμένος αριθμός κλήσης διαγράφηκε."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Το FDN δεν ενημερώθηκε, επειδή πληκτρολογήσατε εσφαλμένο PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Το FDN δεν ενημερώθηκε διότι ο αριθμός δεν μπορεί να ξεπερνάει τα 20 ψηφία."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Το FDN δεν ενημερώθηκε, επειδή ο αριθμός είναι κενός ή ξεπερνάει τα 20 ψηφία."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Δεν έγινε ενημέρωση του FDN. Το PIN2 ήταν λανθασμένο ή ο αριθμός του τηλεφώνου απορρίφθηκε."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Αποτυχία λειτουργίας FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ανάγνωση από κάρτα SIM…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ο αριθμός αυτόματου τηλεφωνητή είναι άγνωστος"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Δίκτυο μη διαθέσιμο"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Επιλεγμένο δίκτυο (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) μη διαθέσιμο"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Απενεργοποιήστε τη λειτουργία κλήσης για να πραγματοποιήσετε μια κλήση."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Ενεργοποιήστε το δίκτυο κινητής τηλεφωνίας, απενεργοποιήστε τη λειτουργία πτήσης ή τη λειτουργία εξοικονόμησης μπαταρίας, για να πραγματοποιήσετε μια κλήση."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Απενεργοποιήστε τη λειτουργία κλήσης για να πραγματοποιήσετε μια κλήση."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Απενεργοποιήστε τη λειτουργία πτήσης ή συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Πραγματοποιήστε έξοδο από τη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης για να πραγματοποιήσετε μια κλήση μη έκτακτης ανάγκης."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Δεν έχετε εγγραφεί στο δίκτυο."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο. Συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο. Συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Για να πραγματοποιήσετε κλήση, εισαγάγετε έναν έγκυρο αριθμό."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Δεν είναι δυνατή η κλήση."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Έναρξη ακολουθίας MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Η κλήση απέτυχε."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Δεν είναι δυνατή η προσθήκη κλήσης αυτήν τη στιγμή."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Η υπηρεσία δεν υποστηρίζεται"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Δεν είναι δυνατή η εναλλαγή κλήσεων."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Δεν είναι δυνατός ο διαχωρισμός της κλήσης."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Αδύνατη η πραγματοποίηση κλήσεων συνδιάσκεψης."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Δεν είναι δυνατή η απόρριψη της κλήσης."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Δεν είναι δυνατή η πραγματοποίηση κλήσεων."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Δεν είναι δυνατή η αναμονή κλήσεων."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Συνδεθείτε σε ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Ενεργοποιήστε τη δυνατότητα κλήσεων μέσω Wi-Fi για να πραγματοποιήσετε μια κλήση."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Κλήσεις επείγουσας ανάγκης"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ενεργοποίηση πομπού..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Δεν υπάρχει υπηρεσία. Νέα προσπάθεια…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Δεν είναι δυνατή η ενεργοποίηση της λειτουργίας πτήσης κατά τη διάρκεια μιας κλήσης έκτακτης ανάγκης."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Δεν είναι δυνατή η κλήση. Το <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> δεν είναι αριθμός έκτακτης ανάγκης."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Δεν είναι δυνατή η κλήση. Πληκτρολογήστε έναν αριθμό έκτακτης ανάγκης."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Χρησιμοποιήστε το πληκτρολόγιο για να πραγματοποιήσετε καλέσετε έναν αριθμό"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Εισαγωγή όλων"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Εισαγωγή επαφών από κάρτα SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Εισαγωγή από επαφές"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Εισαγόμενη επαφή"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Αποτυχία εισαγωγής επαφής"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Βοηθήματα ακρόασης"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Ενεργοποίηση συμβατότητας βοηθήματος ακρόασης"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY Απενεργοποιήθηκε"</item>
-    <item msgid="3971695875449640648">"TTY πλήρες"</item>
+    <item msgid="3971695875449640648">"TTY Full"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Είσοδος σε λειτουργία επιστροφής κλήσης έκτακτης ανάγκης"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Λειτουργία επιστροφής κλήσης έκτακτης ανάγκης"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Απενεργοποιήθηκε η σύνδεση δεδομένων"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT_1">%s</xliff:g> λεπτά</item>
-      <item quantity="one">Δεν θα υπάρχει σύνδεση δεδομένων για <xliff:g id="COUNT_0">%s</xliff:g> λεπτό</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Χωρίς σύνδεση δεδομένων έως <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Το τηλέφωνο θα βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\" για <xliff:g id="COUNT_1">%s</xliff:g> λεπτά. Σε αυτήν την κατάσταση, δεν είναι δυνατή η χρήση εφαρμογών που χρησιμοποιούν σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;</item>
       <item quantity="one">Το τηλέφωνο θα βρίσκεται σε κατάσταση \"Επείγουσας επιστροφής κλήσης\" για <xliff:g id="COUNT_0">%s</xliff:g> λεπτό. Σε αυτήν την κατάσταση, δεν είναι δυνατή η χρήση εφαρμογών που χρησιμοποιούν σύνδεση δεδομένων. Θέλετε να εξέλθετε τώρα;</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"επιλογή επαφής"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Η φωνητική κλήση δεν υποστηρίζεται"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"κλήση"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Δόνηση"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Δόνηση"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Οπτικός αυτόματος τηλεφ."</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ήχος"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Ορισμός PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Αλλαγή PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ήχος κλήσης &amp; δόνηση"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ενσωματωμένες κάρτες SIM"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Ενεργοποίηση βιντεοκλήσεων"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Μόνο κλήσεις έκτακτης ανάγκης"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Κάρτα SIM, υποδοχή: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Προσβασιμότητα"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Εισερχ. κλήση μέσω Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Κλήση Wi-Fi από"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Κλήση μέσω Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Αγγίξτε ξανά για άνοιγμα"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Πατήστε ξανά για άνοιγμα"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Παρουσιάστηκε κάποιο σφάλμα κατά την αποκωδικοποίηση του μηνύματος."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Μια κάρτα SIM ενεργοποίησε την υπηρεσία σας και ενημέρωσε τις δυνατότητες περιαγωγής του τηλεφώνου σας."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Υπάρχουν πάρα πολλές ενεργές κλήσεις. Τερματίστε ή να συγχωνεύστε τις υπάρχουσες κλήσεις πριν πραγματοποιήσετε νέα."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Δεν είναι δυνατή η σύνδεση. Τοποθετήστε μια έγκυρη κάρτα SIM."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Η σύνδεση Wi-Fi χάθηκε. Η κλήση τερματίστηκε."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Αλλαγή PIN αυτόματου τηλεφωνητή"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Συνέχεια"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Ακύρωση"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ΟΚ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Επιβεβαιώστε το παλιό σας PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Εισαγάγετε το PIN του αυτόματου τηλεφωνητή σας για να συνεχίσετε."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Ορίστε ένα νέο PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Το PIN πρέπει να αποτελείται από <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> ψηφία."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Επιβεβαιώστε το PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Τα PIN δεν ταιριάζουν"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Το PIN αυτόματου τηλεφωνητή ενημερώθηκε"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Δεν είναι δυνατή η ρύθμιση του PIN"</string>
 </resources>
diff --git a/res/values-en-rAU/config.xml b/res/values-en-rAU/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-en-rAU/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index a9eaf67..e69450b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobile Data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Phone Services"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Emergency Dialler"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Phone"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Voicemail settings can only be modified by the primary user."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Your SIM card has been unblocked. Your phone is unlocking…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM network unlock PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Unlock"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobile network settings are not available for this user"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile network settings are not available for this user"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM call settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Make calls with"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Make SIP calls with"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Ask first"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No network available"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Settings"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Choose accounts"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifications"</string>
     <string name="networks" msgid="8873030692174541976">"Network operators"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
     <string name="call_settings" msgid="6112441768261754562">"Call settings"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"When unreachable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Number when unreachable"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Disabled"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Off"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Your operator doesn\'t support disabling call forwarding when your phone is unreachable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Call settings"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Call settings can only be changed by the primary user."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Call settings can only be changed by the admin user."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Call settings error"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Reading settings…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"No changes were made."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choose voicemail service"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobile network settings"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Please wait."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"The old PIN doesn\'t match."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"The new PIN contains invalid characters."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Unable to change PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Unsupported message type. Call <xliff:g id="NUMBER">%s</xliff:g> to listen."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobile network settings"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobile network"</string>
     <string name="label_available" msgid="1181658289009300430">"Available networks"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Searching…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No networks found."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registered on network."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Choose a network operator"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Search for all available networks"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Choose automatically"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatically choose preferred network"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatically select network"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Network"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatic registration..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferred network type"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Change the network operating mode"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM only"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Calling"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Network"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Advanced calling"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Use LTE services to improve voice and other communications (recommended)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data enabled"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Allow data usage"</string>
-    <string name="roaming" msgid="8871412572928323707">"Data roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Attention"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Data usage"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobile data used between <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobile data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Access data using mobile network"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi calling"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Carrier video calling"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum exceeded\nData rate reduced to <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ of cycle elapsed\nNext period starts in <xliff:g id="USED_1">%2$d</xliff:g> days (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Data rate reduced to <xliff:g id="USED">%1$d</xliff:g> Kb/s if data usage limit is exceeded"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"More information about your operator\'s mobile network data use policy"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"More information about your operator\'s mobile network data usage policy"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Mobile Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Mobile Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Mobile Broadcast SMS enabled"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Dial contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Type PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Name"</string>
     <string name="number" msgid="7905950798349903858">"Number"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Deleting fixed dialling number…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fixed dialling number deleted."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN wasn\'t updated because you typed an incorrect PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN wasn\'t updated because the number can\'t exceed 20 digits."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN wasn\'t updated because the number is empty or exceeds 20 digits."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN wasn\'t updated. The PIN2 was incorrect or the phone number was rejected."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN operation failed."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"No service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobile network not available."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Call failed."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Call cannot be added at the moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service not supported"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Can\'t switch calls."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Can\'t separate call."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Enable Wi-Fi calling to make a call."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Cannot enter aeroplane mode during an emergency call."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Can\'t call. Dial an emergency number."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use keyboard to dial"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Import all"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importing SIM contacts"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import from contacts"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Imported contact"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Failed to import contact"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hearing aids"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Turn on hearing-aid compatibility"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY Off"</item>
-    <item msgid="3971695875449640648">"TTY Full"</item>
+    <item msgid="512950011423868021">"TTY off"</item>
+    <item msgid="3971695875449640648">"TTY full"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-      <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"No data connection until <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
       <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"select contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Voice calling not supported"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"dial"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Set PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Turn on video calling"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi call from"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tap again to open"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Unable to connect. Please insert a valid SIM card."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi connection lost. Call ended."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Change Voicemail PIN"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continue"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancel"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirm your old PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Enter your voicemail PIN to continue."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Set a new PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN must be <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> digits long."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirm your PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PINs don\'t match"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Voicemail PIN updated"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Unable to set PIN"</string>
 </resources>
diff --git a/res/values-en-rGB/config.xml b/res/values-en-rGB/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-en-rGB/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index a9eaf67..e69450b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobile Data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Phone Services"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Emergency Dialler"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Phone"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Voicemail settings can only be modified by the primary user."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Your SIM card has been unblocked. Your phone is unlocking…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM network unlock PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Unlock"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobile network settings are not available for this user"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile network settings are not available for this user"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM call settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Make calls with"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Make SIP calls with"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Ask first"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No network available"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Settings"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Choose accounts"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifications"</string>
     <string name="networks" msgid="8873030692174541976">"Network operators"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
     <string name="call_settings" msgid="6112441768261754562">"Call settings"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"When unreachable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Number when unreachable"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Disabled"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Off"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Your operator doesn\'t support disabling call forwarding when your phone is unreachable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Call settings"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Call settings can only be changed by the primary user."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Call settings can only be changed by the admin user."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Call settings error"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Reading settings…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"No changes were made."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choose voicemail service"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobile network settings"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Please wait."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"The old PIN doesn\'t match."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"The new PIN contains invalid characters."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Unable to change PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Unsupported message type. Call <xliff:g id="NUMBER">%s</xliff:g> to listen."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobile network settings"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobile network"</string>
     <string name="label_available" msgid="1181658289009300430">"Available networks"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Searching…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No networks found."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registered on network."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Choose a network operator"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Search for all available networks"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Choose automatically"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatically choose preferred network"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatically select network"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Network"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatic registration..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferred network type"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Change the network operating mode"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM only"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Calling"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Network"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Advanced calling"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Use LTE services to improve voice and other communications (recommended)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data enabled"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Allow data usage"</string>
-    <string name="roaming" msgid="8871412572928323707">"Data roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Attention"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Data usage"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobile data used between <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobile data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Access data using mobile network"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi calling"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Carrier video calling"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum exceeded\nData rate reduced to <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ of cycle elapsed\nNext period starts in <xliff:g id="USED_1">%2$d</xliff:g> days (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Data rate reduced to <xliff:g id="USED">%1$d</xliff:g> Kb/s if data usage limit is exceeded"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"More information about your operator\'s mobile network data use policy"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"More information about your operator\'s mobile network data usage policy"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Mobile Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Mobile Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Mobile Broadcast SMS enabled"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Dial contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Type PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Name"</string>
     <string name="number" msgid="7905950798349903858">"Number"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Deleting fixed dialling number…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fixed dialling number deleted."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN wasn\'t updated because you typed an incorrect PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN wasn\'t updated because the number can\'t exceed 20 digits."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN wasn\'t updated because the number is empty or exceeds 20 digits."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN wasn\'t updated. The PIN2 was incorrect or the phone number was rejected."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN operation failed."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"No service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobile network not available."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Call failed."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Call cannot be added at the moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service not supported"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Can\'t switch calls."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Can\'t separate call."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Enable Wi-Fi calling to make a call."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Cannot enter aeroplane mode during an emergency call."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Can\'t call. Dial an emergency number."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use keyboard to dial"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Import all"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importing SIM contacts"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import from contacts"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Imported contact"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Failed to import contact"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hearing aids"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Turn on hearing-aid compatibility"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY Off"</item>
-    <item msgid="3971695875449640648">"TTY Full"</item>
+    <item msgid="512950011423868021">"TTY off"</item>
+    <item msgid="3971695875449640648">"TTY full"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-      <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"No data connection until <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
       <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"select contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Voice calling not supported"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"dial"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Set PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Turn on video calling"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi call from"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tap again to open"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Unable to connect. Please insert a valid SIM card."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi connection lost. Call ended."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Change Voicemail PIN"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continue"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancel"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirm your old PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Enter your voicemail PIN to continue."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Set a new PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN must be <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> digits long."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirm your PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PINs don\'t match"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Voicemail PIN updated"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Unable to set PIN"</string>
 </resources>
diff --git a/res/values-en-rIN/config.xml b/res/values-en-rIN/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-en-rIN/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index a9eaf67..e69450b 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobile Data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Phone Services"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Emergency Dialler"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Phone"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Missing voicemail number"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No voicemail number is stored on the SIM card."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Add number"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Voicemail settings can only be modified by the primary user."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Your SIM card has been unblocked. Your phone is unlocking…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM network unlock PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Unlock"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Requesting network unlock…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Network unlock request unsuccessful."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Network unlock successful."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobile network settings are not available for this user"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobile network settings are not available for this user"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM call settings"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM call settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA call settings"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Make calls with"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Make SIP calls with"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Ask first"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No network available"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Settings"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Choose accounts"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Phone accounts"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifications"</string>
     <string name="networks" msgid="8873030692174541976">"Network operators"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emergency broadcasts"</string>
     <string name="call_settings" msgid="6112441768261754562">"Call settings"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"When unreachable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Number when unreachable"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Forwarding to <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Disabled"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Off"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Your operator doesn\'t support disabling call forwarding when your phone is unreachable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Call settings"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Call settings can only be changed by the primary user."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Call settings can only be changed by the admin user."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Settings (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Call settings error"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Reading settings…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"No changes were made."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choose voicemail service"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Your operator"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobile network settings"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Old PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"New PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Please wait."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"The new PIN is too short."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"The new PIN is too long."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"The new PIN is too weak. A strong password should not have a continuous sequence or repeated digits."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"The old PIN doesn\'t match."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"The new PIN contains invalid characters."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Unable to change PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Unsupported message type. Call <xliff:g id="NUMBER">%s</xliff:g> to listen."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobile network settings"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobile network"</string>
     <string name="label_available" msgid="1181658289009300430">"Available networks"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Searching…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No networks found."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registered on network."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Choose a network operator"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Search for all available networks"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Choose automatically"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatically choose preferred network"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatically select network"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Network"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatic registration..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferred network type"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Change the network operating mode"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM only"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Calling"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Network"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Advanced calling"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Use LTE services to improve voice and other communications (recommended)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data enabled"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Allow data usage"</string>
-    <string name="roaming" msgid="8871412572928323707">"Data roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Attention"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Connect to data services when roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Connect to data services when roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"You have lost data connectivity because you left your home network with data roaming turned off."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"You may incur significant charges."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Allow data roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Data usage"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobile data used between <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobile data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Access data using mobile network"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi calling"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Carrier video calling"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Options"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Options"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Data usage"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum exceeded\nData rate reduced to <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ of cycle elapsed\nNext period starts in <xliff:g id="USED_1">%2$d</xliff:g> days (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Data rate reduced to <xliff:g id="USED">%1$d</xliff:g> Kb/s if data usage limit is exceeded"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"More information about your operator\'s mobile network data use policy"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"More information about your operator\'s mobile network data usage policy"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Mobile Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Mobile Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Mobile Broadcast SMS enabled"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Add contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edit contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Delete contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Dial contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Type PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Name"</string>
     <string name="number" msgid="7905950798349903858">"Number"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Deleting fixed dialling number…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fixed dialling number deleted."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN wasn\'t updated because you typed an incorrect PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN wasn\'t updated because the number can\'t exceed 20 digits."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN wasn\'t updated because the number is empty or exceeds 20 digits."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN wasn\'t updated. The PIN2 was incorrect or the phone number was rejected."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN operation failed."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Reading from SIM card…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemail number unknown"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"No service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Selected network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) unavailable"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Turn off aeroplane mode to make a call."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Turn off aeroplane mode or connect to a wireless network to make a call."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Exit emergency callback mode to make a non-emergency call."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Not registered on network."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobile network not available."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobile network not available."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"To place a call, enter a valid number."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Can\'t call."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Starting MMI sequence…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Call failed."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Call cannot be added at the moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service not supported"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Can\'t switch calls."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Can\'t separate call."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Unable to conference calls."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Can\'t reject call."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Can\'t release call(s)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Can\'t hold calls."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connect to a wireless network to make a call."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Enable Wi-Fi calling to make a call."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency call"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Turning on radio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No service. Trying again…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Cannot enter aeroplane mode during an emergency call."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Can\'t call. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is not an emergency number."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Can\'t call. Dial an emergency number."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use keyboard to dial"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Import all"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importing SIM contacts"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import from contacts"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Imported contact"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Failed to import contact"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hearing aids"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Turn on hearing-aid compatibility"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY Off"</item>
-    <item msgid="3971695875449640648">"TTY Full"</item>
+    <item msgid="512950011423868021">"TTY off"</item>
+    <item msgid="3971695875449640648">"TTY full"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entered Emergency Callback Mode"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Data connection disabled"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">No data connection for <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-      <item quantity="one">No data connection for <xliff:g id="COUNT_0">%s</xliff:g> minute</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"No data connection until <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_1">%s</xliff:g> minutes. While in this mode no applications using a data connection can be used. Do you want to exit now?</item>
       <item quantity="one">The phone will be in Emergency Callback mode for <xliff:g id="COUNT_0">%s</xliff:g> minute. While in this mode no apps using a data connection can be used. Do you want to exit now?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"select contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Voice calling not supported"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"dial"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrate"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sound"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Set PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Change PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone &amp; Vibrate"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Built-in SIM cards"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Turn on video calling"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency calling only"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Incoming Wi-Fi call"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi call from"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi call"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touch again to open"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tap again to open"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"There was an error while decoding the message."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"A SIM card has activated your service and updated your phone\'s roaming capabilities."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"There are too many active calls. Please end or merge existing calls before placing a new one."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Unable to connect. Please insert a valid SIM card."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi connection lost. Call ended."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Change Voicemail PIN"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continue"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancel"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirm your old PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Enter your voicemail PIN to continue."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Set a new PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN must be <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> digits long."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirm your PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PINs don\'t match"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Voicemail PIN updated"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Unable to set PIN"</string>
 </resources>
diff --git a/res/values-es-rUS/config.xml b/res/values-es-rUS/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-es-rUS/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 4ac0ae5..30641a8 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Datos móviles"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Datos de celulares"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Servicios telefónicos"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Marcador de emergencia"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Teléfono"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Falta el número de correo de voz"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No hay un número de correo de voz almacenado en la tarjeta SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Agregar número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Solo el usuario principal puede cambiar la configuración del correo de voz."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Tu tarjeta SIM ha sido desbloqueada. Tu dispositivo está desbloqueando..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN de desbloqueo de red de tarjeta SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloquear"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando desbloqueo de red..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Solicitud de desbloqueo de red incorrecta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueo de red correcto."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"La configuración de la red móvil no está disponible para este usuario."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"La configuración de la red móvil no está disponible para este usuario."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Config. de llam. GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Configuración de llamadas de GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configuración de llamadas de CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Realizar llamadas con"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Realizar llamadas SIP con"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Preguntar primero"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No hay redes disponibles"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Configuración"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Elegir cuentas"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Cuentas telefónicas"</string>
@@ -75,9 +77,10 @@
     <string name="voicemail" msgid="8693759337917898954">"Correo de voz"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Buzón de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Correo de voz:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificaciones"</string>
     <string name="networks" msgid="8873030692174541976">"Operadores de red"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmisiones de emergencia"</string>
-    <string name="call_settings" msgid="6112441768261754562">"Configuración de llamada"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Configuración de llamadas"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Configuración adicional"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Configuración adicional (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Configuración de llamadas de GSM adicionales únicamente"</string>
@@ -92,7 +95,7 @@
     <string name="labelCW" msgid="6120513814915920200">"Llamada en espera"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Durante una llamada, notificarme sobre las llamadas entrantes"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Durante una llamada, notificarme sobre las llamadas entrantes"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Configuración de reenvío de llamadas"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Reenvío de llamadas"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Configuración de desvío de llamada (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Desvío de llamadas"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Reenviar siempre"</string>
@@ -111,15 +114,15 @@
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Reenviar a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Desactivado"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Tu proveedor no admite la inhabilitación del desvío de llamadas cuando tu teléfono no responde."</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"Cuando está inaccesible"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Cuando no esté disponible"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número cuando no se puede establecer la llamada"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Reenviar a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desactivado"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desactivar"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Tu proveedor no admite la inhabilitación del desvío de llamadas cuando no se puede acceder a tu teléfono."</string>
     <string name="updating_title" msgid="6146755386174019046">"Config. de llamada"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Solo el usuario principal puede cambiar la configuración de llamadas."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Solo el usuario administrador puede cambiar la configuración de llamadas."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Configuración (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Error en configuración de llamada"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Error de configuración de llamada"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Leyendo configuración..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Actualizando configuración..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Revirtiendo configuraciones..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"No se realizaron cambios."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Elegir servicio de buzón de voz"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Tu proveedor"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Configuración de la red móvil"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN anterior"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuevo PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Un momento."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El nuevo PIN es demasiado corto."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El nuevo PIN es demasiado largo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El nuevo PIN no es muy seguro. Una contraseña segura no debería tener secuencias continuas ni dígitos repetidos."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"El PIN anterior no coincide."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"El nuevo PIN contiene caracteres no válidos."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"No se puede cambiar el PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipo de mensaje no compatible. Llama al <xliff:g id="NUMBER">%s</xliff:g> para escucharlo."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Configuración de red móvil"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Red móvil"</string>
     <string name="label_available" msgid="1181658289009300430">"Redes disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Buscando..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No se encontraron redes."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrado en la red."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Elegir un operador de red"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Buscar todas las redes disponibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Elegir automáticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Elegir la red preferida automáticamente"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Seleccionar red de forma automática"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Red"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registro automático…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de red preferido"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Cambiar el modo operativo de la red"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM solamente"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferido"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Llamando"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Red"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modo 4G LTE mejorado"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Llamadas avanzadas"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Usa servicios de LTE para mejorar comunicaciones de voz y otras (recomendado)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Usar paquete de datos"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir el uso de datos"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming de datos"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atención"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Conectar a servicios de datos en roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Conectar a servicios de datos en roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Perdiste la conectividad de datos porque se desactivó la itinerancia de datos de tu red doméstica."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Puede ocasionar gastos importantes."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"¿Deseas permitir el roaming de datos?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Uso de datos"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Datos móviles usados entre <xliff:g id="ID_2">%2$s</xliff:g>: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Proveedor"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Datos móviles"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Acceder a los datos usando la red móvil"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Llamada con Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videollamada con el proveedor"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opciones de GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opciones de CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Utilización de datos"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g>máximo excedido\nLa velocidad de la transferencia de datos se redujo a <xliff:g id="USED_1">%2$d</xliff:g> kb/seg."</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>% del ciclo transcurrido\nEl siguiente período comienza en <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"La velocidad de la transferencia de datos se reduce a <xliff:g id="USED">%1$d</xliff:g> Kb/seg. si se excede el límite de utilización de datos."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Más información sobre la política de uso de datos móviles del proveedor"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Más información acerca de la política de utilización de datos de la red móvil de tu proveedor de servicios de telefonía móvil"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS de emisión celular"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS de emisión celular"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS de emisión celular activado"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Agregar contacto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Llamar al contacto"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Ingresar el PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nombre"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Eliminando número de marcación fija..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Número de marcación fija eliminado"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"No se actualizó el FDN porque ingresaste un PIN incorrecto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"No se actualizó el FDN porque el número no puede superar los 20 dígitos."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"El NMF no se actualizó porque el número está vacío o excede los 20 dígitos."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"No se actualizó el FDN. El PIN2 era incorrecto o se rechazó el número de teléfono."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Ocurrió un error de funcionamiento con el número de marcado fijo."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leyendo la tarjeta SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número de correo de voz desconocido"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sin servicio"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"La red seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no está disponible"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Desactivar modo de avión para hacer una llamada"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Activa la red móvil y desactiva el modo de avión o el modo de ahorro de batería para realizar una llamada."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Desactivar modo de avión para hacer una llamada"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactivar el modo de avión o conectarse a una red inalámbrica para hacer una llamada"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Para realizar una llamada que no sea de emergencia, sal del modo de devolución de llamada de emergencia."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"No registrado en la red."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Red móvil no disponible"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La red móvil no está disponible. Conéctate a una red inalámbrica para realizar una llamada."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"La red móvil no está disponible."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"La red móvil no está disponible. Conéctate a una red inalámbrica para realizar una llamada."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar una llamada, ingresa un número válido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"No se puede realizar la llamada."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciar la secuencia de MMI"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Error en la llamada"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"No se puede agregar la llamada en este momento."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Servicio no compatible"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"No se puede cambiar llamadas."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"No se puede desviar la llamada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No es posible realizar llamadas en conferencia."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No se puede rechazar la llamada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se puede liberar llamadas."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No es posible poner las llamadas en espera."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conectarse a una red inalámbrica para hacer una llamada"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Habilita las llamadas con Wi-Fi para hacer una llamada."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Encendiendo radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"No hay servicio. Vuelve a intentarlo."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"No se puede entrar en modo de avión durante una llamada de emergencia."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"No se puede realizar la llamada. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> no es un número de emergencia."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"No se puede realizar la llamada. Marca un número de emergencia."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilizar teclado para marcar"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importar todo"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importando contactos SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar desde contactos"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"Ayudas auditivas"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Activar compatibilidad de ayuda auditiva"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Se importó el contacto"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"No se pudo importar el contacto"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Audífonos"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Activar compatibilidad con audífono"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY desactivado"</item>
-    <item msgid="3971695875449640648">"TTY total"</item>
+    <item msgid="3971695875449640648">"TTY completo"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modo de devolución de llamada de emergencia ingresado"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de llamada de emergencia"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"La conexión de datos se ha desactivado"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Sin conexión de datos por <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-      <item quantity="one">Sin conexión de datos por <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Hora de restablecimiento de conexión de datos: <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">El teléfono estará en el modo de llamada de emergencia durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Mientras esté en este modo, no se podrá utilizar ninguna aplicación que utilice una conexión de datos. ¿Quieres salir ahora?</item>
       <item quantity="one">El teléfono estará en el modo de llamada de emergencia durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Mientras esté en este modo, no se podrá utilizar ninguna aplicación que utilice una conexión de datos. ¿Quieres salir ahora?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"seleccionar contacto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"No admite llamadas de voz."</string>
     <string name="description_dial_button" msgid="7459705245418435351">"marcar"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Buzón de voz visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonido"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Establecer PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Tarjetas SIM integradas"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activar videollamadas"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo llamada de emergencia"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Tarjeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidad"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Llamada Wi-Fi entrante"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Llamada con Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Llamada por Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Vuelve a tocar para realizar la acción."</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Presionar de nuevo para abrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Se produjo un error al decodificar el mensaje."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una tarjeta SIM activó tu servicio y actualizó las capacidades de roaming del teléfono."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hay demasiadas llamadas activas. Finaliza o combina las llamadas existentes antes de realizar una llamada nueva."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"No se pudo conectar. Inserta una tarjeta SIM válida."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Se perdió la conexión Wi-Fi. La llamada finalizó."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Cambiar el PIN del buzón de voz"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuar"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancelar"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Aceptar"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirmar el PIN antiguo"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Ingresa el PIN del buzón de voz para continuar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Establecer un PIN nuevo"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"El PIN debe tener entre <xliff:g id="MIN">%1$d</xliff:g> y <xliff:g id="MAX">%2$d</xliff:g> dígitos."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirmar el PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Los PIN no coinciden"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN del buzón de voz actualizado"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"No se puede establecer el PIN"</string>
 </resources>
diff --git a/res/values-es/config.xml b/res/values-es/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-es/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 194f0ab..c0a9260 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Datos móviles"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Datos móviles"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Servicios del teléfono"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Llamada de emergencia"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Teléfono"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Falta el número del buzón de voz."</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"No se ha almacenado ningún número de buzón de voz en la tarjeta SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Añadir número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"El usuario principal es el único que puede modificar los ajustes del buzón de voz."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"La tarjeta SIM se ha desbloqueado. El teléfono se está desbloqueando..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN de desbloqueo de red de tarjeta SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloquear"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando desbloqueo de red..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"La solicitud de desbloqueo de red no se ha realizado correctamente."</string>
     <string name="unlock_success" msgid="6770085622238180152">"El desbloqueo de red se ha realizado correctamente."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Los ajustes de red móvil no están disponibles para este usuario"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Los ajustes de red móvil no están disponibles para este usuario"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ajustes de llamadas GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Ajustes de llamada GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ajustes de llamadas CDMA"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Ajustes de llamada de CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"APN"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Nombres de puntos de acceso"</string>
     <string name="settings_label" msgid="3876743539816984008">"Ajustes de red"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Cuentas de llamadas"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Realizar llamadas con"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Realizar llamadas SIP con"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Preguntar primero"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"No hay ninguna red disponible"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Ajustes"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Elegir cuentas"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Cuentas de teléfono"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Buzón de voz"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Buzón de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Buzón de voz:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificaciones"</string>
     <string name="networks" msgid="8873030692174541976">"Operadores de red"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Difusiones de emergencia"</string>
     <string name="call_settings" msgid="6112441768261754562">"Ajustes de llamadas"</string>
@@ -84,7 +87,7 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Ajustes adicionales de llamadas CDMA"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Ajustes adicionales de llamadas solo CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Ajustes del servicio de red"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"Identificador del emisor"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"ID de llamada"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"Cargando ajustes…"</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Número oculto en llamadas salientes"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Número mostrado en llamadas salientes"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Cuando no esté disponible"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número cuando no se pueda establecer la llamada"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Desviando a <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Inhabilitado"</string>
-    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Tu operador no permite inhabilitar el desvío de llamadas si no se puede establecer la llamada."</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desactivado"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Tu operador no permite inhabilitar el desvío de llamada si no se puede establecer la llamada."</string>
     <string name="updating_title" msgid="6146755386174019046">"Ajustes de llamadas"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"El usuario principal es el único que puede cambiar los ajustes de llamadas."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"El administrador es el único usuario que puede cambiar los ajustes de llamada."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ajustes (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Error de configuración de llamada"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Leyendo ajustes..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"No se ha realizado ningún cambio."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Seleccionar servicio de buzón de voz"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Tu operador"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Ajustes de red móvil"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antiguo"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN nuevo"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Espera…"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"El PIN nuevo es muy corto."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"El PIN nuevo es muy largo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"El PIN nuevo no es lo bastante seguro. Una contraseña segura no debería contener secuencias continuas ni dígitos repetidos."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"El PIN antiguo no coincide."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"El PIN nuevo contiene caracteres no válidos."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"No se puede cambiar el PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Este tipo de mensaje no se admite. Llama al <xliff:g id="NUMBER">%s</xliff:g> para escucharlo."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Ajustes de la red móvil"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Red móvil"</string>
     <string name="label_available" msgid="1181658289009300430">"Redes disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Buscando..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"No se ha encontrado ninguna red."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Conexión con la red establecida"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Selecciona un operador de red"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Buscar todas las redes disponibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Seleccionar automáticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Seleccionar red preferida automáticamente"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Seleccionar una red automáticamente"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Red"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registro automático..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de red preferida"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Cambiar el modo operativo de la red"</string>
@@ -196,20 +210,32 @@
     <item msgid="1524224863879435516">"Solo GSM"</item>
     <item msgid="3817924849415716259">"Preferencia de GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Llamadas"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Red"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modo 4G LTE mejorado"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Llamadas avanzadas"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Usar servicios LTE para mejorar la voz y otras comunicaciones (recomendado)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Habilitar datos"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir uso de datos"</string>
-    <string name="roaming" msgid="8871412572928323707">"Itinerancia de datos"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atención"</string>
+    <string name="roaming" msgid="7894878421600247140">"Itinerancia"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Conectarse a servicios de datos en itinerancia"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Conectarse a servicios de datos en itinerancia"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Has perdido la conectividad de datos porque has dejado desactivada la itinerancia de datos de tu red doméstica."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"El coste de este servicio puede ser significativo."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"¿Permitir itinerancia de datos?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Uso de datos"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Datos móviles utilizados entre el <xliff:g id="ID_2">%2$s</xliff:g>: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operador"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Datos móviles"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Acceder a los datos con la red móvil"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Llamadas por Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videollamadas a través del operador"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opciones GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opciones de CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Uso de datos"</string>
-    <string name="throttle_current_usage" msgid="8762280193043815361">"Datos del período actual"</string>
+    <string name="throttle_current_usage" msgid="8762280193043815361">"Datos del periodo actual"</string>
     <string name="throttle_time_frame" msgid="1915198770363734685">"Período uso datos"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"Política velocidad datos"</string>
     <string name="throttle_help" msgid="243651091785169900">"Más información"</string>
@@ -220,9 +246,9 @@
     <!-- no translation found for throttle_data_usage_subtext (6029276011123694701) -->
     <skip />
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Máx de <xliff:g id="USED_0">%1$s</xliff:g> superado.\nFrec datos reducida a <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
-    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>% del ciclo transcurrido.\nPróx período en <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>% del ciclo transcurrido.\nPróx periodo en <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Frec datos se reduce a <xliff:g id="USED">%1$d</xliff:g> Kb/s si se supera límite uso datos"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Más información sobre la política de uso de datos móviles de tu operador"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Más información sobre política de uso de datos móviles de tu operador"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS de difusión móvil"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS de difusión móvil"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS de difusión móvil habilitado"</string>
@@ -313,9 +339,9 @@
     <string name="network_lte" msgid="7702681952521375754">"LTE (recomendado)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (recomendado)"</string>
     <string name="network_global" msgid="1323190488685355309">"Mundial"</string>
-    <string name="cdma_system_select_title" msgid="5757657769327732833">"Selección de sistema"</string>
-    <string name="cdma_system_select_summary" msgid="60460043745797517">"Cambiar modo de itinerancia CDMA"</string>
-    <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Selección de sistema"</string>
+    <string name="cdma_system_select_title" msgid="5757657769327732833">"Selección del sistema"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Cambiar el modo de itinerancia CDMA"</string>
+    <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Selección del sistema"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="176474317493999285">"Solo sistema doméstico"</item>
     <item msgid="1205664026446156265">"Automático"</item>
@@ -348,7 +374,7 @@
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Habilitar FDN"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Administrar números de marcación fija"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Cambiar PIN para el acceso de FDN"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Administrar lista de números de teléfono"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Gestionar lista de números de teléfono"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Privacidad de voz"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Habilitar modo de privacidad mejorado"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Modo TTY"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Añadir contacto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Marcar el número de un contacto"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Introducir código PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nombre"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Eliminando número de marcación fija..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Se ha eliminado el número de marcación fija."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"No se ha actualizado FDN porque el código PIN que has introducido es incorrecto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"No se ha actualizado FDN porque el número no puede superar los 20 dígitos."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"No se ha actualizado FDN porque el número está vacío o tiene más de 20 dígitos."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN no actualizado. El código PIN2 era incorrecto o se ha rechazado el número de teléfono."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Error de funcionamiento de número de marcación fija."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leyendo desde tarjeta SIM…"</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número del buzón de voz desconocido"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sin servicio"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"La red seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) no está disponible."</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Desactiva el modo avión parra hacer llamadas."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Activa la red móvil o desactiva el modo avión o el modo de ahorro de batería para hacer una llamada."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Desactiva el modo avión parra hacer llamadas."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactiva el modo avión o conéctate a una red inalámbrica para hacer llamadas."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Sal del modo de devolución de llamada de emergencia para hacer otro tipo de llamada."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"No se ha podido conectar a la red"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"La red móvil no está disponible."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La red móvil no está disponible. Conéctate a una red inalámbrica para hacer llamadas."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"La red móvil no está disponible."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"La red móvil no está disponible. Conéctate a una para llamar."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar una llamada, introduce un número válido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"No se puede establecer la llamada."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando secuencia MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"No se ha podido llamar."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"No se puede añadir la llamada en este momento."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Servicio no admitido"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"No se pueden intercambiar llamadas."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"No se pueden separar llamadas."</string>
@@ -446,12 +474,15 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"No se ha podido realizar la conferencia telefónica."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"No se puede rechazar la llamada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"No se pueden hacer llamadas."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"No se pueden retener llamadas."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a una red inalámbrica para hacer llamadas."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Para llamar, tienes que habilitar las llamadas por Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Llamada de emergencia"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando señal móvil…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sin servicio. Reintentado…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Durante una llamada de emergencia no se puede entrar en el modo avión."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"No se puede establecer la llamada. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> no es un número de emergencia."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"No se puede establecer la llamada. Marcar un número de emergencia."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"No se puede establecer la llamada. Marca un número de emergencia."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilizar teclado para marcar"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"Retener"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"Finalizar"</string>
@@ -468,11 +499,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importar todos"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importando contactos de tarjeta SIM..."</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar de contactos"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contacto importado"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Error al importar contactos"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Audífonos"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Activar compatibilidad con audífono"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Activar compatibilidad con audífonos"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY desactivado"</item>
-    <item msgid="3971695875449640648">"Modo TTY completo"</item>
+    <item msgid="3971695875449640648">"TTY completo"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Se ha activado el modo de devolución de llamada de emergencia."</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de llamada de emergencia"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexión de datos inhabilitada"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Ninguna conexión de datos durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-      <item quantity="one">Ninguna conexión de datos durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"No hay conexión de datos hasta las <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Se activará el modo de devolución de llamada de emergencia en el teléfono durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. En este modo, no se puede utilizar ninguna aplicación que emplee una conexión de datos. ¿Quieres salir?</item>
       <item quantity="one">Se activará el modo de devolución de llamada de emergencia en el teléfono durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. En este modo, no se puede utilizar ninguna aplicación que emplee una conexión de datos. ¿Quieres salir?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"seleccionar contacto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Llamadas de voz no admitidas"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"marcar"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Buzón de voz visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonido"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Configurar el PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tono y vibración"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Tarjetas SIM integradas"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activar videollamadas"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo llamadas de emergencia"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Tarjeta SIM, ranura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidad"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Llamada Wi-Fi entrante"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Llamada por Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Llamada Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Vuelve a tocar para abrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Toca de nuevo para abrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Se ha producido un error al decodificar el mensaje."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una tarjeta SIM ha activado tu servicio y actualizado la función de itinerancia del teléfono."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hay demasiadas llamadas activas. Finaliza o combina las llamadas que tienes antes de iniciar otra."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"No se puede establecer la conexión. Inserta una tarjeta SIM válida."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Se ha perdido la conexión Wi-Fi. La llamada ha finalizado."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Cambiar el PIN del buzón de voz"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuar"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancelar"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Aceptar"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirma tu antiguo PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Para continuar, escribe tu PIN del buzón de voz."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Configura un PIN nuevo"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"El PIN debe tener entre <xliff:g id="MIN">%1$d</xliff:g> y <xliff:g id="MAX">%2$d</xliff:g> dígitos."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirma tu PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Los PIN no coinciden"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Se ha cambiado el PIN del buzón de voz"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"No se ha podido configurar el PIN"</string>
 </resources>
diff --git a/res/values-et-rEE/arrays.xml b/res/values-et/arrays.xml
similarity index 100%
rename from res/values-et-rEE/arrays.xml
rename to res/values-et/arrays.xml
diff --git a/res/values-et/config.xml b/res/values-et/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-et/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et/strings.xml
similarity index 86%
rename from res/values-et-rEE/strings.xml
rename to res/values-et/strings.xml
index 7ff4895..f34915a 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobiilne andmeside"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobiilne andmeside"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefoniteenused"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Hädaabikõne valija"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Puudub kõnepostinumber"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kaardile pole salvestatud ühtegi kõnepostinumbrit."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Lisa number"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Kõneposti seadeid saab muuta ainult peamine kasutaja."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Teie SIM-kaardi blokeering on tühistatud. Teie telefoni avamine ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM-võrgu avamise PIN-kood"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Ava"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Võrgu avamise taotlemine ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Võrgu avamise taotlus ebaõnnestus."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Võrgu avamine õnnestus."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobiilsidevõrgu seaded pole selle kasutaja jaoks saadaval"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiilsidevõrgu seaded pole selle kasutaja jaoks saadaval"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-kõneseaded"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-i kõneseaded (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-kõneseaded"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Kõnede tegemine kontoga"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP-kõnede tegemine kontoga"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Küsi esmalt"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Ühtegi võrku pole saadaval"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Seaded"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Valige kontod"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefoni kontod"</string>
@@ -75,8 +77,9 @@
     <string name="voicemail" msgid="8693759337917898954">"Kõnepost"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Kõnepost (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"KP:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Märguanded"</string>
     <string name="networks" msgid="8873030692174541976">"Võrguoperaatorid"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hädaolukorra ülekanded"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hädaolukorra märguanded"</string>
     <string name="call_settings" msgid="6112441768261754562">"Kõneseaded"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Lisaseaded"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Lisaseaded (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kui mind ei saa kätte"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Number, kui pole kättesaadav"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Edastamine numbrile <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Keelatud"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Väljas"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Teie operaator ei toeta kõneedastuse keelamist, kui teie telefon on levist väljas."</string>
     <string name="updating_title" msgid="6146755386174019046">"Kõneseaded"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Kõne seadeid saab muuta ainult peamine kasutaja."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Kõne seadeid saab muuta ainult administraator."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Seaded (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Kõneseadete viga"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Seadete lugemine ..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Muudatusi ei tehtud."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Valige kõnepostiteenus"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Teie operaator"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobiilsidevõrgu seaded"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vana PIN-kood"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Uus PIN-kood"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Oodake."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Uus PIN-kood on liiga lühike."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Uus PIN-kood on liiga pikk."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Uus PIN-kood on liiga nõrk. Tugevas paroolis ei tohi olla mitut järjestikust samasugust tähemärki ega korduvaid numbreid."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Vana PIN-kood ei sobi."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Uus PIN-kood sisaldab sobimatuid tähemärke."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN-koodi ei õnnestu muuta"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Toetamata sõnumi tüüp, kuulamiseks helistage numbrile <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobiilsidevõrgu seaded"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobiilsidevõrk"</string>
     <string name="label_available" msgid="1181658289009300430">"Saadaolevad võrgud"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Otsimine ..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Võrke ei leitud."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Võrku registreeritud."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Võrguoperaatori valimine"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Otsi kõiki saadaolevaid võrke"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Vali automaatselt"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Vali automaatselt eelistatud võrk"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Vali võrk automaatselt"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Võrk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automaatne registreerimine ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Eelistatud võrgutüüp"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Muuda võrgu töörežiimi"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Ainult GSM"</item>
     <item msgid="3817924849415716259">"Eelistatud GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Helistamine"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Võrk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Tõhustatud 4G LTE režiim"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Täpsem helistamine"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Kasutage hääl- ja muu suhtluse täiustamiseks LTE-teenuseid (soovitatav)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Andmeside lubatud"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Luba andmekasutus"</string>
-    <string name="roaming" msgid="8871412572928323707">"Andmesiderändlus"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Tähelepanu"</string>
+    <string name="roaming" msgid="7894878421600247140">"Rändlus"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Ühenda rändluse ajal andmesideteenustega"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Ühenda rändluse ajal andmesideteenustega"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Andmesideühendus katkes, kuna lahkusite koduvõrgust ja andmesiderändlus oli välja lülitatud."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Lisanduda võivad suured tasud."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Kas lubada andmeside rändlus?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Andmekasutus"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Vahemikus <xliff:g id="ID_2">%2$s</xliff:g> on kasutatud <xliff:g id="ID_1">%1$s</xliff:g> mobiilset andmesidet"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operaator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiilne andmeside"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Juurdepääs andmetele mobiilsidevõrgu abil"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"WiFi-kõned"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operaatori videokõne"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM-i/UMTS-i valikud"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA valikud"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Andmete kasutus"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maksimaalne ületatud\nAndmeedastuskiirus vähendatud määrale <xliff:g id="USED_1">%2$d</xliff:g> kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>?? tsüklist möödunud\nJärgmine periood algab <xliff:g id="USED_1">%2$d</xliff:g> päeva pärast (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Kui andmete kasutuslimiit on ületatud, vähendatakse andmeedastuskiirus <xliff:g id="USED">%1$d</xliff:g> kb/s"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Lisateave teie operaatori mobiilsidevõrgu andmete kasutuse eeskirjade kohta"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Lisateave teie operaatori mobiilsidevõrgu andmete kasutuse eeskirjade kohta"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Kärjeteate-SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Kärjeteate-SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Kärjeteate-SMS-id lubatud"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Lisa kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Muuda kontakti"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Kustuta kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Kontaktile helistamine"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Sisestage PIN2-kood"</string>
     <string name="name" msgid="7329028332786872378">"Nimi"</string>
     <string name="number" msgid="7905950798349903858">"Number"</string>
@@ -369,13 +396,13 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Fikseeritud valimisnumbri kustutamine…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fikseeritud valimisnumber kustutatud."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN-i ei värskendatud, sest sisestasite vale PIN-koodi."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN-i ei värskendatud, sest number ei tohi olla pikem kui 20 kohta."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN-i ei värskendatud, sest numbrikoht on tühi või number ületab 20 kohta."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN-i ei värskendatud. PIN2 oli vale või lükati telefoninumber tagasi."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN-i toiming ebaõnnestus."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-kaardilt lugemine ..."</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"Teie SIM-kaardil pole ühtegi kontakti."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Valige imporditavad kontaktid"</string>
-    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Kontaktide importimiseks SIM-kaardilt lülitage lennukirežiim välja."</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Kontaktide importimiseks SIM-kaardilt lülitage lennurežiim välja."</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM-i PIN-koodi lubamine/keelamine"</string>
     <string name="change_pin" msgid="9174186126330785343">"Muuda SIM-kaardi PIN-koodi"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"SIM-i PIN-kood"</string>
@@ -411,7 +438,7 @@
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN-kood 2 ei ole enam blokeeritud"</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"Võrgu või SIM-kaardi viga"</string>
     <string name="doneButton" msgid="2859593360997984240">"Valmis"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Kõnepostinumber"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Kõneposti number"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Valimine"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Uuestivalimine"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Konverentskõne"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Kõneposti number teadmata"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Teenus puudub"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Valitud võrk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) pole saadaval"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Helistamiseks lülitage lennukirežiim välja."</string>
-    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Helistamiseks lülitage lennukirežiim välja või looge ühendus traadita võrguga."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Helistamiseks lülitage mobiilsidevõrk sisse, lennu- või akusäästjarežiim välja."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Helistamiseks lülitage lennurežiim välja."</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Helistamiseks lülitage lennurežiim välja või looge ühendus traadita võrguga."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Muude kui hädaabikõne tegemiseks väljuge hädaabikõnede režiimist."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ei ole võrku registreeritud."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiilsidevõrk pole saadaval."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiilivõrk pole saadaval. Helistamiseks looge ühendus traadita võrguga."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobiilsidevõrk pole saadaval."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobiilsidevõrk pole saadaval. Helistamiseks looge ühendus traadita võrguga."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Helistamiseks sisestage kehtiv number."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Ei saa helistada."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-jada alustamine ..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Kõne ebaõnnestus."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Kõnet ei saa praegu lisada."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Teenust ei toetata"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Kõnesid ei saa vahetada."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Kõnet ei saa eraldada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konverentskõnesid ei saa teha."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kõnet ei saa tagasi lükata."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kõnet (kõnesid) ei saa vabastada."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kõnesid ei saa ootele panna."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Helistamiseks looge ühendus traadita võrguga."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Lubage helistamiseks WiFi-kõned."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hädaabikõne"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Raadioside sisselülitamine ..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Teenus puudub. Uuesti proovimine ..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Hädaabikõne ajal ei saa lennurežiimi aktiveerida."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Ei saa helistada. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ei ole hädaabikõne number."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Ei saa helistada. Valige hädaabinumber."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Kasutage valimiseks klaviatuuri"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Impordi kõik"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM-kaardi kontaktide importimine"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Impordi kontaktidest"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt on imporditud"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontakti importimine ebaõnnestus"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Kuuldeaparaadid"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Lülita kuuldeaparaadi ühilduvus sisse"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY väljas"</item>
-    <item msgid="3971695875449640648">"TTY on täis"</item>
+    <item msgid="3971695875449640648">"TTY-täisrežiim"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Sisenetud hädaolukorra tagasihelistusrežiimi"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Hädaolukorra tagasihelistusrežiim"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Andmeühendus keelatud"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Andmesideühendus puudub <xliff:g id="COUNT_1">%s</xliff:g> minutit</item>
-      <item quantity="one">Andmesideühendus puudub <xliff:g id="COUNT_0">%s</xliff:g> minuti</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Kuni kella <xliff:g id="COMPLETETIME">%s</xliff:g> andmesideühendus puudub"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefon on <xliff:g id="COUNT_1">%s</xliff:g> minutit hädaabikõne tagasihelistamise režiimis. Selles režiimis olles ei saa kasutada ühtegi rakendust, mis kasutab andmesideühendust. Kas soovite kohe väljuda?</item>
       <item quantity="one">Telefon on <xliff:g id="COUNT_0">%s</xliff:g> minuti hädaabikõne tagasihelistamise režiimis. Selles režiimis olles ei saa kasutada ühtegi rakendust, mis kasutab andmesideühendust. Kas soovite kohe väljuda?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"vali kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Tavakõnesid ei toetata"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"helista"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreerimine"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreerimine"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuaalne kõnepost"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Heli"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN-koodi määramine"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-koodi muutmine"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Helin ja vibratsioon"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Sisseehitatud SIM-kaardid"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Videokõnede sisselülitamine"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Ainult hädaabikõned"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kaart, pilu: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Juurdepääsetavus"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Sissetulev WiFi-kõne"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"WiFi-kõne:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WiFi-kõne"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Avamiseks puudutage uuesti"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Avamiseks puudutage uuesti"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Sõnumi dekodeerimisel ilmnes viga."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kaart aktiveeris teenuse ja värskendas telefoni rändlusvõimeid."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Liiga palju aktiivseid kõnesid. Enne uue kõne tegemist lõpetage mõni olemasolev kõne või ühendage mitu kõnet omavahel."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ühendust ei saa luua, sisestage kehtiv SIM-kaart."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"WiFi-ühendus katkes. Kõne lõppes."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Muutke kõneposti PIN-koodi"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Jätka"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Tühista"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Kinnitage vana PIN-kood"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Jätkamiseks sisestage kõneposti PIN-kood."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Määrake uus PIN-kood"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-kood peab olema vahemikus <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> numbrit."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Kinnitage PIN-kood"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-koodid ei ühti"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Kõneposti PIN-koodi värskendati"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN-koodi ei saa määrata"</string>
 </resources>
diff --git a/res/values-eu-rES/arrays.xml b/res/values-eu/arrays.xml
similarity index 100%
rename from res/values-eu-rES/arrays.xml
rename to res/values-eu/arrays.xml
diff --git a/res/values-eu/config.xml b/res/values-eu/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-eu/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu/strings.xml
similarity index 86%
rename from res/values-eu-rES/strings.xml
rename to res/values-eu/strings.xml
index 33d0d5d..65d8791 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mugikorreko datuak"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Datu mugikorrak"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonoaren zerbitzuak"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Larrialdietarako telefonoa"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefonoa"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"FDN zerrenda"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Markatze finkoko zenbakien zerrenda"</string>
     <string name="unknown" msgid="6878797917991465859">"Ezezaguna"</string>
     <string name="private_num" msgid="6713286113000232309">"Zenbaki pribatua"</string>
     <string name="payphone" msgid="4793877574636445118">"Telefono publikoa"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Erantzungailuaren zenbakia falta da"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Ez da erantzungailuaren zenbakirik gorde SIM txartelean."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Gehitu zenbakia"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Erabiltzaile nagusiak bakarrik alda ditzake erantzungailuaren ezarpenak."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM txartela desblokeatu da. Telefonoa desblokeatzen…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM sarea desblokeatzeko PIN kodea"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desblokeatu"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Sarea desblokeatzeko eskatzen…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Sarea desblokeatzeko eskaerak ez du arrakastarik izan."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sarea desblokeatu egin da."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Erabiltzaile honek ez dauzka sare mugikorraren ezarpenak erabilgarri"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Erabiltzaile honek ez dauzka sare mugikorraren ezarpenak erabilgarri"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM deien ezarpenak"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM deien ezarpenak (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA deien ezarpenak"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Egin deiak honekin:"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Egin SIP deiak honekin:"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Galdetu lehendabizi"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Ez dago sarerik erabilgarri"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Ezarpenak"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Aukeratu kontuak"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonoko kontuak"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Erantzungailua"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Erantzungailua (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Erantzungailua:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Jakinarazpenak"</string>
     <string name="networks" msgid="8873030692174541976">"Sare-operadoreak"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Larrialdietako igorpenak"</string>
     <string name="call_settings" msgid="6112441768261754562">"Deien ezarpenak"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Konektatu gabe nagoenean"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Eskuragarri ez dagoenerako zenbakia"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> zenbakira desbideratzen"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desgaituta"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desaktibatuta"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operadoreak ez du dei-desbideratzeak desgaitzea onartzen telefonoa eskuragarri ez dagoen bitartean."</string>
     <string name="updating_title" msgid="6146755386174019046">"Deien ezarpenak"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Erabiltzaile nagusiak soilik alda ditzake deien ezarpenak."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Administratzaileak soilik alda ditzake deien ezarpenak."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ezarpenak (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Deien ezarpenen errorea"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Ezarpenak irakurtzen…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Ez da aldaketarik egin."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Aukeratu erantzungailu-zerbitzua"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operadorea"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Sare mugikorraren ezarpenak"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN kode zaharra"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN kode berria"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Itxaron, mesedez."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Laburregia da PIN kode berria."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Luzeegia da PIN kode berria."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Ez da batere segurua PIN kode berria. Pasahitza segurua izan dadin, ez du izan behar zenbaki-segidarik edo errepikatutako zenbakirik."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"PIN kode zaharra ez dator bat."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Balio ez duten karaktereak ditu PIN kode berriak."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Ezin da aldatu PIN kodea"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Ez dira onartzen mota honetako mezuak. Entzuteko, deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Sare mugikorren ezarpenak"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Sare mugikorra"</string>
     <string name="label_available" msgid="1181658289009300430">"Sare erabilgarriak"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Bilatzen…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Ez da sarerik aurkitu."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Sarean erregistratuta."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Aukeratu sare-operadorea"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Bilatu sare erabilgarri guztiak"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Aukeratu automatikoki"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Aukeratu automatikoki sare hobetsia"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Hautatu sarea automatikoki"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Sarea"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Erregistratze automatikoa…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Sare mota hobetsia"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Aldatu sarearen funtzionamendu modua"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM soilik"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA hobetsita"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Deiak"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Sarea"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"4G LTE modu hobetua"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Deitzeko aukera aurreratuak"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Erabili LTE zerbitzuak ahotsa eta bestelako komunikazioak hobetzeko (gomendatua)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Datuak gaituta"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Onartu datuak erabiltzea"</string>
-    <string name="roaming" msgid="8871412572928323707">"Ibiltaritzako datuak"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Erne"</string>
+    <string name="roaming" msgid="7894878421600247140">"Ibiltaritza"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Konektatu datu-zerbitzuetara ibiltaritzan"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Konektatu datu-zerbitzuetara ibiltaritzan"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Datu-konexioa galdu duzu ibiltaritza desaktibatuta izanda etxeko saretik irten zarelako."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Baliteke kostu handiak ordaindu behar izatea."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Ibiltaritzako datuak baimendu nahi dituzu?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datuen erabilera"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> datu erabili dira data hauen artean: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operadorea"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Datu mugikorrak"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Atzitu datuak datu-konexioaren bidez"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi bidezko deiak"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operadorearen bideo-deiak"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS aukerak"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA aukerak"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datuen erabilera"</string>
@@ -224,7 +250,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datuak erabiltzeko muga gainditzen bada, datu-abiadura <xliff:g id="USED">%1$d</xliff:g> Kb/s izango da"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Informazio gehiago zure operadoreak sare mugikorretako datu-erabileraren inguruan dituen gidalerroei buruz"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Informazio gehiago zure operadoreak sare mugikorretako datu-erabileraren inguruan dituen gidalerroei buruz"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Sare mugikor bidezko SMS igorpenak"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Sare mugikor bidezko SMS igorpenak"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Sare mugikor bidezko SMS igorpena gaituta"</string>
@@ -338,18 +364,18 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"Operadorearen ezarpenak"</string>
     <string name="fdn" msgid="7878832555095183202">"Markatze finkoko zenbakiak"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Markatze finkoko zenbakiak (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"FDN zerrenda"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Markatze finkoko zenbakien zerrenda"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Markatze finkoko zenbakiak (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN aktibazioa"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Markatze finkoko zenbakiak gaituta daude"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"Markatze finkoko zenbakiak desgaituta daude"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Gaitu FDN"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Gaitu markatze finkoko zenbakiak"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Desgaitu FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Aldatu PIN2 kodea"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Desgaitu FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Gaitu FDN"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Gaitu markatze finkoko zenbakiak"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Kudeatu Markatze finkoko zenbakiak"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Aldatu FDN sarbiderako PIN kodea"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Aldatu markatze finkoko zenbakien PIN kodea"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Kudeatu telefono-zenbakien zerrenda"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Ahots-pribatutasuna"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Gaitu pribatutasun modu hobetua"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Gehitu kontaktua"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editatu kontaktua"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Ezabatu kontaktua"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Markatu kontaktuaren zenbakia"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Idatzi PIN2 kodea"</string>
     <string name="name" msgid="7329028332786872378">"Izena"</string>
     <string name="number" msgid="7905950798349903858">"Zenbakia"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Markatze finkoko zenbakia ezabatzen…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Markatze finkoko zenbakia ezabatu da."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Ez da FDN eguneratu PIN kode okerra idatzi duzulako."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Ez da FDN eguneratu zenbakiak ezin dituelako 20 digitu baino gehiago izan."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"MFZa ez da eguneratu zenbakia hutsik dagoelako edo 20 digitu baino gehiago dituelako."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Ez da FDN eguneratu. PIN2 kodea ez da zuzena edo telefono-zenbakia baztertu da."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN eragiketak huts egin du."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM txarteletik irakurtzen…"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Erantzungailuaren zenbakia ezezaguna da"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ez dago zerbitzurik"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Hautatutako sarea (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ez dago erabilgarri"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Deia egiteko, desaktibatu hegaldi modua."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Deitzeko, aktibatu sare mugikorra, desaktibatu hegaldi modua edo desaktibatu bateria aurrezteko modua."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Deia egiteko, desaktibatu hegaldi modua."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Deia egiteko, desaktibatu hegaldi modua edo konektatu haririk gabeko sare batera."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Larrialdikoak ez diren deiak egiteko, irten larrialdi-deiak soilik jasotzeko modutik."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ez dago sarean erregistratuta."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Sare mugikorra ez dago erabilgarri."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sare mugikorra ez dago erabilgarri. Deia egiteko, konektatu haririk gabeko sare batera."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Sare mugikorra ez dago erabilgarri."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Sare mugikorra ez dago erabilgarri. Deia egiteko, konektatu haririk gabeko sare batera."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Deitzeko, idatzi balio duen zenbaki bat."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Ezin da deitu."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI sekuentzia hasten…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Ezin izan da deitu."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Une honetan ezin da gehitu deirik."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Ez da zerbitzua onartzen"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Ezin da deiz aldatu."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Ezin da deia bereizi."</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ezin da konferentzia-deirik egin."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ezin da deia baztertu."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ezin dira deiak bereizi."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Ezin dira zain utzi deiak."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Deia egiteko, konektatu haririk gabeko sare batera."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Deia egiteko, gaitu Wi-Fi bidezko deiak."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Larrialdi-deia"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Irratia pizten…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ez dago zerbitzurik. Berriro saiatzen…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Ezin da erabili hegaldi modua larrialdi-deietan."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Ezin da deitu. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ez da larrialdietarako zenbakia."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Ezin da deitu. Markatu larrialdietarako zenbakia."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Erabili teklatua markatzeko"</string>
@@ -470,6 +501,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Inportatu guztiak"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM txarteleko kontaktuak inportatzen"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Inportatu kontaktuetatik"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Inportatu da kontaktua"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Ezin izan da inportatu kontaktua"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Audiofonoak"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Aktibatu audiofonoen bateragarritasuna"</string>
   <string-array name="tty_mode_entries">
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Larrialdi-deiak soilik jasotzeko modua aktibatu da"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Larrialdi-deiak soilik jasotzeko modua"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datu-konexioa desgaituta"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Ez da datu-konexiorik egin <xliff:g id="COUNT_1">%s</xliff:g> minututan</item>
-      <item quantity="one">Ez da datu-konexiorik egin <xliff:g id="COUNT_0">%s</xliff:g> minutuan</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Ez duzu izango datu-konexiorik ordu honetara arte: <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefonoa larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT_1">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?</item>
       <item quantity="one">Telefonoa larrialdi-deiak soilik jasotzeko moduan egongo da <xliff:g id="COUNT_0">%s</xliff:g> minutuz. Modu horretan dagoen bitartean, ezingo duzu datu-konexioa behar duen aplikaziorik erabili. Irten nahi duzu?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"hautatu kontaktua"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Ez dira ahots-deiak onartzen"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"markatu"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Egin dar-dar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Egin dar-dar"</string>
-    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Erantzungailu bisuala"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Soinua"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Ikusizko erantzungailua"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Ezarri PIN kodea"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Aldatu PIN kodea"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tonua eta dardara"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM txartel integratuak"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Aktibatu bideo-deiak"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Larrialdi-deiak soilik"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM txartela, <xliff:g id="SLOT_ID">%s</xliff:g> erretena"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Erabilerraztasuna"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Sarrerako Wi-Fi deia"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi bidezko deia:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi deia"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Irekitzeko, ukitu berriro"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Irekitzeko, sakatu berriro"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Errore bat gertatu mezua deskodetzean."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM txartel batek zerbitzua aktibatu du eta telefonoaren ibiltaritza-gaitasunak aldatu ditu."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Dei gehiegi daude aktibo. Amaitu edo bateratu abian diren deiak beste bat egin aurretik."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ezin da konektatu. Erabili balio duen SIM txartel bat."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Galdu egin da Wi-Fi konexioa. Amaitu da deia."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Aldatu erantzungailuaren PIN kodea"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Jarraitu"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Utzi"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Ados"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Berretsi PIN kode zaharra"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Idatzi erantzungailuaren PIN kodea jarraitzeko."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Ezarri PIN kode berria"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"<xliff:g id="MIN">%1$d</xliff:g> eta <xliff:g id="MAX">%2$d</xliff:g> digituren artean izan behar ditu PIN kodeak."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Berretsi PIN kodea"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Ez datoz bat PIN kodeak"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Eguneratu da erantzungailuaren PIN kodea"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Ezin da ezarri PIN kodea"</string>
 </resources>
diff --git a/res/values-fa/config.xml b/res/values-fa/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-fa/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 577099b..dd5a9ee 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"داده سلولی"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"داده‌های تلفن همراه"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"سرویس‌های تلفن"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"شماره گیری اضطراری"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"تلفن"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"‏لیست FDN"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"‏فهرست FDN"</string>
     <string name="unknown" msgid="6878797917991465859">"ناشناس"</string>
     <string name="private_num" msgid="6713286113000232309">"شماره خصوصی"</string>
     <string name="payphone" msgid="4793877574636445118">"تلفن عمومی"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"عدم وجود شماره پست صوتی"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"شماره پست صوتی در سیم کارت ذخیره نشده است."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"افزودن شماره"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"فقط «کاربر اصلی» می‌تواند «تنظیمات پست صوتی» را تغییر دهد."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"قفل سیم کارت شما باز شده است. قفل گوشی در حال باز شدن است..."</string>
     <string name="label_ndp" msgid="780479633159517250">"پین بازگشایی قفل شبکه سیم"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"بازگشایی قفل"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"در حال درخواست بازگشایی قفل شبکه..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"درخواست قفل گشایی شبکه ناموفق بود."</string>
     <string name="unlock_success" msgid="6770085622238180152">"قفل گشایی شبکه با موفقیت انجام شد."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"تنظیمات شبکه تلفن همراه برای این کاربر در دسترس نیست"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"تنظیمات شبکه دستگاه همراه برای این کاربر در دسترس نیست"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏تنظیمات تماس GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"‏تنظیمات تماس GSM (‏<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏تنظیمات تماس CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"برقراری تماس‌ها با"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"‏برقراری تماس‌های SIP با"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ابتدا سؤال شود"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"شبکه‌ در دسترس نیست"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"تنظیمات"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"انتخاب حساب‌ها"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"حساب‌های تلفن"</string>
@@ -75,23 +77,24 @@
     <string name="voicemail" msgid="8693759337917898954">"پست صوتی"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"پست صوتی (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"اعلان‌ها"</string>
     <string name="networks" msgid="8873030692174541976">"اپراتورهای شبکه"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"پخش هشدارهای اضطراری"</string>
     <string name="call_settings" msgid="6112441768261754562">"تنظیمات تماس"</string>
-    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"تنظیمات دیگر"</string>
-    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"تنظیمات اضافی (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"تنظیمات بیشتر"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"تنظیمات بیشتر (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"‏سایر تنظیمات تماس فقط GSM"</string>
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"‏سایر تنظیمات تماس CDMA"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"‏سایر تنظیمات تماس فقط CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"تنظیمات سرویس شبکه"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"شناسه تماس گیرنده"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"شناسه تماس‌گیرنده"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"در حال بارگیری تنظیمات..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"شماره پنهان در تماس‌های خروجی"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"شماره نمایش داده شده در تماس‌های خروجی"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"از تنظیمات اپراتور پیش‌فرض برای نمایش شماره من در تماس‌های خروجی استفاده شود"</string>
     <string name="labelCW" msgid="6120513814915920200">"انتظار تماس"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"در طول یک تماس، تماس‌های ورودی به من اطلاع داده شود"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"در طول یک تماس، تماس‌های ورودی به من اطلاع داده شود"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"در طول تماس، تماس‌های ورودی به من اطلاع داده شود"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"در طول تماس، تماس‌های ورودی به من اطلاع داده شود"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"تنظیمات هدایت تماس"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"تنظیمات هدایت تماس (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"هدایت تماس"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"هنگامی که در دسترس نیست"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"شماره در صورت عدم دسترسی"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"هدایت به <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"غیر فعال شد"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"خاموش"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"شرکت مخابراتی شما از غیرفعال کردن هدایت تماس هنگامی که تلفن شما در دسترس نیست پشتیبانی نمی‌کند."</string>
     <string name="updating_title" msgid="6146755386174019046">"تنظیمات تماس"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"فقط کاربر اصلی می‌تواند تنظیمات تماس را تغییر دهد."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"فقط کاربر سرپرست می‌تواند تنظیمات تماس را تغییر دهد."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"تنظیمات (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"خطای تنظیمات تماس"</string>
     <string name="reading_settings" msgid="1920291699287055284">"در حال خواندن تنظیمات..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"تغییری انجام نشده است."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"انتخاب سرویس پست صوتی"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"شرکت مخابراتی شما"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"تنظیمات شبکه تلفن همراه"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"پین قدیمی"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"پین جدید"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"لطفاً منتظر بمانید."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"پین جدید خیلی کوتاه است."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"پین جدید خیلی طولانی است."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"پین جدید خیلی ضعیف است. گذرواژه قوی نباید توالی از اعداد باشد یا عدد تکراری داشته باشد."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"پین قدیمی مطابقت ندارد."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"پین جدید نویسه‌های نامعتبری دارد."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"پین تغییر نکرد"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"نوع پیام پشتیبانی نمی‌شود، برای گوش کردن با <xliff:g id="NUMBER">%s</xliff:g> تماس بگیرید."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"تنظیمات شبکهٔ تلفن همراه"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"شبکه تلفن همراه"</string>
     <string name="label_available" msgid="1181658289009300430">"شبکه‌های موجود"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"در حال جستجو…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"شبکه‌ای یافت نشد."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"در شبکه ثبت شد."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"انتخاب یک اپراتور شبکه"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"جستجوی همه شبکه‌های موجود"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"انتخاب به‌طور خودکار"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"به صورت خودکار شبکه برگزیده را انتخاب کنید"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"انتخاب خودکار شبکه"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"شبکه"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ثبت خودکار..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"نوع شبکه برگزیده"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"تغییر حالت عملکرد شبکه"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"‏فقط GSM"</item>
     <item msgid="3817924849415716259">"‏GSM/WCDMA برگزیده"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"درحال تماس"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"شبکه"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"‏حالت پیشرفته 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"تماس پیشرفته"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"‏استفاده از سرویس‌های LTE جهت بهبود ارتباطات صوتی و سایر ارتباطات (توصیه می‌شود)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"داده‌ها فعال شدند"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"استفاده از داده مجاز است"</string>
-    <string name="roaming" msgid="8871412572928323707">"رومینگ داده"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"توجه"</string>
+    <string name="roaming" msgid="7894878421600247140">"رومینگ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"اتصال به سرویس‌های داده هنگام رومینگ"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"اتصال به سرویس‌های داده هنگام رومینگ"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"اتصال داده خود را از دست داده‌اید، زیرا از شبکه اصلی خود خارج شدید و رومینگ داده خاموش است،"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"شاید هزینه زیادی برای شما داشته باشد."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"رومینگ داده مجاز است؟"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"مصرف داده"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> داده تلفن همراه مصرف‌شده بین <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"شرکت مخابراتی"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"داده‌ تلفن همراه"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"دسترسی به داده‌ها با استفاده از شبکه تلفن همراه"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"‏تماس ازطریق Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"تماس ویدیویی با شرکت مخابراتی"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"‏گزینه‌های GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"‏گزینه‌های CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"مصرف داده"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> بیش از حداکثر مجاز\nنرخ داده به <xliff:g id="USED_1">%2$d</xliff:g> کیلو بیت در ثانیه کاهش یافت"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ از دوره سپری شده\nدوره زمانی بعدی بعد از <xliff:g id="USED_1">%2$d</xliff:g> روز شروع می‌شود (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"در صورت فراتر رفتن مصرف داده از حد مجاز، نرخ داده‌ها به <xliff:g id="USED">%1$d</xliff:g> کیلو بیت در ثانیه کاهش می‌یابد."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"اطلاعات بیشتر درباره خط‌مشی استفاده از داده شبکه تلفن همراه شرکت مخابراتی شما"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"اطلاعات بیشتر درباره خط‌مشی استفاده از داده شبکهٔ تلفن همراه شرکت مخابراتی شما"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"پیامک پخش سلولی"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"پیامک پخش سلولی"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"پیامک پخش سلولی فعال شد"</string>
@@ -330,32 +356,33 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"فعال کردن دستگاه"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"راه‌اندازی سرویس داده"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"تنظیمات شرکت مخابراتی"</string>
-    <string name="fdn" msgid="7878832555095183202">"شماره‌های شماره گیری ثابت"</string>
+    <string name="fdn" msgid="7878832555095183202">"شماره‌های شماره‌گیری ثابت"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"شماره‌های شماره‌گیری ثابت (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"‏لیست FDN"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"‏لیست FDN (‏<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"‏فهرست FDN"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"‏فهرست FDN (‏<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"‏فعال کردن FDN"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"شماره‌های شماره گیری ثابت فعال هستند"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"شماره‌های شماره گیری ثابت غیر فعال هستند"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"شماره‌های شماره‌گیری ثابت فعال هستند"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"شماره‌های شماره‌گیری ثابت غیرفعال است"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"‏فعال کردن FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"‏غیر فعال کردن FDN"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"تغییر پین 2"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"تغییر پین۲"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"‏غیر فعال کردن FDN"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"‏فعال کردن FDN"</string>
-    <string name="sum_fdn" msgid="1959399454900272878">"مدیریت شماره‌های شماره گیری ثابت"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"مدیریت شماره‌های شماره‌گیری ثابت"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"‏تغییر پین برای دسترسی FDN"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"مدیریت لیست شماره تلفن"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"مدیریت فهرست شماره تلفن"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"حریم خصوصی صوتی"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"فعال کردن حالت رازداری پیشرفته"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"‏حالت TTY"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"‏تنظیم حالت TTY"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"سعی مجدد خودکار"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"فعال کردن حالت سعی مجدد خودکار"</string>
-    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"‏تغییر حالت TTY در طول تماس ویدیویی مجاز نیست"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"‏تغییر حالت TTY در طول تماس ویدئویی مجاز نیست"</string>
     <string name="menu_add" msgid="1882023737425114762">"افزودن مخاطب"</string>
     <string name="menu_edit" msgid="7143003705504672374">"ویرایش مخاطب"</string>
     <string name="menu_delete" msgid="3977150783449642851">"حذف مخاطب"</string>
-    <string name="get_pin2" msgid="8204677063922225311">"تایپ پین 2"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"تماس با مخاطب"</string>
+    <string name="get_pin2" msgid="8204677063922225311">"تایپ پین۲"</string>
     <string name="name" msgid="7329028332786872378">"نام"</string>
     <string name="number" msgid="7905950798349903858">"تعداد"</string>
     <string name="save" msgid="4094274636321939086">"ذخیره"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"در حال حذف شماره شماره گیری ثابت..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"شماره شماره گیری ثابت حذف شد."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"‏FDN به‌روز نشد زیرا یک پین نادرست تایپ کردید."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"‏FDN به‌روزرسانی نشد زیرا شماره نمی‌تواند بیشتر از 20 رقم باشد."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"‏FDN به‌روز نشد. پین 2 اشتباه بود یا شماره تلفن رد شد."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"‏FDN به‌روزرسانی نشد زیرا شماره نمی‌تواند خالی یا بیشتر از 20 رقم باشد."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"‏FDN به‌روز نشد. پین۲ اشتباه بود یا شماره تلفن رد شد."</string>
     <string name="fdn_failed" msgid="540018079008319747">"‏عملیات FDN ناموفق بود."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"در حال خواندن سیم کارت..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"مخاطبی در سیم کارت شما موجود نیست."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"مخاطبی در سیم‌کارت شما نیست."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"انتخاب مخاطبین برای وارد کردن"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"برای وارد کردن مخاطبین از سیم کارت، حالت هواپیما را خاموش کنید."</string>
     <string name="enable_pin" msgid="5422767284133234860">"فعال کردن/غیر فعال کردن پین سیم"</string>
@@ -393,22 +420,22 @@
     <string name="pin_failed" msgid="5644377896213584760">"پین نادرست است"</string>
     <string name="pin_changed" msgid="4455736268023261662">"پین به‌روزرسانی شد"</string>
     <string name="puk_requested" msgid="5921393215789090200">"‏گذرواژه نادرست است. اکنون پین مسدود شده است. PUK درخواست شده است."</string>
-    <string name="enter_pin2_text" msgid="8339444124477720345">"پین 2"</string>
-    <string name="oldPin2Label" msgid="8559146795026261502">"پین 2 قدیمی"</string>
-    <string name="newPin2Label" msgid="4573956902204349054">"پین 2 جدید"</string>
-    <string name="confirmPin2Label" msgid="8100319484454787708">"تأیید پین 2 جدید"</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"پین۲"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"پین۲ قدیمی"</string>
+    <string name="newPin2Label" msgid="4573956902204349054">"پین۲ جدید"</string>
+    <string name="confirmPin2Label" msgid="8100319484454787708">"تأیید پین۲ جدید"</string>
     <string name="badPuk2" msgid="7910064009531541708">"‏PUK2 نادرست است. دوباره امتحان کنید."</string>
-    <string name="badPin2" msgid="6646896629970023109">"‏PIN2 قدیمی نادرست است. دوباره امتحان کنید."</string>
-    <string name="mismatchPin2" msgid="4177967478551851117">"‏دو PIN2 وارد شده مطابقت ندارند. دوباره امتحان کنید."</string>
-    <string name="invalidPin2" msgid="1757045131429105595">"‏یک PIN2 وارد کنید که ۴ تا ۸ رقم دارد."</string>
+    <string name="badPin2" msgid="6646896629970023109">"پین۲ قدیمی نادرست است. دوباره امتحان کنید."</string>
+    <string name="mismatchPin2" msgid="4177967478551851117">"دو پین۲ واردشده مطابقت ندارند. دوباره امتحان کنید."</string>
+    <string name="invalidPin2" msgid="1757045131429105595">"یک پین۲ وارد کنید که ۴ تا ۸ رقم داشته باشد."</string>
     <string name="invalidPuk2" msgid="7059081153334815973">"‏یک PUK2 وارد کنید که ۸ رقم دارد."</string>
-    <string name="pin2_changed" msgid="3724522579945610956">"‏PIN2 به‌روزرسانی شد"</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"پین۲ به‌روزرسانی شد"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"‏کد PUK2 را وارد کنید"</string>
-    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"‏گذرواژه نادرست است. اکنون PIN2 مسدود شده است. برای امتحان مجدد، PIN 2 را تغییر دهید."</string>
+    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"گذرواژه نادرست است. اکنون پین۲ مسدود شده است. برای امتحان مجدد، پین۲ را تغییر دهید."</string>
     <string name="puk2_requested" msgid="5831015200030161434">"‏گذرواژه نادرست است. اکنون سیم‌کارت قفل شده است. PUK2 را وارد کنید."</string>
     <string name="puk2_blocked" msgid="3150263853077280049">"‏PUK2 به صورت دائمی مسدود شده است."</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"<xliff:g id="NUMBER">%d</xliff:g> تلاش باقی‌مانده دارید."</string>
-    <string name="pin2_unblocked" msgid="7791600368153469078">"‏PIN2 دیگر مسدود نیست"</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"پین۲ دیگر مسدود نیست"</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"خطای شبکه یا سیم‌کارت"</string>
     <string name="doneButton" msgid="2859593360997984240">"تمام"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"شماره پست صوتی"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"شماره پست صوتی ناشناس"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"بدون سرویس"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"شبکه انتخابی (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) قابل دسترس نیست"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"برای برقراری تماس، حالت پرواز را خاموش کنید."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"برای برقراری تماس، شبکه تلفن همراه را روشن کنید، حالت هواپیما یا بهینه‌سازی باتری را غیرفعال کنید."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"برای برقراری تماس، حالت پرواز را خاموش کنید."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"برای برقرای تماس، حالت پرواز را خاموش کنید یا به شبکه بی‌سیم وصل شوید."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"برای برقراری تماس غیراضطراری از حالت پاسخ تماس اضطراری خارج شوید."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"در شبکه ثبت نشده است."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"شبکه تلفن همراه در دسترس نیست."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"شبکه همراه در دسترس نیست. برای برقراری تماس به یک شبکه بی‌سیم وصل شوید."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"شبکهٔ تلفن همراه موجود نیست."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"شبکه تلفن همراه دردسترس نیست. برای برقراری تماس به شبکه بی‌سیم متصل شوید."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"برای برقراری تماس، یک شماره معتبر وارد کنید."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"نمی‌توانید تماس بگیرید."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"‏شروع ترتیب MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"تماس ناموفق بود."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"فعلاً نمی‌توانید تماس اضافه کنید."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"سرویس پشتیبانی نمی‌شود"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"نمی‌توانید بین تماس‌ها جابجا شوید."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"نمی‌توانید تماس را جدا کنید."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"تماس‌های کنفرانسی امکان‌پذیر نیست."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"نمی‌توانید تماس را رد کنید."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"نمی‌توانید تماس(ها) را آزاد کنید."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"نگه‌داشتن تماس‌ها ممکن نیست."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"برای برقراری تماس، به یک شبکه بی‌سیم وصل شوید"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"‏برای برقراری تماس، تماس Wi-Fi را فعال کنید."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"تماس اضطراری"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"در حال روشن کردن رادیو..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"سرویسی در دسترس نیست. دوباره امتحان کنید..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"در طول تماس اضطراری نمی‌توانید به حالت هواپیما بروید."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"نمی‌توانید تماس بگیرید. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> یک شماره اضطراری نیست."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"نمی‌ توانید تماس بگیرید. یک شماره اضطراری را شماره‌گیری کنید."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"استفاده از صفحه‌کلید برای شماره گیری"</string>
@@ -459,13 +490,15 @@
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"مدیریت تماس‌ها"</string>
     <string name="onscreenManageConferenceText" msgid="6485935856534311346">"مدیریت کنفرانس"</string>
     <string name="onscreenAudioText" msgid="1710087112800041743">"صوتی"</string>
-    <string name="onscreenVideoCallText" msgid="4800924186056115442">"تماس ویدیویی"</string>
+    <string name="onscreenVideoCallText" msgid="4800924186056115442">"تماس ویدئویی"</string>
     <string name="importSimEntry" msgid="6614358325359736031">"وارد کردن"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"وارد کردن همه"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"وارد کردن مخاطبین سیم"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"وارد کردن از مخاطبین"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"دستگاه‌های کمک شنوایی"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"روشن کردن سازگاری دستگاه کمک شنوایی"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"مخاطب واردشده"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"مخاطب وارد نشد"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"دستگاه‌های کمک‌شنوایی"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"روشن کردن سازگاری دستگاه کمک‌شنوایی"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"‏TTY خاموش"</item>
     <item msgid="3971695875449640648">"‏TTY پر است"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"حالت پاسخ تماس اضطراری وارد شده"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"حال پاسخ تماس اضطراری"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"اتصال داده غیر فعال شد"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">هیچ اتصال داده‌ای برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه موجود نیست</item>
-      <item quantity="other">هیچ اتصال داده‌ای برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه موجود نیست</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"بدون اتصال داده تا <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در حالت تماس اضطراری خواهد بود. در این حالت برنامه‌ای که از اتصال داده استفاده می‌کند، نمی‌تواند استفاده شود. می‌خواهید اکنون خارج شوید؟</item>
       <item quantity="other">تلفن برای <xliff:g id="COUNT_1">%s</xliff:g> دقیقه در حالت تماس اضطراری خواهد بود. در این حالت برنامه‌ای که از اتصال داده استفاده می‌کند، نمی‌تواند استفاده شود. می‌خواهید اکنون خارج شوید؟</item>
@@ -531,23 +561,37 @@
     <string name="selectContact" msgid="781975788478987237">"انتخاب حساب"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"تماس صوتی پشتیبانی نمی‌شود"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"شماره گیری"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"لرزش"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"لرزش"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"پست صوتی تصویری"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"صدا"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"تنظیم پین"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"تغییر پین"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"آهنگ‌ زنگ و لرزش"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"سیم‌کارت‌های داخلی"</string>
-    <string name="enable_video_calling_title" msgid="7237253660669000899">"روشن کردن تماس ویدیویی"</string>
-    <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"‏برای روشن کردن تماس ویدیویی، باید حالت پیشرفته 4G LTE را در تنظیمات شبکه فعال کنید."</string>
+    <string name="enable_video_calling_title" msgid="7237253660669000899">"روشن کردن تماس ویدئویی"</string>
+    <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"‏برای روشن کردن تماس ویدئویی، باید حالت پیشرفته 4G LTE را در تنظیمات شبکه فعال کنید."</string>
     <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"تنظیمات شبکه"</string>
     <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"بستن"</string>
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"تماس‌های اضطراری"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"فقط تماس‌های اضطراری"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"سیم‌کارت، شکاف: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"دسترس‌پذیری"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"‏تماس Wi-Fi ورودی"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"‏تماس Wi-Fi از"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"‏تماس Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"لمس دوباره برای باز کردن"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"دوباره ضربه بزنید تا باز شود"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"هنگام رمزگشایی پیام، خطایی روی داد."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"یک سیم‌کارت سرویس شما را فعال کرده است و قابلیت‌های رومینگ تلفنتان را به‌روز کرده است."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"تعداد زیادی تماس فعال وجود دارد. قبل از برقراری تماس جدید، لطفاً به تماس‌های موجود پایان دهید یا آنها را ادغام کنید."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"مرتبط نشد، لطفاً سیم کارت معتبری را وارد کنید."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"اتصال وای‌فای قطع شد. تماس پایان یافت."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"تغییر پین پست صوتی"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ادامه"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"لغو"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"تأیید"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"تأیید پین قدیمی"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"پین پست صوتی را برای ادامه وارد کنید."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"تنظیم پین جدید"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"پین باید <xliff:g id="MIN">%1$d</xliff:g> تا <xliff:g id="MAX">%2$d</xliff:g> رقم باشد."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"تأیید پین"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"پین‌ها با یکدیگر مطابقت ندارند"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"پین پست صوتی به‌روزرسانی شد"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"پین تنظیم نشد"</string>
 </resources>
diff --git a/res/values-fi/config.xml b/res/values-fi/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-fi/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index f17ed20..e73fdbc 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobiilidata"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Tiedonsiirto"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Puhelinpalvelut"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Hätäpuhelut"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Puhelin"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Puhelinvastaajan numero puuttuu"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-kortille ei ole tallennettu puhelinvastaajan numeroa."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Lisää numero"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Vain ensisijainen käyttäjä voi muuttaa vastaajan asetuksia."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM-korttisi esto on purettu. Puhelimen lukitusta poistetaan..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM-verkko, PIN-koodin lukituksen poisto"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Poista lukitus"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Pyydetään verkon lukituksen poistoa..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Verkon lukituksen poistopyyntö epäonnistui."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Verkon lukituksen poisto onnistui."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Tämä käyttäjä ei saa muuttaa matkapuhelinverkon asetuksia"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiiliverkkoasetukset eivät ole käytettävissä tälle käyttäjälle"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-puheluasetukset"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-puheluasetukset (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-puheluasetukset"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Puheluiden soittaminen:"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP-puheluiden soittaminen:"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Kysy ensin"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Verkkoja ei ole käytettävissä."</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Asetukset"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Valitse tilit"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Puhelintilit"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Vastaaja"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Puhelinvastaaja (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Vast.:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Ilmoitukset"</string>
     <string name="networks" msgid="8873030692174541976">"Verkko-operaattorit"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hätätilalähetykset"</string>
     <string name="call_settings" msgid="6112441768261754562">"Puheluasetukset"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kun en ole tavoitettavissa"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Soita, kun numeroon ei saada yhteyttä:"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Puhelu siirretään numeroon <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Pois käytöstä"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Ei käytössä"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operaattorisi ei tue soitonsiirtojen poistamista käytöstä puhelimesi ollessa saavuttamattomissa."</string>
     <string name="updating_title" msgid="6146755386174019046">"Puheluasetukset"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Vain ensisijainen käyttäjä voi muuttaa puheluasetuksia."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Vain järjestelmänvalvoja voi muuttaa puheluasetuksia."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Asetukset (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Virhe puheluasetuksissa"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Luetaan asetuksia…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Muutoksia ei tehty."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Valitse puhelinvastaajapalvelu"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operaattorisi"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Matkapuhelinverkon asetukset"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vanha PIN-koodi"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Uusi PIN-koodi"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Odota."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Uusi PIN-koodi on liian lyhyt."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Uusi PIN-koodi on liian pitkä."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Uusi PIN-koodi on liian heikko. Vahvassa salasanassa ei saa olla peräkkäisiä tai toistuvia numeroita."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Vanha PIN-koodi ei täsmää."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Uusi PIN-koodi sisältää virheellisiä merkkejä."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN-koodin vaihtaminen epäonnistui."</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Viestin tyyppiä ei tueta. Kuuntele soittamalla numeroon <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobiiliverkkoasetukset"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobiiliverkko"</string>
     <string name="label_available" msgid="1181658289009300430">"Käytettävissä olevat verkot"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Haetaan…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Ei verkkoja."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Rekisteröity verkkoon."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Valitse verkko-operaattori"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Etsi kaikki käytettävissä olevat verkot"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Valitse automaattisesti"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Valitse ensisijainen verkko automaattisesti"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Valitse verkko automaattisesti"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Verkko"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automaattinen rekisteröinti..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Ensisijainen verkko"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Vaihda verkon käyttötilaa"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Vain GSM"</item>
     <item msgid="3817924849415716259">"Ensisijaisesti GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Soitetaan"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Verkko"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE -tila"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Puhelujen lisävaihtoehdot"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Käytä LTE-palveluita puheviestinnän ja muiden viestintätapojen parantamiseen (suositeltu)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Datayhteys käytössä"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Salli tiedonsiirto"</string>
-    <string name="roaming" msgid="8871412572928323707">"Verkkoyhteys roaming-tilassa"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Yhdistä verkkoon roaming-tilassa"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Yhdistä verkkoon roaming-tilassa"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Huomio"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Yhdistä verkkoon roaming-tilassa."</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Yhdistä verkkoon roaming-tilassa."</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Menetit verkkoyhteyden, koska poistuit kotiverkkosi alueelta eikä tiedonsiirron roaming-tila ole käytössä."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Siitä voi aiheutua huomattavia kuluja."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Sallitaanko tiedonsiirto roaming-tilassa?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datan käyttö"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobiilidataa käytetty <xliff:g id="ID_2">%2$s</xliff:g>."</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operaattori"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiilidata"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Käytä dataa mobiiliverkon kautta"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-puhelut"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videopuheluiden operaattori"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS-asetukset"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-asetukset"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datan käyttö"</string>
@@ -222,7 +248,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> enimmäismäärä ylitetty\nTiedonsiirtonopeus vähennetty nopeuteen<xliff:g id="USED_1">%2$d</xliff:g> kt/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ kierrosta valmis\nSeuraava jakso alkaa <xliff:g id="USED_1">%2$d</xliff:g> päivän kuluttua (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Tiedonsiirtonopeus vähennetään nopeuteen <xliff:g id="USED">%1$d</xliff:g> kt/s, jos tiedonkäyttöraja ylitetään"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Lisätietoja operaattorisi mobiilitiedonsiirtokäytännöstä"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Lisätietoja operaattorisi mobiiliverkon tietojenkäyttökäytännöstä"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast -tekstiviesti"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast -tekstiviesti"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cell Broadcast -tekstiviestit käytössä"</string>
@@ -314,7 +340,7 @@
     <string name="network_4G" msgid="2723512640529983138">"4G (suositus)"</string>
     <string name="network_global" msgid="1323190488685355309">"Maailmanlaajuinen"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"Valitse järjestelmä"</string>
-    <string name="cdma_system_select_summary" msgid="60460043745797517">"Vaihda CDMA-roaming-tila"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Vaihda CDMA-roaming-tila."</string>
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Valitse järjestelmä"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="176474317493999285">"Vain kotipuhelin"</item>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Lisää yhteystieto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Muokkaa yhteystietoa"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Poista yhteystieto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Soita yhteystiedolle"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Anna PIN2-koodi"</string>
     <string name="name" msgid="7329028332786872378">"Nimi"</string>
     <string name="number" msgid="7905950798349903858">"Numero"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Poistetaan sallittua numeroa…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Sallittu numero poistettu."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Sallittuja numeroita ei päivitetty, koska annoit väärän PIN-koodin."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Sallittuja numeroita ei päivitetty, sillä numerossa voi olla enintään 20 merkkiä."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Sallittuja numeroita ei päivitetty, sillä numero on tyhjä tai siinä on yli 20 merkkiä."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN-numeroa ei päivitetty. PIN2 on virheellinen tai puhelinnumero hylättiin."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN-toiminto epäonnistui."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Luetaan SIM-korttia…"</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Puhelinvastaajan numero tuntematon"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Katvealueella"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Valittu verkko (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ei käytettävissä."</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Poista lentokonetila käytöstä, jos haluat soittaa puhelun."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Ota mobiiliverkko käyttöön tai poista lentokonetila ja virransäästötila käytöstä, jos haluat soittaa puhelun."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Poista lentokonetila käytöstä, jos haluat soittaa puhelun."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Poista lentokonetila käytöstä tai yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Poistu hätäpuhelujen takaisinsoittotilasta soittaaksesi muun kuin hätäpuhelun."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ei rekisteröity verkkoon."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Matkapuhelinverkko ei ole käytettävissä."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Matkapuhelinverkko ei ole käytettävissä. Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobiiliverkko ei käytettävissä."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobiiliverkko ei ole käytettävissä. Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Soita antamalla kelvollinen numero."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Puhelua ei voi soittaa."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Aloitetaan MMI-koodisekvenssiä..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Puhelu epäonnistui."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Puhelua ei voi lisätä juuri nyt."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Palvelua ei tueta"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Puhelua ei voi vaihtaa."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Puhelua ei voi erottaa."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Puhelujen yhdistäminen epäonnistui."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Puhelua ei voi hylätä."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Puheluja ei voi vapauttaa."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Puhelujen pito ei onnistu."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Ota Wi-Fi-puhelut käyttöön soittaaksesi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hätäpuhelu"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Käynnistetään radiota…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ei yhteyttä. Yritetään uudelleen…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Lentokonetilaa ei voi ottaa käyttöön hätäpuhelun aikana."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Puhelua ei voi soittaa. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ei ole hätänumero."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Puhelua ei voi soittaa. Valitse hätänumero."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Valitse numero näppäimistöstä"</string>
@@ -468,6 +499,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Tuo kaikki"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Tuodaan SIM-kortin yhteystietoja"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Tuo yhteystiedoista"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Tuotu kontakti"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontaktin tuominen epäonnistui"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Kuulolaitteet"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Ota kuulolaitteen yhteensopivuustoiminto käyttöön"</string>
   <string-array name="tty_mode_entries">
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Käytössä hätäpuhelujen takaisinsoittotila"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Hätäpuhelujen takaisinsoittotila"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Verkkoyhteys pois käytöstä"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Ei verkkoyhteyttä <xliff:g id="COUNT_1">%s</xliff:g> minuuttiin</item>
-      <item quantity="one">Ei verkkoyhteyttä <xliff:g id="COUNT_0">%s</xliff:g> minuuttiin</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Datayhteyden voi muodostaa vasta <xliff:g id="COMPLETETIME">%s</xliff:g>."</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Puhelin siirtyy hätäpuhelujen takaisinsoittotilaan <xliff:g id="COUNT_1">%s</xliff:g> minuutin ajaksi. Et voi käyttää verkkoyhteyttä hyödyntäviä sovelluksia tänä aikana. Haluatko poistua nyt?</item>
       <item quantity="one">Puhelin siirtyy hätäpuhelujen takaisinsoittotilaan <xliff:g id="COUNT_0">%s</xliff:g> minuutin ajaksi. Et voi käyttää verkkoyhteyttä hyödyntäviä sovelluksia tänä aikana. Haluatko poistua nyt?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"valitse yhteystieto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Äänipuheluita ei tueta"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"soita"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Värinä"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Värinä"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuaalinen puhelinvastaaja"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ääni"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Aseta PIN-koodi."</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Vaihda PIN-koodi"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Soittoääni ja värinä"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Sisäiset SIM-kortit"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Ota videopuhelut käyttöön"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Vain hätäpuhelut"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kortti, paikka: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Esteettömyys"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Saapuva Wi-Fi-puhelu"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-puhelu henkilöltä"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-puhelu"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Avaa koskettamalla uudelleen."</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Avaa koskettamalla uudelleen."</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Virhe purettaessa viestiä."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kortti on aktivoinut palvelusi ja päivittänyt puhelimesi roaming-toiminnot."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Aktiivisia puheluja on liian monta. Lopeta puheluita tai yhdistä niitä ennen uuden puhelun aloittamista."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Yhdistäminen epäonnistui. Aseta kelvollinen SIM-kortti."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi-yhteys katkesi, ja puhelu lopetettiin."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Vaihda vastaajan PIN-koodi."</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Jatka"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Peruuta"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Vahvista vanha PIN-koodi."</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Jatka antamalla vastaajasi PIN-koodi."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Määritä uusi PIN-koodi."</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-koodin pitää olla <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> merkkiä pitkä."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Vahvista PIN-koodi."</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-koodit eivät täsmää."</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Vastaajan PIN-koodi on päivitetty."</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN-koodin määrittäminen epäonnistui."</string>
 </resources>
diff --git a/res/values-fr-rCA/config.xml b/res/values-fr-rCA/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-fr-rCA/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 873ca61..f1d6bed 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Données cellulaires"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Données mobiles"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Services téléphoniques"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Appels d\'urgence"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Téléphone"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Seul l\'utilisateur principal peut modifier les paramètres de la messagerie vocale."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Votre carte SIM a été déverrouillée. Votre téléphone est en cours de déverrouillage..."</string>
     <string name="label_ndp" msgid="780479633159517250">"NIP de déblocage du réseau SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Déverrouiller"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Demande de déblocage du réseau…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Échec de la demande de déblocage du réseau"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Le réseau a été débloqué."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Les paramètres de réseau cellulaire ne sont pas accessibles pour cet utilisateur"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Les paramètres de réseau cellulaire ne sont pas accessibles pour cet utilisateur"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Paramètres d\'appel GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Paramètres d\'appel GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Paramètres d\'appel CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Faire les appels avec"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Faire les appels SIP avec"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Demander d\'abord"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Aucun réseau disponible"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Paramètres"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Sélectionner des comptes"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes du téléphone"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Messagerie vocale"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Messagerie vocale (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"MV :"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifications"</string>
     <string name="networks" msgid="8873030692174541976">"Opérateur de réseau"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Diffusions d\'urgence"</string>
     <string name="call_settings" msgid="6112441768261754562">"Paramètres d\'appel"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Si injoignable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numéro de renvoi si injoignable"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Transfert vers <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Désactivé"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Désactivé"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Votre opérateur ne permet pas la désactivation du transfert d\'appel lorsque votre téléphone n\'est pas joignable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Paramètres d\'appel"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Seul l\'utilisateur principal peut modifier les paramètres d\'appel."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Seul l\'administrateur peut modifier les paramètres d\'appel."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Paramètres (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Erreur des paramètres d\'appel"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lecture des paramètres..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Aucune modification n\'a été apportée."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choisissez un service de messagerie vocale."</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Votre fournisseur de services"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Paramètres des réseaux cellulaires"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ancien NIP"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nouveau NIP"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Veuillez patienter."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Le nouveau NIP est trop court."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Le nouveau NIP est trop long."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Le nouveau NIP n\'est pas assez robuste. Il ne devrait pas contenir de séquences continues ni de chiffres répétés."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Le NIP saisi ne correspond pas à l\'ancien NIP."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Le nouveau NIP contient des caractères incorrects."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Impossible de modifier le NIP"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Type de message non pris en charge. Composez le <xliff:g id="NUMBER">%s</xliff:g> pour l\'écouter."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Paramètres du réseau mobile"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Réseau cellulaire"</string>
     <string name="label_available" msgid="1181658289009300430">"Réseaux disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Recherche en cours…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Aucun réseau trouvé"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Enregistré sur le réseau"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Sélectionner un opérateur réseau"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Chercher tous les réseaux disponibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Sélectionner automatiquement"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Sélectionner automatiquement le réseau préféré"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Sélectionner automatiquement le réseau"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Réseau"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Enregistrement automatique…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Type de réseau préféré"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Changer le mode de fonctionnement du réseau"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM uniquement"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA de préférence"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Appels"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Réseau"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mode LTE 4G avancé"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Appel avancé"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Utiliser services LTE pour améliorer communications vocales et autres (recommandé)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Données activées"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Autoriser l\'utilisation des données"</string>
-    <string name="roaming" msgid="8871412572928323707">"Itinérance des données"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Attention"</string>
+    <string name="roaming" msgid="7894878421600247140">"Itinérance"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Se connecter aux services de données lors de l\'itinérance"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Se connecter aux services de données lors de l\'itinérance"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Vous avez été déconnecté, car vous avez quitté le réseau domestique et l\'itinérance des données est désactivée."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Des frais importants peuvent s\'appliquer."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Autoriser les données en itinérance?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Utilisation de données"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> de données mobiles utilisées entre <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Opérateur"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Données mobiles"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Accéder aux données sur réseau cellulaire"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Appels Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Appels vidéo par l\'entremise du fournisseur de services"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Options GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Options CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Utilisation des données"</string>
@@ -222,7 +248,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum dépassé\nTaux de transfert des données réduit à <xliff:g id="USED_1">%2$d</xliff:g> Ko/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g> % du cycle écoulé.\nLa prochaine période démarre dans <xliff:g id="USED_1">%2$d</xliff:g> jours (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Taux de transfert des données réduit à <xliff:g id="USED">%1$d</xliff:g> Ko/s si le plafond d\'utilisation est dépassé"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"En savoir plus les politiques de votre fournisseur de services concernant l\'utilisation des données sur son réseau cellulaire"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Plus d\'informations sur les règles de votre opérateur mobile concernant l\'utilisation des données sur son réseau"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Diffusion cellulaire par SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Diffusion cellulaire par SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Option \"Diffusion cellulaire par SMS\" activée"</string>
@@ -341,7 +367,7 @@
     <string name="fdn_activation" msgid="2156479741307463576">"Activation des numéros autorisés"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"La liste de numéros autorisés est activée."</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"La liste des numéros autorisés est désactivée."</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Activer numéros autorisés"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Activer les numéros autorisés"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Désactiver numéros autorisés"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Modifier le NIP2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Désactiver numéros autorisés"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Ajouter un contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Modifier un contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Supprimer le contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Appeler le contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Saisir le NIP2"</string>
     <string name="name" msgid="7329028332786872378">"Nom"</string>
     <string name="number" msgid="7905950798349903858">"Nombre"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Suppression du numéro autorisé…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numéro autorisé supprimé"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Le numéro autorisé n\'a pas été mis à jour, car vous avez saisi un NIP incorrect."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Le numéro autorisé n\'a pas été mis à jour, car il ne doit pas comporter plus de 20 chiffres."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Le NAF n\'a pas été mis à jour, car le numéro est vide ou il comporte plus de 20 chiffres."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Le numéro autorisé n\'a pas été mis à jour. Soit le NIP2 est incorrect, soit le numéro de téléphone a été rejeté."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Échec de l\'opération FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lecture de la carte SIM…"</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numéro de messagerie vocale inconnu"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Aucun service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Réseau sélectionné (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponible"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Désactivez le mode Avion pour faire un appel."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Activez le réseau cellulaire ou désactivez le mode Avion ou le mode Économie d\'énergie pour faire un appel."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Désactivez le mode Avion pour faire un appel."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Désactivez le mode Avion ou connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Quittez le mode de rappel d\'urgence pour effectuer un appel non urgent."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Non enregistré sur le réseau"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Réseau cellulaire non disponible."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Le réseau cellulaire n\'est pas accessible. Connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Réseau pour mobile non disponible"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Le réseau mobile n\'est pas accessible. Connectez-vous à un réseau sans fil pour effectuer un appel."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pour faire un appel, entrez un numéro valide."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Impossible d\'appeler."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Lancement de la séquence IHM..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Échec de l\'appel."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Impossible d\'ajouter l\'appel pour le moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service non pris en charge"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Impossible de faire des appels."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Impossible de séparer les appels."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Impossible d\'effectuer des conférences téléphoniques."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossible de refuser l\'appel."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de libérer l\'appel ou les appels."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossible de mettre les appels en attente."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau Wi-Fi pour faire un appel."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Activez les appels Wi-Fi pour faire un appel."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service. Nouvel essai en cours..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Impossible d\'activer le mode Avion durant un appel d\'urgence."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Appel impossible. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> n\'est pas un numéro d\'urgence."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Appel impossible. Composez un numéro d\'urgence."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilisez le clavier pour composer un numéro."</string>
@@ -468,13 +499,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Tout importer"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importation des contacts SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importer à partir des contacts"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contacts importés"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Impossible d\'importer le contact"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Assistance auditive"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Activer la compatibilité du service d\'assistance auditive"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"Mode TTY désactivé"</item>
+    <item msgid="512950011423868021">"TTY désactivé"</item>
     <item msgid="3971695875449640648">"TTY complet"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
-    <item msgid="5644925873488772224">"Mode TTY VCO"</item>
+    <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"Tonalités DTMF"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"Définir la durée des tonalités DTMF"</string>
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Mode de rappel d\'urgence activé"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de rappel d\'urgence"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexion des données désactivée"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Aucune connexion de données pendant <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
-      <item quantity="other">Aucune connexion de données pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Aucune connexion de données avant <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minute.  Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant?</item>
       <item quantity="other"> Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"sélectionner un contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Appels vocaux non pris en charge"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"composer"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreur"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreur"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Messagerie vocale visuelle"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Son"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Définir le NIP"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Modifier le NIP"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartes SIM intégrées"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activer les appels vidéo"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Appels d\'urgence seulement"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Carte SIM, fente : <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilité"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Appel Wi-Fi entrant"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Appel Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Appel Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Touchez à nouveau pour ouvrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Touchez à nouveau pour ouvrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Une carte SIM a activé votre service et mis à jour les fonctionnalités d\'itinérance de votre téléphone."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Il y a trop d\'appels actifs. Veuillez mettre fin aux appels existants ou les fusionner avant d\'en passer un nouveau."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Échec de la connexion. Veuillez insérer une carte SIM valide."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Connexion Wi-Fi perdue. Appel terminé."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Modifier le NIP de la messagerie vocale"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuer"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Annuler"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirmez votre ancien NIP"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Entrez votre NIP de messagerie vocale pour continuer."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Choisissez un nouveau NIP"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Le NIP doit comporter de <xliff:g id="MIN">%1$d</xliff:g> à <xliff:g id="MAX">%2$d</xliff:g> chiffres."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirmez votre NIP"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Les NIP ne correspondent pas"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"NIP de messagerie vocale mis à jour"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Impossible de définir le NIP"</string>
 </resources>
diff --git a/res/values-fr/config.xml b/res/values-fr/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-fr/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 8cd55d1..172510a 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Données mobiles"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Données mobiles"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Services téléphoniques"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Appels d\'urgence"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Téléphone"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Numéro de messagerie vocale manquant"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Aucun numéro de messagerie vocale n\'est enregistré sur la carte SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Ajouter un numéro"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Seul l\'utilisateur principal de la messagerie vocale peut en modifier les paramètres."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Votre carte SIM a été déverrouillée. Votre téléphone est en cours de déverrouillage..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Code PIN de déblocage du réseau SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Déverrouiller"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Demande de déblocage du réseau…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Échec de la demande de déblocage du réseau."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Le réseau a bien été débloqué."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Les paramètres des réseaux mobiles ne sont pas disponibles pour cet utilisateur."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Les paramètres des réseaux mobiles ne sont pas disponibles pour cet utilisateur."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Paramètres d\'appel GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Paramètres d\'appel GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Paramètres d\'appel CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Passer les appels avec"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Passer les appels SIP avec"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Demander d\'abord"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Aucun réseau disponible"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Paramètres"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Sélectionner des comptes"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Comptes téléphone"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Messagerie vocale"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mess. vocale (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"MV :"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifications"</string>
     <string name="networks" msgid="8873030692174541976">"Opérateurs de réseau"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Messages d\'urgence"</string>
     <string name="call_settings" msgid="6112441768261754562">"Paramètres d\'appel"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Si non joignable"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numéro de renvoi si injoignable"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Transfert vers <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Désactivé"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Désactivé"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Votre opérateur ne permet pas la désactivation du transfert d\'appel lorsque votre téléphone n\'est pas joignable."</string>
     <string name="updating_title" msgid="6146755386174019046">"Paramètres d\'appel"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Seul l\'utilisateur principal peut modifier les paramètres d\'appel."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Seul l\'administrateur peut modifier les paramètres d\'appel."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Paramètres (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Erreur des paramètres d\'appel"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lecture des paramètres..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Aucune modification n\'a été apportée."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Choisissez un service de messagerie vocale."</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Votre opérateur"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Paramètres réseau mobile"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ancien code"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nouveau code"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Veuillez patienter."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Le nouveau code est trop court."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Le nouveau code est trop long."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Le nouveau code n\'est pas suffisamment sécurisé. Pour qu\'un mot de passe soit sûr, il ne doit pas contenir de chiffres qui se suivent ou qui se répètent."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"L\'ancien code est erroné."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Le nouveau code contient des caractères incorrects."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Impossible de modifier le code"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Type de message incompatible, composez le <xliff:g id="NUMBER">%s</xliff:g> pour l\'écouter."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Paramètres du réseau mobile"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Réseau mobile"</string>
     <string name="label_available" msgid="1181658289009300430">"Réseaux disponibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Recherche..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Aucun réseau trouvé."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Enregistré sur le réseau."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Sélectionner un opérateur réseau"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Chercher tous les réseaux disponibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Sélectionner automatiquement"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Sélectionner automatiquement le réseau préféré"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Sélectionner automatiquement le réseau"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Réseau"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Enregistrement automatique…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Type de réseau préféré"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Changer le mode de fonctionnement du réseau"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM uniquement"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA de préférence"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Appels"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Réseau"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mode LTE 4G avancé"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Appel avancé"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Utiliser services LTE pour améliorer communications vocales et autres (recommandé)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Données activées"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Autoriser la consommation des données"</string>
-    <string name="roaming" msgid="8871412572928323707">"Itinérance des données"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Avertissement"</string>
+    <string name="roaming" msgid="7894878421600247140">"Itinérance"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Se connecter aux services de données lors de l\'itinérance"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Se connecter aux services de données lors de l\'itinérance"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Vous avez été déconnecté, car vous avez quitté le réseau domestique et l\'itinérance des données est désactivée."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Des frais importants peuvent s\'appliquer."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Autoriser l\'itinérance des données ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Consommation des données"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> de données mobiles utilisées pendant la période suivante : <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Opérateur"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Données mobiles"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Accéder aux données via le réseau mobile"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Appels Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Appels vidéo via l\'opérateur"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Options GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Options CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Consommation des données"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum dépassé\nTaux de transfert des données réduit à <xliff:g id="USED_1">%2$d</xliff:g> Ko/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g> ٪ du cycle écoulé\nLa prochaine période démarre dans <xliff:g id="USED_1">%2$d</xliff:g> jours (<xliff:g id="USED_2">%3$s</xliff:g>)."</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Taux de transfert des données réduit à <xliff:g id="USED">%1$d</xliff:g> Ko/s si le plafond d\'utilisation est dépassé"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Plus d\'informations sur les règles de votre opérateur mobile concernant l\'utilisation des données sur son réseau"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Plus d\'informations sur les règles de votre opérateur mobile concernant l\'utilisation des données sur son réseau"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Diffusion cellulaire par SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Option \"Diffusion cellulaire par SMS\" activée"</string>
@@ -337,11 +363,11 @@
     <string name="fdn_activation" msgid="2156479741307463576">"Activation des numéros autorisés"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"La liste de numéros autorisés est activée."</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"Liste de numéros autorisés désactivée"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Activer numéros autorisés"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Activer les numéros autorisés"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Désactiver numéros autorisés"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Modifier le code PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Désactiver numéros autorisés"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activer"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activer les numéros autorisés"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Gérer la liste de numéros autorisés"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Modifier le code PIN pour l\'accès aux numéros autorisés"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Gérer la liste des numéros de téléphone"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Ajouter un contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Modifier le contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Supprimer le contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Appeler le contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Saisir le code PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nom"</string>
     <string name="number" msgid="7905950798349903858">"Numéro"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Suppression du numéro autorisé…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numéro autorisé supprimé"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Le numéro autorisé n\'a pas été mis à jour, car vous avez saisi un code PIN incorrect."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Le numéro autorisé n\'a pas été mis à jour, car il ne doit pas comporter plus de 20 chiffres."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Le numéro autorisé n\'a pas été mis à jour, car il n\'a pas été renseigné ou comporte plus de 20 chiffres."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Le numéro autorisé n\'a pas été mis à jour. Soit le code PIN2 est incorrect, soit le numéro de téléphone a été rejeté."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Échec de l\'opération liée aux numéros autorisés."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lecture de la carte SIM…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numéro de messagerie vocale inconnu"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Aucun service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Réseau sélectionné (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponible"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Désactivez le mode Avion pour passer un appel."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Pour passer un appel, activez le réseau mobile, et désactivez les modes Avion et Économiseur de batterie."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Désactivez le mode Avion pour passer un appel."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Désactivez le mode Avion ou connectez-vous à un réseau sans fil pour passer un appel."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Veuillez quitter le mode de rappel d\'urgence pour passer un appel standard."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Non enregistré sur le réseau."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Réseau mobile non disponible."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Le réseau mobile n\'est pas disponible. Connectez-vous à un réseau sans fil pour passer un appel."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Réseau mobile non disponible"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Le réseau mobile n\'est pas disponible. Connectez-vous à un réseau sans fil pour passer un appel."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pour émettre un appel, veuillez saisir un numéro valide."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Impossible d\'émettre l\'appel."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Lancement de la séquence IHM..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Échec de l\'appel."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Impossible d\'ajouter un appel pour le moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service incompatible"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Impossible de changer d\'appel."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Impossible d\'isoler l\'appel."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Impossible d\'effectuer des conférences téléphoniques."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossible de refuser l\'appel."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossible de lancer les appels."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossible de mettre les appels en attente."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connectez-vous à un réseau sans fil pour passer un appel."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Pour passer un appel, veuillez activer les appels Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Appel d\'urgence"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activation du signal radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aucun service disponible. Nouvelle tentative en cours…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Vous ne pouvez pas activer le mode Avion au cours d\'un appel d\'urgence."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Impossible d\'émettre l\'appel. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> n\'est pas un numéro d\'urgence."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Impossible d\'émettre l\'appel. Veuillez composer un numéro d\'urgence."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilisez le clavier pour composer un numéro."</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Tout importer"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importation des contacts SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importer à partir des contacts"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contact importé"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Échec de l\'importation du contact."</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Assistance auditive"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Activer la compatibilité du service d\'assistance auditive"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Activer la compatibilité avec les prothèses auditives"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"Mode TTY désactivé"</item>
     <item msgid="3971695875449640648">"TTY complet"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Mode de rappel d\'urgence activé"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode de rappel d\'urgence"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connexion des données désactivée"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Aucune connexion à Internet pendant <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
-      <item quantity="other">Aucune connexion à Internet pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Aucune connexion Internet mobile jusqu\'à <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minute. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant ?</item>
       <item quantity="other">Le téléphone sera en mode de rappel d\'urgence pendant <xliff:g id="COUNT_1">%s</xliff:g> minutes. Lorsque ce mode est activé, vous ne pouvez pas utiliser d\'applications nécessitant une connexion à Internet. Voulez-vous quitter l\'écran maintenant ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"sélectionner un contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Appels vocaux non pris en charge"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"composer"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibreur"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibreur"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Messagerie vocale visuelle"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sonnerie"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Définir un code"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Modifier le code"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Sonnerie et vibreur"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartes SIM intégrées"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activer les appels vidéo"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Appels d\'urgence seulement"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Carte SIM, emplacement : <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilité"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Appel Wi-Fi entrant"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Appel Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Appel Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Appuyer à nouveau pour ouvrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Appuyez à nouveau pour ouvrir."</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Une erreur s\'est produite lors du décodage du message."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Votre service a été activé et les fonctionnalités d\'itinérance de votre téléphone ont été mises à jour via une carte SIM."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Il y a trop d\'appels actifs. Pour passer un autre appel, vous devez mettre fin aux appels existants ou fusionner ces derniers."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Connexion impossible. Veuillez insérer une carte SIM valide."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Connexion Wi-Fi perdue. L\'appel a été interrompu."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Modifier le code de la boîte vocale"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuer"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Annuler"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirmer votre ancien code"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Pour continuer, saisissez le code de votre boîte vocale."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Définir un nouveau code"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Le code ne peut être composé que de chiffres de <xliff:g id="MIN">%1$d</xliff:g> à <xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirmer votre code"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Les codes ne correspondent pas."</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Le code de votre boîte vocale a été mis à jour."</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Impossible de définir le code"</string>
 </resources>
diff --git a/res/values-gl-rES/arrays.xml b/res/values-gl/arrays.xml
similarity index 100%
rename from res/values-gl-rES/arrays.xml
rename to res/values-gl/arrays.xml
diff --git a/res/values-gl/config.xml b/res/values-gl/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-gl/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl/strings.xml
similarity index 85%
rename from res/values-gl-rES/strings.xml
rename to res/values-gl/strings.xml
index 843bdf6..204cfd0 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Datos móbiles"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Datos móbiles"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Servizos de telefonía"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Marcador de emerxencia"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Teléfono"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Lista de FDN"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Lista de NMF"</string>
     <string name="unknown" msgid="6878797917991465859">"Descoñecido"</string>
     <string name="private_num" msgid="6713286113000232309">"Número privado"</string>
     <string name="payphone" msgid="4793877574636445118">"Teléfono público"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Falta o número de correo de voz"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Non hai ningún número de correo de voz almacenado na tarxeta SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Engadir número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"O usuario principal é o único que pode modificar a configuración do correo de voz."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Desbloqueouse a tarxeta SIM. O teléfono estase desbloqueando..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN de desbloqueo da rede SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloquear"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando desbloqueo da rede..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Solicitude de desbloqueo da rede realizado correctamente."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueo da rede realizado correctamente."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"A configuración de rede móbil non está dispoñible para este usuario"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"A configuración de rede móbil non está dispoñible para este usuario"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Configuración de chamadas GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Configuración da chamada de GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configuración de chamadas CDMA"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Configuración da chamada de CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"Nomes do punto de acceso"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Nomes dos puntos de acceso"</string>
     <string name="settings_label" msgid="3876743539816984008">"Configuración de rede"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Contas de chamadas"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Facer chamadas con"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Facer chamadas SIP con"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Preguntar primeiro"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Non hai ningunha rede dispoñible"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Configuración"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Seleccionar contas"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas do teléfono"</string>
@@ -75,8 +77,9 @@
     <string name="voicemail" msgid="8693759337917898954">"Correo de voz"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correo de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"CV:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificacións"</string>
     <string name="networks" msgid="8873030692174541976">"Operadores de rede"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Emisións de emerxencia"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Difusións de emerxencia"</string>
     <string name="call_settings" msgid="6112441768261754562">"Configuración de chamada"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Configuración adicional"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Configuración adicional (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -92,8 +95,8 @@
     <string name="labelCW" msgid="6120513814915920200">"Chamada en espera"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Durante unha chamada, avisarme das chamadas entrantes"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Durante unha chamada, avisarme das chamadas entrantes"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Configuración de desvío de chamadas"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Configuración de desvío de chamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Config. desvío de chamadas"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Config. desvío de chamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Desvío de chamadas"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Desviar sempre"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Utilizar sempre este número"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Cando non se poida contactar"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número cando non se pode contactar"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Desvío ao <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desactivado"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desactivado"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"O teu operador non admite a desactivación do desvío de chamadas cando non se pode acceder ao teléfono."</string>
     <string name="updating_title" msgid="6146755386174019046">"Configuración de chamada"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Só o usuario principal pode cambiar a configuración de chamada."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Só o usuario administrador pode cambiar a configuración de chamada."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Configuración (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Erro de configuración das chamadas"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lendo a configuración..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Non se fixeron cambios."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Escolle o servizo de correo de voz"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"O teu operador"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Configuración da rede móbil"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN novo"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Agarda."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O PIN novo é demasiado curto."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O PIN novo é demasiado longo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é pouco seguro. Para que sexa seguro, non debe conter secuencias continuas nin díxitos repetidos."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"O PIN antigo non coincide."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"O novo PIN contén caracteres non válidos."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Non se puido cambiar o PIN."</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipo de mensaxe non compatible. Chama ao <xliff:g id="NUMBER">%s</xliff:g> para escoitala."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Configuración de rede móbil"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rede de telefonía móbil"</string>
     <string name="label_available" msgid="1181658289009300430">"Redes dispoñibles"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Buscando..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Non se atopou ningunha rede."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Rexistrado na rede"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Escolle un operador de rede"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Busca todas as redes dispoñibles"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Seleccionar automaticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Escolle automaticamente a rede preferida"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Seleccionar rede automaticamente"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rede"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Rexistro automático..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de rede preferido"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Cambiar o modo de funcionamento da rede"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Só GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferido"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Chamando"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rede"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modo LTE 4G mellorado"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Chamadas avanzadas"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Usa os servizos LTE para mellorar a comunicación por voz e outras (recomendado)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Datos activados"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir o uso de datos"</string>
-    <string name="roaming" msgid="8871412572928323707">"Itinerancia de datos"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Conecta cos servizos de datos durante a itinerancia"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Conecta cos servizos de datos durante a itinerancia"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atención"</string>
+    <string name="roaming" msgid="7894878421600247140">"Itinerancia"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Conéctase aos servizos de datos durante a itinerancia"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Conéctase aos servizos de datos durante a itinerancia"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Perdiches a conectividade de datos debido a que abandonaches a túa rede doméstica coa itinerancia de datos desactivada."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"É posible que se apliquen custos elevados."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Permitir a itinerancia de datos?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Uso de datos"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Datos móbiles usados no período do <xliff:g id="ID_2">%2$s</xliff:g>: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operador"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Datos móbiles"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Acceder aos datos cunha rede móbil"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Chamadas por wifi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videochamadas do operador"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opcións de GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opcións de CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Uso de datos"</string>
@@ -215,10 +241,10 @@
     <string name="throttle_help" msgid="243651091785169900">"Máis información"</string>
     <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) de <xliff:g id="USED_2">%3$s</xliff:g> de período máximo\nO seguinte período comeza dentro de <xliff:g id="USED_3">%4$d</xliff:g> días (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) de <xliff:g id="USED_2">%3$s</xliff:g> de período máximo"</string>
-    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> máximo superado\nTaxa de datos reducida a <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> máximo superado\nTaxa de datos reducida a <xliff:g id="USED_1">%2$d</xliff:g> kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ do ciclo transcorrido\nO seguinte período comeza dentro de <xliff:g id="USED_1">%2$d</xliff:g> días (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
-    <string name="throttle_rate_subtext" msgid="2149102656120726855">"A velocidade de datos redúcese a <xliff:g id="USED">%1$d</xliff:g> Kb/s se se supera o límite de uso de datos"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Máis información sobre a política de uso de datos da rede móbil do teu operador"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"A velocidade de datos redúcese a <xliff:g id="USED">%1$d</xliff:g> kb/s se se supera o límite de uso de datos"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Máis información sobre a política de uso de datos da rede móbil do teu operador"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS de difusión móbil"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS de difusión móbil"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS de difusión móbil activado"</string>
@@ -332,18 +358,18 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"Configuración do operador"</string>
     <string name="fdn" msgid="7878832555095183202">"Números de marcación fixa"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Números de marcación fixa (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"Lista de FDN"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"Activación de FDN"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Lista de NMF"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista de NMF (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"Activación de NMF"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Os números de marcación fixa están activados"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"Os números de marcación fixa están desactivados"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Activar FDN"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"Desactivar FDN"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Activar NMF"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Desactivar NMF"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Cambiar PIN2"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"Desactivar FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activar FDN"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Desactivar NMF"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activar NMF"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Xestionar números de marcación fixa"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Cambiar PIN para o acceso a FDN"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Cambiar PIN para o acceso aos NMF"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Xestionar lista de números de teléfono"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Privacidade da voz"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Activar modo de privacidade mellorado"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Engadir contacto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Marcar número dun contacto"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Escribe o PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nome"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -368,10 +395,10 @@
     <string name="delete_fdn_contact" msgid="6668958073074151717">"Eliminar número de marcación fixa"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Eliminando número de marcación fixa..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Eliminouse o número de marcación fixa."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"Non se actualizou FDN porque escribiches un PIN incorrecto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN non se actualizou porque o número non pode superar os 20 díxitos."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Non se actualizou FDN. O PIN2 era incorrecto ou rexeitouse o número de teléfono."</string>
-    <string name="fdn_failed" msgid="540018079008319747">"Produciuse un fallo no funcionamento de FDN."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"Non se actualizaron os NMF porque escribiches un PIN incorrecto."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"O NMF non se actualizou porque está baleiro ou supera os 20 díxitos."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Non se actualizaron os NMF. O PIN2 era incorrecto ou rexeitouse o número de teléfono."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"Produciuse un fallo no funcionamento dos NMF."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lendo da tarxeta SIM..."</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"Non hai contactos na tarxeta SIM."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Seleccionar contactos para importar"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número de correo de voz descoñecido"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sen servizo"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rede seleccionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non dispoñible"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Desactiva o modo avión para facer unha chamada."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Para facer unha chamada, activa a rede de telefonía móbil, desactiva o modo avión ou desactiva o modo Aforro de batería."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Desactiva o modo avión para facer unha chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desactiva o modo avión ou conéctate a unha rede sen fíos para facer unha chamada."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Sae do modo de devolución de chamada de emerxencia para facer unha chamada que non sexa de emerxencia."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Sen rexistro na rede"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rece móbil non dispoñible."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede móbil non está dispoñible. Conéctate a unha rede sen fíos para facer unha chamada."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"A rede móbil non está dispoñible."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"A rede móbil non está dispoñible. Conéctate a unha rede sen fíos para facer unha chamada."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar unha chamada, introduce un número válido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Non se pode chamar."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando secuencia MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Produciuse un erro na chamada."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Non se pode engadir a chamada neste momento."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Servizo non compatible"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Non se poden cambiar as chamadas."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Non se pode separar a chamada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Non se poden efectuar conferencias."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Non se pode rexeitar a chamada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Non se poden desconectar as chamadas."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Non se poden poñer as chamadas en espera."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conéctate a unha rede sen fíos para facer unha chamada."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Activa as chamadas por wifi para facer unha chamada."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emerxencia"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Activando radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sen servizo. Tentando de novo…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Non se pode activar o modo avión durante unha chamada de emerxencia."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Non se pode chamar. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> non é un número de emerxencia."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Non se pode chamar. Marcar un número de emerxencia."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utiliza o teclado para chamar"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importar todo"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importando contactos da SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar dos contactos"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Importouse o contacto"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Produciuse un erro ao importar o contacto"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Audiófonos"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Activar a compatibilidade con audiófonos"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Accedeuse ao modo de devolución de chamadas de emerxencia"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de devolución de chamadas de emerxencia"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexión de datos desactivada"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Non houbo conexión de datos durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-      <item quantity="one">Non houbo conexión de datos durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Sen conexión de datos ata: <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">O teléfono estará no modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Mentres se atope neste modo, non se poderá usar ningunha aplicación que utilice unha conexión de datos. Queres saír agora?</item>
       <item quantity="one">O teléfono estará no modo de devolución de chamada de emerxencia durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Mentres se atope neste modo, non se poderá usar ningunha aplicación que utilice unha conexión de datos. Queres saír agora?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"seleccionar contacto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Chamadas de voz non compatibles"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"marcar"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correo de voz visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Son"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Establecer PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambiar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de chamada e vibración"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Tarxetas SIM integradas"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activar videochamadas"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Só chamadas de emerxencia"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Tarxeta SIM, rañura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilidade"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada wifi entrante"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Chamada por wifi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada wifi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toca outra vez para abrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Toca de novo para abrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Produciuse un erro durante a descodificación da mensaxe."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"A tarxeta SIM activou o teu servizo e actualizou as funcións de itinerancia do teléfono."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hai moitas chamadas activas. Finaliza as chamadas existentes ou combínaas antes de facer unha nova."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Non se pode conectar. Insire unha tarxeta SIM válida."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Finalizouse a chamada porque se perdeu a conexión wifi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Cambiar PIN do correo de voz"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuar"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancelar"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Aceptar"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirma o teu PIN anterior"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Escribe o PIN do teu correo de voz para continuar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Establece un PIN novo"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"O PIN debe conter entre <xliff:g id="MIN">%1$d</xliff:g> e <xliff:g id="MAX">%2$d</xliff:g> díxitos."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirma o teu PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Os PIN non coinciden"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Actualizouse o PIN do correo de voz"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Non se puido establecer o PIN"</string>
 </resources>
diff --git a/res/values-gu-rIN/arrays.xml b/res/values-gu/arrays.xml
similarity index 100%
rename from res/values-gu-rIN/arrays.xml
rename to res/values-gu/arrays.xml
diff --git a/res/values-gu/config.xml b/res/values-gu/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-gu/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu/strings.xml
similarity index 86%
rename from res/values-gu-rIN/strings.xml
rename to res/values-gu/strings.xml
index f2ed5da..7a175b7 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"સેલ્યુલર ડેટા"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"મોબાઇલ ડેટા"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ફોન સેવાઓ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"કટોકટીનું ડાયલર"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ફોન"</string>
@@ -31,7 +31,7 @@
     <string name="cancel" msgid="5044513931633602634">"રદ કરો"</string>
     <string name="enter_input" msgid="1810529547726803893">"USSD સંદેશ <xliff:g id="MIN_LEN">%d</xliff:g> અને <xliff:g id="MAX_LEN">%d</xliff:g> વર્ણ વચ્ચેનો હોવો આવશ્યક છે. કૃપા કરીને ફરી પ્રયાસ કરો."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"કોન્ફરન્સ કૉલ સંચાલિત કરો"</string>
-    <string name="ok" msgid="3811371167865772377">"ઑકે"</string>
+    <string name="ok" msgid="3811371167865772377">"ઓકે"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"સ્પીકર્સ"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"હેન્ડસેટ ઇઅરપીસ"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"વાયર્ડ હેડસેટ"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"વૉઇસમેઇલ નંબર ખૂટે છે"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM કાર્ડ પર કોઈ વૉઇસમેઇલ નંબર સંગ્રહિત નથી."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"નંબર ઉમેરો"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"વૉઇસમેઇલ સેટિંગ્સને ફક્ત પ્રાથમિક વપરાશકર્તા દ્વારા જ સંશોધિત કરી શકાય છે."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"તમારા SIM કાર્ડને અનાવરોધિત કરવામાં આવ્યું છે. તમારા ફોનને અનલૉક કરી રહ્યાં છે…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM નેટવર્ક અનલૉક PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"અનલૉક કરો"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"નેટવર્ક અનલૉકની વિનંતી કરી રહ્યાં છે…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"નેટવર્ક અનલૉક વિનંતી અસફળ."</string>
     <string name="unlock_success" msgid="6770085622238180152">"નેટવર્ક અનલૉક સફળ."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"સેલ્યુલર નેટવર્ક સેટિંગ્સ આ વપરાશકર્તા માટે ઉપલબ્ધ નથી"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"મોબાઇલ નેટવર્ક સેટિંગ્સ આ વપરાશકર્તા માટે ઉપલબ્ધ નથી"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM કૉલ સેટિંગ્સ"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM કૉલ સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA કૉલ સેટિંગ્સ"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"આના વડે કૉલ કરો"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"આના વડે SIP કૉલ્સ કરો"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"પહેલાં પૂછો"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"કોઇ નેટવર્ક ઉપલબ્ધ નથી"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"સેટિંગ્સ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"એકાઉન્ટ્સ પસંદ કરો"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ફોન એકાઉન્ટ્સ"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"વૉઇસમેઇલ"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"વૉઇસમેઇલ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"સૂચનાઓ"</string>
     <string name="networks" msgid="8873030692174541976">"નેટવર્ક ઓપરેટર્સ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"કટોકટીના બ્રોડકાસ્ટ્સ"</string>
     <string name="call_settings" msgid="6112441768261754562">"કૉલ સેટિંગ્સ"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"જ્યારે પહોંચયોગ્ય ન હોય ત્યારે"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"જ્યારે પહોંચયોગ્ય ન હોય તે સમય માટેનો નંબર"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> પર ફોરવર્ડ કરી રહ્યાં છે"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"અક્ષમ કરેલું"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"બંધ"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"જ્યારે તમારો ફોન પહોંચયોગ્ય ન હોય ત્યારે તમારા કેરિઅર કૉલ ફોરવર્ડિંગને અક્ષમ કરવાને સમર્થન આપતા નથી."</string>
     <string name="updating_title" msgid="6146755386174019046">"કૉલ સેટિંગ્સ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"કૉલ સેટિંગ્સને ફક્ત પ્રાથમિક વપરાશકર્તા દ્વારા જ બદલી શકાય છે."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"કૉલ સેટિંગ્સને ફક્ત એડમિન વપરાશકર્તા દ્વારા જ બદલી શકાય છે."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"કૉલ સેટિંગ્સની ભૂલ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"સેટિંગ્સ વાંચી રહ્યાં છે…"</string>
@@ -130,7 +133,7 @@
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS વિનંતીને નવી SS વિનંતી પર સંશોધિત કરી."</string>
     <string name="fdn_check_failure" msgid="18200614306525434">"તમારી ફોન એપ્લિકેશનની ફિક્સ્ડ ડાયલિંગ નંબર્સ સેટિંગ ચાલુ છે. પરિણામ રૂપે, કેટલીક કૉલ સંબંધિત સુવિધાઓ કાર્ય કરતી નથી."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"આ સેટિંગ્સ જોતા પહેલાં રેડિઓ ચાલુ કરો."</string>
-    <string name="close_dialog" msgid="2365884406356986917">"ઑકે"</string>
+    <string name="close_dialog" msgid="2365884406356986917">"ઓકે"</string>
     <string name="enable" msgid="7248657275000173526">"ચાલુ કરો"</string>
     <string name="disable" msgid="4678348128118573672">"બંધ કરો"</string>
     <string name="change_num" msgid="239476305819844391">"અપડેટ"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"કોઇ બદલાવો થયાં ન હતાં."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"વૉઇસમેઇલ સેવા પસંદ કરો"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"તમારો કેરિઅર"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"સેલ્યુલર નેટવર્ક સેટિંગ્સ"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"જૂનો PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"નવો PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"કૃપા કરીને રાહ જુઓ."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"નવો PIN ખૂબ ટૂંકો છે."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"નવો PIN ખૂબ લાંબો છે."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"નવો PIN ખૂબ નબળો છે. સશક્ત પાસવર્ડ સતત ક્રમ અથવા પુનરાવર્તિત અંકો ધરાવતો હોવો જોઇએ નહીં."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"જૂનો PIN મેળ ખાતો નથી."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"નવો PIN અમાન્ય અક્ષરો ધરાવે છે."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN બદલવામાં અસમર્થ"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"અસમર્થિત સંદેશ પ્રકાર, સાંભળવા માટે <xliff:g id="NUMBER">%s</xliff:g> પર કૉલ કરો."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"મોબાઇલ નેટવર્ક સેટિંગ્સ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"મોબાઇલ નેટવર્ક"</string>
     <string name="label_available" msgid="1181658289009300430">"ઉપલબ્ધ નેટવર્ક્સ"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"શોધી રહ્યું છે..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"કોઈ નેટવર્ક મળ્યું નથી."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"નેટવર્ક પર નોંધણી કરી."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"એક નેટવર્ક ઓપરેટર પસંદ કરો"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"બધા ઉપલબ્ધ નેટવર્ક્સ માટે શોધો"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"આપમેળે પસંદ કરો"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"પસંદગીનું નેટવર્ક આપમેળે શોધો"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"નેટવર્ક આપમેળે પસંદ કરો"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"નેટવર્ક"</string>
     <string name="register_automatically" msgid="6017849844573519637">"સ્વયંચાલિત નોંધણી…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"પસંદગીનો નેટવર્ક પ્રકાર"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"નેટવર્ક ઓપરેટિંગ મોડ બદલો"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"ફક્ત GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA પસંદ કરેલ છે"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"કૉલિંગ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"નેટવર્ક"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"વિસ્તૃત 4G LTE મોડ"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"વિગતવાર કૉલિંગ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"વૉઇસ અને અન્ય સંચારોને બહેતર બનાવવા માટે LTE સેવાઓનો ઉપયોગ કરો (ભલામણ કરેલ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ડેટા સક્ષમ કરેલ છે"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ડેટા વપરાશની મંજૂરી આપો"</string>
-    <string name="roaming" msgid="8871412572928323707">"ડેટા રોમિંગ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ધ્યાન આપો"</string>
+    <string name="roaming" msgid="7894878421600247140">"રોમિંગ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"તમે ડેટા કનેક્ટિવિટી ગુમાવી છે કારણ કે તમે તમારા હોમ નેટવર્કને બંધ ડેટા રોમિંગ સાથે છોડ્યું છે."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"તમારાથી આંશિક શુલ્ક લઈ શકાય છે."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ડેટા રોમિંગને મંજૂરી આપીએ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ડેટા વપરાશ"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> ની વચ્ચે <xliff:g id="ID_1">%1$s</xliff:g> મોબાઇલ ડેટાનો વપરાશ કરવામાં આવ્યો"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"કૅરિઅર"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"મોબાઇલ ડેટા"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"મોબાઇલ નેટવર્કનો વપરાશ કરીને ડેટા ઍક્સેસ કરો"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi કૉલિંગ"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"કેરિયર વિડિઓ કૉલિંગ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS વિકલ્પો"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA વિકલ્પો"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ડેટા વપરાશ"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> મહત્તમ વટાવી દીધું\nડેટા રેટ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s સુધી ઘટાડાશે"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ચક્ર વીતાવ્યું\nઆગલી અવધિ <xliff:g id="USED_1">%2$d</xliff:g> દિવસમાં પ્રારંભ થાય છે (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"જો ડેટા સીમા વટાવવામાં આવે તો ડેટા રેટ <xliff:g id="USED">%1$d</xliff:g> Kb/s સુધી ઘટાડવામાં આવે છે"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"તમારા કેરિઅરની સેલ્યુલર નેટવર્ક ડેટા ઉપયોગ નીતિ વિશે વધુ માહિતી"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"તમારા કેરિઅરની મોબાઇલ નેટવર્ક ડેટા ઉપયોગ નીતિ વિશે વધુ માહિતી"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"સેલ બ્રોડકાસ્ટ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"સેલ બ્રોડકાસ્ટ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"સેલ બ્રોડકાસ્ટ SMS સક્ષમ કરેલ છે"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"સંપર્ક ઉમેરો"</string>
     <string name="menu_edit" msgid="7143003705504672374">"સંપર્ક સંપાદિત કરો"</string>
     <string name="menu_delete" msgid="3977150783449642851">"સંપર્ક કાઢી નાંખો"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"સંપર્ક ડાયલ કરો"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 લખો"</string>
     <string name="name" msgid="7329028332786872378">"નામ"</string>
     <string name="number" msgid="7905950798349903858">"નંબર"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ફિક્સ્ડ ડાયલિંગ નંબર કાઢી રહ્યાં છે..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ફિક્સ્ડ ડાયલિંગ નંબર કાઢી નાખ્યો."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN અપડેટ થયો ન હતો કારણ કે તમે ખોટો PIN લખ્યો છે."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN અપડેટ કર્યો ન હતો, કારાણ કે નંબર 20 અંકને વટાવતો નથી."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN અપડેટ કર્યો ન હતો કારણ કે નંબર ખાલી છે અથવા તો તે 20 અંકને ઓળંગે છે."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN અપડેટ થયો ન હતો. PIN2 ખોટો હતો અથવા ફોન નંબર નકારેલ હતો."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ઓપરેશન નિષ્ફળ થયું."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM કાર્ડમાંથી વાંચી રહ્યાં છે…"</string>
@@ -415,7 +442,7 @@
     <string name="card_title_dialing" msgid="5769417478498348054">"ડાયલ કરી રહ્યાં છે"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"ફરી ડાયલ કરી રહ્યાં છે"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"કોન્ફરન્સ કૉલ"</string>
-    <string name="card_title_incoming_call" msgid="7364539451234646909">"આવનાર કૉલ"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"ઇનકમિંગ કૉલ"</string>
     <string name="card_title_call_ended" msgid="5544730338889702298">"કૉલ સમાપ્ત થયો"</string>
     <string name="card_title_on_hold" msgid="821463117892339942">"હોલ્ડ પર"</string>
     <string name="card_title_hanging_up" msgid="3999101620995182450">"સમાપ્ત કરી રહ્યાં છે"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"વૉઇસમેઇલ નંબર અજાણ"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"કોઈ સેવા નથી"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"પસંદ કરેલ નેટવર્ક (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) અનુપલબ્ધ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"કૉલ કરવા માટે મોબાઇલ નેટવર્ક ચાલુ કરો, એરપ્લેન મોડ બંધ કરો અથવા બૅટરી બચતકર્તા મોડ બંધ કરો."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"કૉલ કરવા માટે એરપ્લેન મોડ બંધ કરો અથવા વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"બિન-કટોકટીનો કૉલ કરવા માટે કટોકટી કૉલબૅક મોડમાંથી બહાર નીકળો."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"નેટવર્ક પર નોંધણી કરાયેલ નથી."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"સેલ્યુલર નેટવર્ક ઉપલબ્ધ નથી. કૉલ કરવા માટે વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી. કૉલ કરવા માટે વાયરલેસ નેટવર્ક સાથે કનેક્ટ કરો."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"કૉલ કરી શકાતો નથી."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI અનુક્રમ પ્રારંભ કરી રહ્યાં છે…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"કૉલ નિષ્ફળ થયો."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"આ સમયે કૉલ ઉમેરી શકાતો નથી."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"સેવા સમર્થિત નથી"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"કૉલ્સ સ્વિચ કરી શકાતા નથી."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"અલગ કૉલ કરી શકાતો નથી."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"કોન્ફરન્સ કૉલ કરવામાં અસમર્થ."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"કૉલ નકારી શકાતો નથી."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"કૉલ(લ્સ) રિલીઝ કરી શકતા નથી."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"કૉલ્સને હોલ્ડ કરી શકતાં નથી."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"કૉલ કરવા માટે વાયરલેસ નેટવર્કથી કનેક્ટ કરો."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"કૉલ કરવા માટે Wi-Fi કૉલિંગ સક્ષમ કરો."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"કટોકટીનો કૉલ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"રેડિઓ ચાલુ કરી રહ્યાં છે…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"કોઈ સેવા નથી. ફરી પ્રયાસ કરી રહ્યાં છે…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"કટોકટીના કૉલ દરમિયાન એરપ્લેન મોડમાં દાખલ થઈ શકતાં નથી."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"કૉલ કરી શકાતો નથી. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> એ કટોકટીનો નંબર નથી."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"કૉલ કરી શકાતો નથી. કટોકટીનો નંબર ડાયલ કરો!"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ડાયલ કરવા માટે કીબોર્ડનો ઉપયોગ કરો"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"બધુ આયાત કરો"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM સંપર્કો આયાત કરી રહ્યાં છે"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"સંપર્કોમાંથી આયાત કરો"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"સાંભળવામાં સહાયો"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"સાંભળવું અને સુસંગતતા ચાલુ કરો"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"સંપર્ક આયાત કર્યો"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"સંપર્ક આયાત કરવામાં નિષ્ફળ થયાં"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"સાંભળવામાં સહાયતા"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"સાંભળવામાં સહાયતા સુસંગતતા ચાલુ કરો"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY બંધ"</item>
     <item msgid="3971695875449640648">"TTY સંપૂર્ણ"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"કટોકટી કૉલબેક મોડમાં દાખલ કર્યો"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"કટોકટી કૉલબેક મોડ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ડેટા કનેક્શન અક્ષમ કરેલ છે"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> મિનિટ માટે કોઈ ડેટા કનેક્શન નથી</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> મિનિટ માટે કોઈ ડેટા કનેક્શન નથી</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> સુધી કોઈ ડેટા કનેક્શન નથી"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી કટોકટી કૉલબેક મોડમાં રહેશે. આ મોડમાં હોય ત્યારે ડેટા કનેક્શનનો ઉપયોગ કરતી કોઈપણ એપ્લિકેશન્સનો ઉપયોગ થઈ શકશે નહીં. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
       <item quantity="other">ફોન <xliff:g id="COUNT_1">%s</xliff:g> મિનિટ સુધી કટોકટી કૉલબેક મોડમાં રહેશે. આ મોડમાં હોય ત્યારે ડેટા કનેક્શનનો ઉપયોગ કરતી કોઈપણ એપ્લિકેશન્સનો ઉપયોગ થઈ શકશે નહીં. શું તમે હમણાં બહાર નીકળવા માગો છો?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"સંપર્ક પસંદ કરો"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"વૉઇસ કૉલિંગ સમર્થિત નથી"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ડાયલ કરો"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"વાઇબ્રેટ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"વાઇબ્રેટ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"વિઝ્યુઅલ વૉઇસમેઇલ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ધ્વનિ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN સેટ કરો"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN બદલો"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"રિંગટોન અને વાઇબ્રેટ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"બિલ્ટ-ઇન SIM કાર્ડ્સ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"વિડિઓ કૉલિંગ ચાલુ કરો"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ફક્ત કટોકટીની કૉલિંગ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM કાર્ડ, સ્લોટ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ઍક્સેસિબિલિટી"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"આવનાર Wi-Fi કૉલ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"આમના તરફથી Wi-Fi કૉલ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi કૉલ"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ખોલવા માટે ફરી ટચ કરો"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ખોલવા માટે ફરીથી ટૅપ કરો"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"સંદેશ ડીકોડિંગ કરતી વખતે ભૂલ આવી હતી."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"એક SIM કાર્ડ એ તમારી સેવા સક્રિય કરી છે અને તમારા ફોનની રોમિંગ ક્ષમતાઓને અપડેટ કરી છે."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"અહીં ઘણા બધા સક્રિય કૉલ્સ છે. કૃપા કરીને એક નવો કૉલ કરવા પહેલાં અસ્તિત્વમાંના કૉલ્સને સમાપ્ત કરો અથવા મર્જ કરો."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"કનેક્ટ કરવામાં અસમર્થ, કૃપા કરીને એક માન્ય SIM કાર્ડ દાખલ કરો."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi કનેક્શન ગુમાવ્યું. કૉલ સમાપ્ત થયો."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"વૉઇસમેઇલ PIN બદલો"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ચાલુ રાખો"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"રદ કરો"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ઓકે"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"તમારા જૂના PIN ની પુષ્ટિ કરો"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ચાલુ રાખવા માટે તમારો વૉઇસમેઇલ PIN દાખલ કરો."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"એક નવો PIN સેટ કરો"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> અંકનો હોવો આવશ્યક છે."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"તમારા PIN ની પુષ્ટિ કરો"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN મેળ ખાતા નથી"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"વૉઇસમેઇલ PIN અપડેટ કર્યો"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN સેટ કરવામાં અસમર્થ"</string>
 </resources>
diff --git a/res/values-hi/config.xml b/res/values-hi/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-hi/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index cb219b9..a6a2546 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"सेल्युलर डेटा"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"मोबाइल डेटा"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"फ़ोन सेवाएं"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"आपातकालीन डायलर"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"फ़ोन"</string>
@@ -43,8 +43,9 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"नहीं"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"वाइल्ड वर्ण को इससे बदलें:"</string>
     <string name="no_vm_number" msgid="4164780423805688336">"गुम वॉयस मेल नंबर"</string>
-    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्ड पर कोई वॉयस मेल नंबर संग्रहीत नहीं है."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्ड पर कोई वॉयस मेल नंबर संग्रहित नहीं है."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"नंबर जोड़ें"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"वॉइसमेल सेटिंग को केवल प्राथमिक उपयोगकर्ता ही बदल सकता है."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"आपका सिम कार्ड अनब्लॉक कर दिया गया है. आपका फ़ोन अनलॉक किया जा रहा है..."</string>
     <string name="label_ndp" msgid="780479633159517250">"सिम नेटवर्क अनलॉक पिन"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"अनब्लॉक करें"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"नेटवर्क अनलॉक के लिए अनुरोध कर रहा है..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"नेटवर्क अनलॉक अनुरोध असफल."</string>
     <string name="unlock_success" msgid="6770085622238180152">"नेटवर्क अनलॉक सफल रहा."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"सेल्युलर नेटवर्क सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"मोबाइल नेटवर्क सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM कॉल सेटिंग"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM कॉल सेटिंग (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA कॉल सेटिंग"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"इससे कॉल करें"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"इससे SIP कॉल करें"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"पहले पूछें"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"कोई नेटवर्क उपलब्ध नहीं"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"सेटिंग"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"खाते चुनें"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"फ़ोन खाते"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"वॉयस मेल"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"वॉइसमेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"नोटिफ़िकेशन"</string>
     <string name="networks" msgid="8873030692174541976">"नेटवर्क ऑपरेटर"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"आपातकालीन प्रसारण"</string>
     <string name="call_settings" msgid="6112441768261754562">"कॉल सेटिंग"</string>
@@ -90,8 +93,8 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"आउटगोइंग कॉल में प्रदर्शित किया गया नंबर"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"आउटगोइंग कॉल में मेरा नंबर दिखाने के लिए सामान्य ऑपरेटर सेटिंग का उपयोग करें"</string>
     <string name="labelCW" msgid="6120513814915920200">"कॉल प्रतीक्षा"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफिकेशन दें"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफिकेशन दें"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफ़िकेशन दें"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"कॉल के दौरान, मुझे इनकमिंग कॉल की नोटिफ़िकेशन दें"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"कॉल आगे भेजने की सेटिंग"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"कॉल आगे भेजने की सेटिंग (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"कॉल आगे भेजना"</string>
@@ -106,7 +109,7 @@
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"बंद"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"जब आपका फ़ोन व्यस्त हो, तो आपका ऑपरेटर कॉल अग्रेषण अक्षम करने का समर्थन नहीं करता."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"उत्‍तर न मिलने पर"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"उत्तर न मिलने पर"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"अनुत्तरित होने पर नंबर"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"बंद"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"पहुंच से बाहर होने पर"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"पहुंच योग्य न होने पर नंबर"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"अक्षम की गई"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"बंद"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"जब आपका फ़ोन पहुंच योग्य न हो, तो आपका कैरियर कॉल अग्रेषण अक्षम करने का समर्थन नहीं करता."</string>
     <string name="updating_title" msgid="6146755386174019046">"कॉल सेटिंग"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"कॉल सेटिंग केवल प्राथमिक उपयोगकर्ता द्वारा ही बदली जा सकती हैं."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"कॉल सेटिंग केवल व्यवस्थापक उपयोगकर्ता द्वारा ही बदली जा सकती हैं."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"सेटिंग (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"कॉल सेटिंग त्रुटि"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"कॉल सेटिंग गड़बड़ी"</string>
     <string name="reading_settings" msgid="1920291699287055284">"सेटिंग पढ़ रहा है..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"सेटिंग के लिए नई जानकारी मिल रही है..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"सेटिंग वापस ला रहा है..."</string>
     <string name="response_error" msgid="6674110501330139405">"नेटवर्क से अनपेक्षित प्रतिसाद."</string>
-    <string name="exception_error" msgid="7027667130619518211">"नेटवर्क या सिम कार्ड त्रुटि."</string>
+    <string name="exception_error" msgid="7027667130619518211">"नेटवर्क या सिम कार्ड गड़बड़ी."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS अनुरोध को DIAL अनुरोध में बदल दिया गया है."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS अनुरोध को USSD अनुरोध में बदल दिया गया है."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS अनुरोध को नए SS अनुरोध में बदल दिया गया है."</string>
@@ -146,20 +149,31 @@
     <string name="no_change" msgid="3186040086622435212">"कोई परिवर्तन नहीं किए गए."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"वॉयस मेल सेवा चुनें"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"आपका वाहक"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"सेल्युलर नेटवर्क सेटिंग"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"पुराना पिन"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नया पिन"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"कृपया प्रतीक्षा करें."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नया पिन बहुत छोटा है."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नया पिन बहुत बड़ा है."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नया पिन बहुत कमज़ोर है. किसी सशक्त पासवर्ड में निरंतर क्रम या अंकों का दोहराव नहीं होना चाहिए."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"पुराने पिन का मिलान नहीं हो रहा है."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"नए पिन में अमान्य वर्ण शामिल हैं."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"पिन बदलने में असमर्थ"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"असमर्थित संदेश प्रकार, सुनने के लिए <xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"मोबाइल नेटवर्क सेटिंग"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"मोबाइल नेटवर्क"</string>
     <string name="label_available" msgid="1181658289009300430">"उपलब्ध नेटवर्क"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"खोज रहा है..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"कोई नेटवर्क नहीं मिला."</string>
     <string name="search_networks" msgid="1601136049300882441">"नेटवर्क खोजें"</string>
-    <string name="network_query_error" msgid="6828516148953325006">"नेटवर्क खोज के दौरान त्रुटि."</string>
+    <string name="network_query_error" msgid="6828516148953325006">"नेटवर्क खोज के दौरान गड़बड़ी."</string>
     <string name="register_on_network" msgid="9055203954040805084">"<xliff:g id="NETWORK">%s</xliff:g> पर पंजीकरण कर रहा है…"</string>
     <string name="not_allowed" msgid="5613353860205691579">"आपका सिम कार्ड इस नेटवर्क पर कनेक्शन की अनुमति नहीं देता है."</string>
     <string name="connect_later" msgid="2308119155752343975">"अभी इस नेटवर्क से कनेक्ट नहीं कर सकते. बाद में पुन: प्रयास करें."</string>
     <string name="registration_done" msgid="495135664535876612">"नेटवर्क पर पंजीकृत."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"कोई नेटवर्क ऑपरेटर चुनें"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"सभी उपलब्ध नेटवर्क खोजें"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"अपने आप चुनें"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"पसंदीदा नेटवर्क अपने आप चुनें"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"अपने आप नेटवर्क चुनें"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"नेटवर्क"</string>
     <string name="register_automatically" msgid="6017849844573519637">"स्वचालित पंजीकरण..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"पसंदीदा नेटवर्क प्रकार"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"नेटवर्क संचालन मोड बदलें"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"केवल GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA पसंदीदा"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"कॉलिंग"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"नेटवर्क"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"उन्नत 4G LTE मोड"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"उन्नत कॉलिंग"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ध्‍वनि और अन्‍य संचारों को बेहतर बनाने हेतु LTE सेवाओं का उपयोग करें (अनुशंसित)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"डेटा सक्षम किया गया"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"डेटा उपयोग करने दें"</string>
-    <string name="roaming" msgid="8871412572928323707">"रोमिंग डेटा"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ध्यान दें"</string>
+    <string name="roaming" msgid="7894878421600247140">"रोमिंग"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"आपकी डेटा कनेक्टिविटी खो गई है क्योंकि आप डेटा रोमिंग बंद करके अपने होम नेटवर्क से बाहर आ गए हैं."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"आपको बहुत अधिक शुल्‍क देना पड़ सकता है."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिंग की अनुमति दें?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"डेटा उपयोग"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> के बीच <xliff:g id="ID_1">%1$s</xliff:g> मोबाइल डेटा का उपयोग किया गया"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"वाहक"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"मोबाइल डेटा"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"मोबाइल नेटवर्क का उपयोग करके डेटा एक्सेस करें"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"वाई-फ़ाई कॉलिंग"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"वाहक वीडियो कॉलिंग"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS विकल्प"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA विकल्प"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"डेटा उपयोग"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> अधिकतम सीमा पार हो गई\nडेटा दर <xliff:g id="USED_1">%2$d</xliff:g> Kb/s तक कम हो गई है"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"चक्र का <xliff:g id="USED_0">%1$d</xliff:g>٪ बीत चुका है\nअगली अवधि <xliff:g id="USED_1">%2$d</xliff:g> दिन में आरंभ होगी (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"यदि डेटा उपयोग की सीमा पार होती है, तो डेटा दर <xliff:g id="USED">%1$d</xliff:g> Kb/s तक कम हो जाती है."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"आपके वाहक की सेल्युलर नेटवर्क डेटा उपयोग नीति के बारे में अधिक जानकारी"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"आपके कैरियर की मोबाइल नेटवर्क डेटा उपयोग नीति के बारे में अधिक जानकारी"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"सेल प्रसारण SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"सेल प्रसारण SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"सेल प्रसारण SMS सक्षम किया गया"</string>
@@ -345,8 +371,8 @@
     <string name="sum_fdn" msgid="1959399454900272878">"फ़िक्स्ड डायलिंग नंबर प्रबंधित करें"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN पहुंच के लिए पिन बदलें"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"फ़ोन नंबर सूची प्रबंधित करें"</string>
-    <string name="voice_privacy" msgid="3776841382844614716">"ध्वनि गोपनीयता"</string>
-    <string name="voice_privacy_summary" msgid="3159383389833516214">"उन्नत गोपनीयता मोड सक्षम करें"</string>
+    <string name="voice_privacy" msgid="3776841382844614716">"ध्वनि निजता"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"उन्नत निजता मोड सक्षम करें"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY मोड"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY मोड सेट करें"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"स्वतः पुन: प्रयास"</string>
@@ -355,10 +381,11 @@
     <string name="menu_add" msgid="1882023737425114762">"संपर्क जोड़ें"</string>
     <string name="menu_edit" msgid="7143003705504672374">"संपर्क संपादित करें"</string>
     <string name="menu_delete" msgid="3977150783449642851">"संपर्क हटाएं"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"संपर्क डायल करें"</string>
     <string name="get_pin2" msgid="8204677063922225311">"पिन2 लिखें"</string>
     <string name="name" msgid="7329028332786872378">"नाम"</string>
     <string name="number" msgid="7905950798349903858">"नंबर"</string>
-    <string name="save" msgid="4094274636321939086">"जोड़ें"</string>
+    <string name="save" msgid="4094274636321939086">"सहेजें"</string>
     <string name="add_fdn_contact" msgid="2481915899633353976">"फ़िक्स्ड डायलिंग नंबर जोड़ें"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"फ़िक्स्ड डायलिंग नंबर जोड़ रहा है..."</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"फ़िक्स्ड डायलिंग नंबर जोड़ा गया."</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"फ़िक्स्ड डायलिंग नंबर हटा रहा है..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"फ़िक्स्ड डायलिंग नंबर हटाया गया."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN पे नई जानकारी नहीं है क्योंकि आपने गलत पिन लिखा है."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN पे नई जानकारी नहीं है क्योंकि नंबर में 20 से अधिक अंक नहीं हो सकते."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN अपडेट नहीं हुआ क्योंकि संख्या खाली है या उसमें 20 से ज़्यादा अंक हैं."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN पे नई जानकारी नहीं है. PIN2 गलत था, या फ़ोन नंबर अस्वीकृत था."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN की कार्यवाही विफल रही."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"सिम कार्ड से पढ़ रहा है…"</string>
@@ -409,10 +436,10 @@
     <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 स्थायी रूप से अवरोधित है."</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"आपके पास <xliff:g id="NUMBER">%d</xliff:g> प्रयास शेष हैं."</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 अब अवरोधित नहीं है"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"नेटवर्क या SIM कार्ड त्रुटि"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"नेटवर्क या SIM कार्ड गड़बड़ी"</string>
     <string name="doneButton" msgid="2859593360997984240">"पूर्ण"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"ध्‍वनिमेल नबंर"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"डायल कर रहा है"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"वॉइसमेल नबंर"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"डायल हो रहा है"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"पुन: डायल हो रहा है"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"कॉन्फ़्रेंस कॉल"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"इनकमिंग कॉल"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"वॉयस मेल नंबर अज्ञात"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"कोई सेवा नहीं"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"चयनित नेटवर्क (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) अनुपलब्ध"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"कॉल करने के लिए मोबाइल नेटवर्क चालू करें, हवाई जहाज़ मोड या बैटरी सेवर मोड बंद करें."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"कॉल करने के लिए हवाई जहाज़ मोड बंद करें या किसी वायरलेस नेटवर्क से कनेक्‍ट करें."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"गैर-आपातकालीन कॉल करने के लिए आपातकालीन कॉलबैक मोड से बाहर निकलें."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्क पर पंजीकृत नहीं."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"सेल्युलर नेटवर्क उपलब्ध नहीं."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेल्‍युलर नेटवर्क उपलब्‍ध नहीं है. कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्‍ट करें."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"मोबाइल नेटवर्क उपलब्ध नहीं."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"मोबाइल नेटवर्क उपलब्‍ध नहीं है. कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्‍ट करें."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"कॉल करने के लिए, मान्‍य नंबर डालें."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"कॉल नहीं किया जा सकता."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI अनुक्रम प्रारंभ हो रहा है…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"कॉल विफल."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"इस समय कॉल नहीं जोड़ा जा सकता."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"सेवा समर्थित नहीं है"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"कॉल स्‍विच नहीं किए जा सकते."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"कॉल अलग नहीं किया जा सकता."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"कॉंन्फ़्रेंस कॉल करने में असमर्थ."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कॉल अस्‍वीकार नहीं किया जा सकता."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीज़ नहीं किया जा सकता (किए जा सकते)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कॉल होल्ड नहीं किए जा सकते."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्‍ट करें."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"कॉल करने के लिए वाई-फ़ाई कॉलिंग सक्षम करें."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपातकालीन कॉल"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो चालू कर रहा है..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कोई सेवा नहीं. पुन: प्रयास किया जा रहा है…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"आपातकालीन कॉल के दौरान हवाई जहाज़ मोड चालू नहीं किया जा सकता."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"कॉल नहीं किया जा सकता. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> एक आपातकालीन नंबर नहीं है."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"कॉल नहीं किया जा सकता. आपातकालीन नबर डायल करें."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"डायल करने के लिए कीबोर्ड का उपयोग करें"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"सभी आयात करें"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"सिम संपर्क आयात कर रहा है"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"संपर्कों से आयात करें"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"संपर्क आयात किया गया"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"संपर्क आयात करने में विफल"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"श्रवण सहायक साधन"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"श्रवण सहायक साधन संगतता चालू करें"</string>
   <string-array name="tty_mode_entries">
@@ -479,7 +512,7 @@
     <item msgid="2883365539347850535">"लंबा"</item>
   </string-array>
     <string name="network_info_message" msgid="7738596060242881930">"नेटवर्क संदेश"</string>
-    <string name="network_error_message" msgid="3394780436230411413">"त्रुटि संदेश"</string>
+    <string name="network_error_message" msgid="3394780436230411413">"गड़बड़ी संदेश"</string>
     <string name="ota_title_activate" msgid="8616918561356194398">"अपना फ़ोन सक्रिय करें"</string>
     <string name="ota_touch_activate" msgid="6553212803262586244">"आपकी फ़ोन सेवा को सक्रिय करने के लिए एक विशेष कॉल करने की आवश्यकता है. \n\n\"सक्रिय करें\" दबाने के बाद, अपने फ़ोन को सक्रिय करने के लिए दिए जाने वाले निर्देश सुनें."</string>
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"सक्रिय हो रहा है..."</string>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"आपातकालीन कॉलबैक मोड में प्रविष्ट हुए"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आपातकालीन कॉलबैक मोड"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा कनेक्शन अक्षम किया गया"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> मिनट तक कोई डेटा कनेक्‍शन नहीं</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> मिनट तक कोई डेटा कनेक्‍शन नहीं</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> तक कोई डेटा कनेक्शन नहीं"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक आपातकालीन कॉलबैक मोड में रहेगा. इस मोड में रहने पर डेटा कनेक्‍शन का उपयोग करने वाले किसी भी ऐप्‍लिकेशन का उपयोग नहीं किया जा सकता. क्‍या आप अभी बाहर निकलना चाहते हैं?</item>
       <item quantity="other">फ़ोन <xliff:g id="COUNT_1">%s</xliff:g> मिनट तक आपातकालीन कॉलबैक मोड में रहेगा. इस मोड में रहने पर डेटा कनेक्‍शन का उपयोग करने वाले किसी भी ऐप्‍लिकेशन का उपयोग नहीं किया जा सकता. क्‍या आप अभी बाहर निकलना चाहते हैं?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"संपर्क को चुनें"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ध्वनि कॉल करना समर्थित नहीं है"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"डायल करें"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"कंपन करें"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"कंपन करें"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"विज़ुअल वॉइसमेल"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ध्वनि"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"पिन सेट करें"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"पिन बदलें"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन और कंपन"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"अंतर्निहित सिम कार्ड"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"वीडियो कॉलिंग चालू करें"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"केवल आपातकालीन कॉल"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"सिम कार्ड, स्‍लॉट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"सरल उपयोग"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"इनकमिंग वाई-फ़ाई कॉल"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"इससे वाई-फ़ाई कॉल"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"वाई-फ़ाई कॉल"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"खोलने के लिए पुन: स्पर्श करें"</string>
-    <string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करते समय कोई त्रुटि हुई थी."</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"खोलने के लिए पुन: टैप करें"</string>
+    <string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करते समय कोई गड़बड़ी हुई थी."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"सिम कार्ड द्वारा आपकी सेवा को सक्रिय किया गया है और आपके फ़ोन की रोमिंग क्षमताओं को अपडेट किया गया है."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"बहुत अधिक कॉल सक्रिय हैं. नया कॉल करने से पहले कृपया मौजूदा कॉल समाप्त करें या उन्हें मिला दें."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"कनेक्ट नहीं हो पा रहा है, कृपया कोई मान्य SIM कार्ड डालें."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"वाई-फ़ाई कनेक्शन चला गया. कॉल समाप्त हो गया."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"वॉइसमेल पिन बदलें"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"जारी रखें"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"अभी नहीं"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ठीक है"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"अपने पुराने पिन की पुष्टि करें"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"जारी रखने के लिए अपना वॉइसमेल पिन डालें."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"एक नया पिन सेट करें"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"पिन में <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> अंक होने चाहिए."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"अपने पिन की पुष्टि करें"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"पिन का मिलान नहीं हो रहा"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"वॉइसमेल पिन अपडेट किया गया"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"पिन सेट कर पाने में असमर्थ"</string>
 </resources>
diff --git a/res/values-hr/config.xml b/res/values-hr/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-hr/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 5dc9e91..d684995 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobilni podaci"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilni podaci"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonske usluge"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Birač hitnih poziva"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Popis FDN-a"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Popis FDN brojeva"</string>
     <string name="unknown" msgid="6878797917991465859">"Nepoznato"</string>
     <string name="private_num" msgid="6713286113000232309">"Privatni broj"</string>
     <string name="payphone" msgid="4793877574636445118">"Javna telefonska govornica"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nedostaje broj govorne pošte"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM kartici nije spremljen broj govorne pošte."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj broj"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Postavke govorne pošte može izmijeniti samo primarni korisnik."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Vaša je SIM kartica odblokirana. Telefon se odblokira…"</string>
     <string name="label_ndp" msgid="780479633159517250">"Mrežni PIN za otključavanje SIM-a"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Otključaj"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Traženje mrežnog otključavanja..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Neuspješan zahtjev za otključavanje mreže."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Mrežno otključavanje bilo je uspješno."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Postavke mobilne mreže nisu dostupne za tog korisnika"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Postavke mobilne mreže nisu dostupne za tog korisnika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Postavke GSM poziva"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Postavke GSM poziva (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Postavke CDMA poziva"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Nazovite putem računa"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Uputite SIP poziv putem računa"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Najprije pitaj"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nema dostupne mreže"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Postavke"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Odaberite račune"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonski računi"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Govorna pošta"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Govorna pošta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Obavijesti"</string>
     <string name="networks" msgid="8873030692174541976">"Mrežni operateri"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Hitna emitiranja"</string>
     <string name="call_settings" msgid="6112441768261754562">"Postavke poziva"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kad je broj nedostupan"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Broj u slučaju nedostupnosti"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Preusmjeravanje na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Onemogućeno"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Isključeno"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Vaš mobilni operater ne podržava onemogućavanje preusmjeravanja poziva ako je vaš telefon nedostupan."</string>
     <string name="updating_title" msgid="6146755386174019046">"Postavke poziva"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Postavke može mijenjati samo primarni korisnik."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Postavke poziva može mijenjati samo korisnik koji je administrator."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Postavke (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Pogreška postavki poziva"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Čitanje postavki..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nisu izvršene nikakve promjene."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Odaberite uslugu govorne pošte"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Vaš mobilni operater"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Postavke mobilne mreže"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stari PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novi PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Pričekajte."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Novi PIN je prekratak."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Novi PIN je predugačak."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Novi je PIN preslab. Jaka zaporka ne smije sadržavati kontinuirani niz ili ponovljene znamenke."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Stari se PIN ne podudara."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Novi PIN sadrži nevažeće znakove."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN se ne može promijeniti"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Vrsta poruke nije podržana, nazovite <xliff:g id="NUMBER">%s</xliff:g> da biste je poslušali."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Postavke mobilne mreže"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilna mreža"</string>
     <string name="label_available" msgid="1181658289009300430">"Dostupne mreže"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Pretraživanje…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nije pronađena mreža."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrirano na mreži."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Odaberite mrežnog operatera"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Pretraži sve dostupne mreže"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Odaberi automatski"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatski odabir željene mreže"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatski odaberi mrežu"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Mreža"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatska prijava…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Željena vrsta mreže"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Promijenite način rada mreže"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Samo GSM"</item>
     <item msgid="3817924849415716259">"Preferirano GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Pozivanje"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Mreža"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Poboljšan 4G LTE način"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Napredno pozivanje"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Upotreba LTE usluga za poboljšanje glasovne i drugih komunikacija (preporučeno)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Podaci su omogućeni"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Dopusti upotrebu podataka"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming podataka"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Pažnja"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Poveži se s podatkovnim uslugama u roamingu"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Poveži se s podatkovnim uslugama u roamingu"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Izgubili ste podatkovnu vezu jer ste izašli iz matične mreže s isključenim roamingom podataka."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"To se može skupo naplaćivati."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Želite li dopustiti roaming podataka?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Potrošnja podataka"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Potrošeno je <xliff:g id="ID_1">%1$s</xliff:g> mobilnih podataka u sljedećem razdoblju: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Davatelj usluge"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobilni podaci"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Pristupanje podacima pomoću mobilne mreže"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi pozivi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videopozivanje putem mobilnog operatera"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opcije za GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA opcije"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Korištenje podataka"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maksimum je prekoračen\nBrzina prijenosa podataka smanjena je na <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Proteklo je <xliff:g id="USED_0">%1$d</xliff:g>٪ ciklusa\nSljedeće razdoblje počinje za ovoliko dana: <xliff:g id="USED_1">%2$d</xliff:g> (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Brzina prijenosa podatak smanjena je na <xliff:g id="USED">%1$d</xliff:g> Kb/s ako se prekorači ograničenje korištenja podataka"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Više informacija o pravilima upotrebe mobilne podatkovne mreže vašeg davatelja mobilne usluge"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Više informacija o pravilima korištenja mobilne podatkovne mreže vašeg davatelja mobilne usluge"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS iz mobilne mreže"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS iz mobilne mreže"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Omogućen je SMS iz mobilne mreže"</string>
@@ -332,7 +358,7 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"Postavke mobil. operatera"</string>
     <string name="fdn" msgid="7878832555095183202">"Brojevi za fiksno biranje"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Fiksno biranje (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"Popis FDN-a"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Popis FDN brojeva"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN popis (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Aktivacija FDN-a"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Brojevi za fiksno biranje su omogućeni"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Uredi kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Izbriši kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Pozivanje kontakta"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Upišite PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Ime"</string>
     <string name="number" msgid="7905950798349903858">"Broj"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Brisanje broja za fiksno biranje…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Izbrisan je broj za fiksno biranje."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN nije ažuriran jer ste upisali pogrešan PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN nije ažuriran jer broj ne može premašivati 20 znamenki."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN nije ažuriran jer je broj prazan ili premašuje 20 znamenki."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN nije ažuriran. PIN2 nije točan ili je telefonski broj odbijen."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operacija FDN nije uspjela."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Čitanje sa SIM kartice…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nepoznat je broj govorne pošte"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nema usluge"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Odabrana mreža (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) je onemogućena"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Isključite način rada u zrakoplovu da biste uputili poziv."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Uključite mobilnu mrežu, isključite način rada u zrakoplovu ili štednju baterije da biste uputili poziv."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Isključite način rada u zrakoplovu da biste uputili poziv."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Isključite način rada u zrakoplovu ili se povežite s bežičnom mrežom da biste uputili poziv."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Isključite način hitnih poziva da biste uputili poziv koji nije hitan."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nije registrirano na mreži."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilna mreža nije dostupna."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilna mreža nije dostupna. Povežite se s bežičnom mrežom da biste uputili poziv."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilna mreža nije dostupna."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilna mreža nije dostupna. Povežite se s bežičnom mrežom da biste uputili poziv."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Unesite važeći broj da biste uspostavili poziv."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Pozivanje nije moguće."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Pokretanje MMI sekvence…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Poziv nije uspio."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Poziv trenutačno nije moguć."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Usluga nije podržana"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Prebacivanje poziva nije moguće."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Odvajanje poziva nije moguće."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nije moguće uspostaviti konferencijske pozive."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Odbijanje poziva nije moguće."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prekidanje poziva nije moguće."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Pozivi se ne mogu stavljati na čekanje."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se s bežičnom mrežom da biste uputili poziv."</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitan poziv"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Omogućite pozivanje putem Wi-Fi veze da biste uspostavili poziv."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Hitni poziv"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Uključivanje radija…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nema usluge. Pokušavamo ponovo…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Nije moguće uključiti način rada u zrakoplovu tijekom hitnog poziva."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Pozivanje nije moguće. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nije broj hitne službe."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Pozivanje nije moguće. Nazovite broj hitne službe."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Birajte pomoću tipkovnice"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Uvezi sve"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Uvoz SIM kontakata"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Uvezi iz kontakata"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Uvezeni kontakt"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Uvoz kontakta nije uspio"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Pomoć za osobe oštećenog sluha"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Uključi kompatibilnost za pomoć osobama oštećenog sluha"</string>
   <string-array name="tty_mode_entries">
@@ -504,11 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Unijet je način hitnog povratnog poziva"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Način hitnog povratnog poziva"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Onemogućena je podatkovna mreža"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minutu</item>
-      <item quantity="few">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
-      <item quantity="other">Podatkovne veze neće biti <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Nema podatkovne veze do <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Telefon će biti u načinu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minutu. U tom se načinu ne mogu upotrebljavati aplikacije koje upotrebljavaju podatkovnu vezu. Želite li odmah zatvoriti taj način?</item>
       <item quantity="few">Telefon će biti u načinu hitnog povratnog poziva <xliff:g id="COUNT_1">%s</xliff:g> minute. U tom se načinu ne mogu upotrebljavati aplikacije koje upotrebljavaju podatkovnu vezu. Želite li odmah zatvoriti taj način?</item>
@@ -534,10 +563,9 @@
     <string name="selectContact" msgid="781975788478987237">"odabir kontakta"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Glasovni pozivi nisu podržani"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"biraj"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibracija"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibracija"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizualna govorna pošta"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Postavljanje PIN-a"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Promjena PIN-a"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Melodija zvona i vibracija"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ugrađene SIM kartice"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Uključivanje videopoziva"</string>
@@ -548,9 +576,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo hitni pozivi"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kartica, utor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pristupačnost"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Dolazni Wi-Fi poziv"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi poziv s broja"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi poziv"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Dodirnite ponovo da biste otvorili"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Dodirnite opet za otvaranje"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Došlo je do pogreške prilikom dekodiranja poruke."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartica aktivirala je vašu uslugu i ažurirala mogućnosti telefona za roaming."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Postoji previše aktivnih poziva. Prekinite ili spojite postojeće pozive prije uspostavljanja novog poziva."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Povezivanje nije moguće, umetnite važeću SIM karticu."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi veza je prekinuta. Poziv je završen."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Promjena PIN-a govorne pošte"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Nastavi"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Odustani"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"U redu"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potvrda starog PIN-a"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Da biste nastavili, unesite PIN za govornu poštu."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Postavljanje novog PIN-a"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN mora sadržavati od <xliff:g id="MIN">%1$d</xliff:g> do <xliff:g id="MAX">%2$d</xliff:g> znamenki."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potvrda PIN-a"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-ovi se ne podudaraju"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Ažuriran je PIN govorne pošte"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN se ne može postaviti"</string>
 </resources>
diff --git a/res/values-hu/config.xml b/res/values-hu/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-hu/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 44bbacd..ca35c22 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobiladatok"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobiladatok"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefonszolgáltatás"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Segélyhívó tárcsázó"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Hiányzik a hangposta száma"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Nincs hangpostaszám a SIM kártyán."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Szám hozzáadása"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"A hangposta-beállításokat csak az elsődleges felhasználó módosíthatja."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM kártyája letiltása megszűnt. Feloldás folyamatban..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM hálózati függetlenítő PIN kódja"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Feloldás"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Függetlenítés kérése..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"A hálózatzárolás feloldására vonatkozó kérelem sikertelen volt."</string>
     <string name="unlock_success" msgid="6770085622238180152">"A függetlenítés sikerült."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobilhálózati beállítások nem érhetők el ennél a felhasználónál"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobilhálózati beállítások nem érhetők el ennél a felhasználónál"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-hívásbeállítások"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-hívásbeállítások (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-hívásbeállítások"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Hívásindítás a következővel:"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP-hívások indítása a következővel:"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Először kérdezze meg"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nincs elérhető hálózat"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Beállítások"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Fiókok kiválasztása"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonos fiókok"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Hangposta"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hangposta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"HP:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Értesítések"</string>
     <string name="networks" msgid="8873030692174541976">"Mobilszolgáltatók"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Sürgősségi adások"</string>
     <string name="call_settings" msgid="6112441768261754562">"Hívásbeállítások"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Amikor ki van kapcsolva"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Átirányítási szám, ha ki van kapcsolva"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Átirányítás ide: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Kikapcsolva"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Ki"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Szolgáltatója nem támogatja a hívásátirányítás letiltását, ha a telefon nem érhető el."</string>
     <string name="updating_title" msgid="6146755386174019046">"Hívásbeállítások"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"A hívásbeállításokat csak az elsődleges felhasználó módosíthatja."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"A hívásbeállításokat csak a rendszergazda módosíthatja."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Beállítások (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Hiba a hívásbeállításokban"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Beállítások olvasása..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Beállítások frissítése..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Beállítások visszaállítása..."</string>
     <string name="response_error" msgid="6674110501330139405">"Nem várt válasz a hálózattól."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Hiba a hálózatban vagy a SIM kártyánál."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Hiba a hálózatban vagy a SIM-kártyánál."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"Az SS-kérés módosítva DIAL-kérésre."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"Az SS-kérés módosítva USSD-kérésre."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"Az USSD-kérés módosítva új SS-kérésre."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nem történt változtatás."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Válassza ki a hangposta-szolgáltatást"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Saját mobilszolgáltató"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobilhálózati beállítások"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Régi PIN-kód"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Új PIN-kód"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Kérjük, várjon."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Az új PIN-kód túl rövid."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Az új PIN-kód túl hosszú."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Az új PIN-kód túl gyenge. Az erős jelszavak nem tartalmaznak egymás után következő számokat vagy ismétlődő számjegyeket."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"A régi PIN-kód nem egyezik a tárolttal."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Az új PIN-kód érvénytelen karaktereket tartalmaz."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Nem sikerült módosítani a PIN-kódot"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nem támogatott üzenettípus. Hívja a következő telefonszámot az üzenet meghallgatásához: <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobilhálózati beállítások"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilhálózat"</string>
     <string name="label_available" msgid="1181658289009300430">"Elérhető hálózatok"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Keresés…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nem található hálózat."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Regisztrálva a hálózaton."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Válassza ki a hálózat üzemeltetőjét"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Az összes elérhető hálózat megkeresése"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Automatikus választás"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Preferált hálózat automatikus kiválasztása"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Hálózat automatikus kiválasztása"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Hálózat"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatikus regisztráció..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferált hálózattípus"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"A hálózati üzemmód megváltoztatása"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Csak GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA a preferált"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Hívás"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Hálózat"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Javított 4G LTE mód"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Továbbfejlesztett telefonhívás"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTE-szolgáltatások használata hang- és egyéb kommunikáció javításához (ajánlott)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Adatok engedélyezése"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Adatforgalom engedélyezése"</string>
-    <string name="roaming" msgid="8871412572928323707">"Adatbarangolás"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Figyelem"</string>
+    <string name="roaming" msgid="7894878421600247140">"Barangolás"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Csatlakozás adatszolgáltatásokhoz barangolás során"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Csatlakozás adatszolgáltatásokhoz barangolás során"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Megszakadt az adatkapcsolat, mert elhagyta az otthoni hálózatot, és az adatbarangolás nincs bekapcsolva."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Lehet, hogy jelentős összeget számítanak fel érte."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Engedélyezi az adatbarangolást?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Adathasználat"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobiladat felhasználva a következő dátumok között: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Szolgáltató"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiladatok"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Adathozzáférés a mobilhálózaton keresztül"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-hívás"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Szolgáltatói videohívás"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS beállítások"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-beállítások"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Adathasználat"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Elérte a felső korlátot: <xliff:g id="USED_0">%1$s</xliff:g>\nAz adatsebesség lecsökken <xliff:g id="USED_1">%2$d</xliff:g> kb/s-ra"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"A ciklus <xliff:g id="USED_0">%1$d</xliff:g>٪ -a letelt\nA következő időszak <xliff:g id="USED_1">%2$d</xliff:g> nap múlva kezdődik (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Az adatátvitel sebessége <xliff:g id="USED">%1$d</xliff:g> kb/s-ra csökken, ha átlépi az adathasználati korlátot."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"További információk mobilszolgáltatója hálózatának adatfelhasználási irányelveiről"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"További információk mobilszolgáltatója hálózatának adatfelhasználási irányelveiről"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cellán belüli üzenetszórás"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cellán belüli üzenetszórás"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cellán belüli üzenetszórás engedélyezve"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Névjegy hozzáadása"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Névjegy szerkesztése"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Névjegy törlése"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Névjegy tárcsázása"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Írja be a PIN2 kódot"</string>
     <string name="name" msgid="7329028332786872378">"Név"</string>
     <string name="number" msgid="7905950798349903858">"Szám"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Fix hívószám törlése..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"A fix hívószám törölve."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"A fix hívószám nincs frissítve, mert hibás PIN kódot írt be."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"A fix hívószám nem lett frissítve, mert a szám nem haladhatja meg a 20 számjegyet."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Az FDN nem lett frissítve, mert az érték üres vagy több mint 20 számjegyből áll."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"A fix hívószám nem lett frissítve. Hibás a PIN2 kód, vagy a telefonszámot elutasították."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Sikertelen a fix hívószámmal végzett művelet."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Beolvasás a SIM kártyáról..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Nincsenek névjegyek a SIM kártyán."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Nincsenek névjegyek a SIM-kártyán."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Válassza ki az importálni kívánt névjegyeket"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"A repülős üzemmód kikapcsolása a névjegyek SIM kártyáról történő importálásához."</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM kártya PIN kódjának be-/kikapcsolása"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"A hangposta száma ismeretlen"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nincs szolgáltatás"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"A kiválasztott hálózat (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nem érhető el"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Repülős üzemmód kikapcsolása hívás indításához."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"A hívás indításához kapcsolja be a hálózatot, és kapcsolja ki a repülős vagy akkumulátorkímélő üzemmódot."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Repülős üzemmód kikapcsolása hívás indításához."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Hívás indításához kapcsolja ki a repülős üzemmódot, illetve csatlakozzon egy vezeték nélküli hálózathoz."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Lépjen ki a Segélykérő visszahívása módból nem vészjellegű hívás kezdeményezéséhez."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nincs regisztrálva a hálózaton."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"A mobilhálózat nem érhető el."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A mobilhálózat nem érhető el. Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"A mobilhálózat nem érhető el."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"A mobilhálózat nem érhető el. Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Hívásindításhoz adjon meg egy érvényes számot."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"A hívás sikertelen."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-sorozat indítása..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Sikertelen hívás."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Jelenleg nem lehet hívást indítani."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"A szolgáltatás nem támogatott"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"A hívások közötti váltás sikertelen."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"A híváselkülönítés sikertelen."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nem lehet konferenciahívást folytatni."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"A híváselutasítás sikertelen."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"A tartásban lévő hívás(ok) folytatása sikertelen."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"A hívások nem tarthatók."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Engedélyezze a Wi-Fi-hívást a hívásindításhoz."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Segélyhívás"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Rádió bekapcsolása..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nincs szolgáltatás. Újrapróbálkozás folyamatban…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Segélyhívás során nem engedélyezheti a Repülős üzemmódot."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"A hívás sikertelen. A(z) <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> szám nem segélyhívószám."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"A hívás sikertelen. Tárcsázzon segélyhívószámot."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"A tárcsázáshoz használja a billentyűzetet"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Összes importálása"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM kártya névjegyeinek importálása"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importálás a Címtárból"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Importált névjegy"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Névjegy importálása sikertelen"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hallókészülékek"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Hallókészülék-kompatibilitás bekapcsolása"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Segélykérő visszahívása mód bekapcsolva"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Segélykérő visszahívása mód"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Adatkapcsolat letiltva"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> perce nincs adatkapcsolat</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> perce nincs adatkapcsolat</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Nincs adatkapcsolat eddig: <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">A telefon <xliff:g id="COUNT_1">%s</xliff:g> percig lesz Segélykérő visszahívása módban. Ebben az üzemmódban nem használhatók olyan alkalmazások, amelyeknél adatkapcsolatra van szükség. Szeretne kilépni most?</item>
       <item quantity="one">A telefon <xliff:g id="COUNT_0">%s</xliff:g> percig lesz Segélykérő visszahívása módban. Ebben az üzemmódban nem használhatók olyan alkalmazások, amelyeknél adatkapcsolatra van szükség. Szeretne kilépni most?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"névjegy kijelölése"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"A hanghívás nem támogatott"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"tárcsázás"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Rezgés"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Rezgés"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuális hangpostaüzenet"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Hang"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN-kód beállítása"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-kód módosítása"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Csengőhang és rezgés"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Beépített SIM kártyák"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Videohívás bekapcsolása"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Csak segélyhívás"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kártya, bővítőhely: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Kisegítő lehetőségek"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Beérkező Wi-Fi-hívás"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-hívás tőle:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-hívás"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Érintse meg ismét a megnyitáshoz"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Koppintson rá ismét a megnyitáshoz"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Hiba történt az üzenet dekódolása közben."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Egy SIM kártya aktiválta a szolgáltatást, valamint frissítette a telefon barangolási képességeit."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Túl sok aktív hívás van. Új hívás indítása előtt fejezzen be vagy vonjon össze meglévő hívásokat."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Sikertelen csatlakozás. Helyezzen be egy működő SIM-kártyát."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"A Wi-Fi-kapcsolat megszakadt. A hívás befejeződött."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"A hangposta PIN-kódjának módosítása"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Folytatás"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Mégse"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"A régi PIN-kód megerősítése"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Írja be a hangpostához használt PIN-kódját a folytatáshoz."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Állíts be új PIN-kódot"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"A PIN-kódnak <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> számjegyből kell állnia."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN-kód megerősítése"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"A PIN-kódok nem egyeznek"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"A hangpostához használt PIN-kód frissítve"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nem sikerült beállítani a PIN-kódot"</string>
 </resources>
diff --git a/res/values-hy-rAM/arrays.xml b/res/values-hy/arrays.xml
similarity index 100%
rename from res/values-hy-rAM/arrays.xml
rename to res/values-hy/arrays.xml
diff --git a/res/values-hy/config.xml b/res/values-hy/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-hy/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy/strings.xml
similarity index 83%
rename from res/values-hy-rAM/strings.xml
rename to res/values-hy/strings.xml
index dd6a302..b2b5037 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Բջջային տվյալներ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Բջջային տվյալներ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Հեռախոսի ծառայություններ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Արտակարգ իրավիճակների համարհավաքիչ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Հեռախոս"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Բացակայում է ձայնային փոստի համարը"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM քարտում ձայնային փոստի ոչ մի համար գրանցված չէ:"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Ավելացնել համար"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Ձայնային փոստի կարգավորումները կարող է փոխել միայն հիմնական օգտագործողը:"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Ձեր SIM քարտը ապակողպված է: Ձեր հեռախոսը ապակողպվում է..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM ցանցով PIN-ի ապակողպում"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Ապակողպել"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Հայցվում է ցանցի ապակողպում..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ցանցի ապակողպման հարցումը խափանվեց:"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ցանցի ապակողպումը խափանվեց"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Բջջային ցանցի կարգավորումներն անհասանելի են այս օգտվողի համար"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Բջջային ցանցի կարգավորումներն անհասանելի են այս օգտատիրոջ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM զանգերի կարգավորումներ"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM զանգի կարգավորումներ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA զանգերի կարգավորումներ"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Ընտրել հաշիվ զանգերի համար"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Ընտրել հաշիվ SIP-ի միջոցով զանգերի համար"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Նախ հարցնել"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Հասանելի ցանց չկա"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Կարգավորումներ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Ընտրել հաշիվներ"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Հաշիվներ զանգերի համար"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Ձայնային փոստ"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ձայնային փոստ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ՁՓ՝"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Ծանուցումներ"</string>
     <string name="networks" msgid="8873030692174541976">"Կապի օպերատորներ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Ծանուցումներ արտակարգ իրավիճակների մասին"</string>
     <string name="call_settings" msgid="6112441768261754562">"Զանգի կարգավորումներ"</string>
@@ -92,7 +95,7 @@
     <string name="labelCW" msgid="6120513814915920200">"Զանգի սպասում"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Զանգի ընթացքում տեղեկացնել ինձ մուտքային զանգերի մասին"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Զանգի ընթացքում տեղեկացնել ինձ մուտքային զանգերի մասին"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Զանգի վերահասցեավորման կարգավորումներ"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Վերահասցեավորում"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Զանգի փոխանցման կարգավորումներ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Զանգի վերահասցեավորում"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Միշտ փոխանցել"</string>
@@ -106,7 +109,7 @@
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"Վերահասցեավորվում է դեպի <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Անջատված է"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Ձեր օպերատորը չի աջակցում զանգի վերահասցեավորման կասեցում, երբ ձեր հեռախոսը զբաղված է:"</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"Երբ անպատասխան է"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Երբ պատասխան չկա"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Թվել, երբ անպատասխան է"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Վերահասցեավորվում է դեպի <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Անջատված է"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Երբ անհասանելի է"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Թվել, երբ անհասանելի է"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Վերահասցեավորվում է դեպի <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Անջատված է"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Անջատված է"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ձեր սպասարկողը չի աջակցում զանգի վերահասցեավորման կասեցում, երբ ձեր հեռախոսն անհասանելի է:"</string>
     <string name="updating_title" msgid="6146755386174019046">"Զանգի կարգավորումներ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Զանգի կարգավորումները կարող է փոխել միայն հիմնական օգտագործողը:"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Զանգի կարգավորումները կարող է փոխել միայն ադմինիստրատոր հանդիսացող օգտատերը:"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Կարգավորումներ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Զանգի կարգավորումների սխալ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Ընթերցման կարգավորումներ..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Թարմացվում են կարգավորումները..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Կարգավորւմները հետադարձվում են..."</string>
     <string name="response_error" msgid="6674110501330139405">"Անակնկալ պատասխան ցանցից:"</string>
-    <string name="exception_error" msgid="7027667130619518211">"Ցանցի կամ SIM քարտի սխալ:"</string>
+    <string name="exception_error" msgid="7027667130619518211">"Ցանցի կամ SIM քարտի սխալ"</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS հարցումը փոխվել է DIAL հարցման:"</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS հարցումը փոխվել է USSD հարցման:"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS հարցումը փոխվել է նոր SS հարցման:"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Ոչ մի փոփոխություն կատարված չէ:"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Ընտրել ձայնային փոստի ծառայությունը"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Ձեր օպերատորը"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Բջջային ցանցի կարգավորումները"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Հին PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Նոր PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Խնդրում ենք սպասել:"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Նոր PIN-ը չափազանց կարճ է:"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Նոր PIN-ը չափազանց երկար է:"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Նոր PIN-ը բավականաչափ հուսալի չէ: Հուսալի գաղտնաբառը չպետք է ունենա շարունակական հաջորդականություն կամ կրկնվող թվեր:"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Հին PIN-ը չի համընկնում:"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Նոր PIN-ը պարունակում է անվավեր գրանշաններ:"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Չհաջողվեց փոխել PIN-ը"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Հաղորդագրության չաջակցվող տեսակ, զանգեք <xliff:g id="NUMBER">%s</xliff:g> համարին՝ լսելու համար:"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Բջջ. ցանցի կարգավորումներ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Բջջային ցանց"</string>
     <string name="label_available" msgid="1181658289009300430">"Հասանելի ցանցեր"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Որոնում..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Ոչ մի ցանց չի գտնվել:"</string>
@@ -158,12 +172,12 @@
     <string name="registration_done" msgid="495135664535876612">"Գրանցված է ցանցում:"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Ընտրեք ցանցային օպերատորին"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Որոնել բոլոր հասանելի ցանցերը"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Ընտրել ավտոմատ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Ավտոմատ ընտրել նախընտրելի ցանցը"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Ավտոմատ ընտրել ցանցը"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Ցանց"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Ավտոմատ գրանցում..."</string>
-    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Նախընտրելի ցանցի տեսակը"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Ցանցի նախընտրելի տեսակը"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Փոխել ցանցային գործավար ռեժիմը"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Նախընտրելի ցանցի տեսակը"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Ցանցի նախընտրելի տեսակը"</string>
     <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Նախընտրելի ցանցի ռեժիմը՝ WCDMA նախընտրելի"</string>
     <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Նախընտրելի ցանցի ռեժիմը՝ միայն GSM"</string>
     <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Նախընտրելի ցանցի ռեժիմը՝ միայն WCDMA"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Միայն GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA նախընտրելի"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Զանգ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Ցանց"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Ընդլայնված 4G LTE ռեժիմ"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Ընդլայնված զանգ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Ձայնի և կապի որակը բարելավելու համար օգտվեք LTE ծառայություններից (հանձնարարելի)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Տվյալները միացված են"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Թույլատրել տվյալների օգտագործումը"</string>
-    <string name="roaming" msgid="8871412572928323707">"Տվյալների ռոումինգ"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում գտնվելիս"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Ուշադրություն"</string>
+    <string name="roaming" msgid="7894878421600247140">"Ռոումինգ"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Դուք կորցրել եք տվյալների կապը, քանի որ անջատված եք թողել ձեր գլխավոր ցանցի տվյալների ռոումինգը:"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Դրա համար ձեզանից կարող են զգալի վճարներ գանձվել:"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Թույլատրե՞լ տվյալների ռոումինգը:"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Թրաֆիկի օգտագործում"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Oգտագործվել է <xliff:g id="ID_1">%1$s</xliff:g> բջջային ինտերնետ (<xliff:g id="ID_2">%2$s</xliff:g>)"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Օպերատոր"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Բջջային ինտերնետ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Օգտվել բջջային ինտերնետից"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Զանգեր Wi-Fi-ի միջոցով"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Տեսազանգեր բջջային ցանցի միջոցով"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ընտրանքներ"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ընտրանքներ"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Տվյալների օգտագործումը"</string>
@@ -219,12 +245,12 @@
     <!-- String.format failed for translation -->
     <!-- no translation found for throttle_data_usage_subtext (6029276011123694701) -->
     <skip />
-    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> առավելագույնը գերազանցվել է\nՏվյալների արժեքը նվազել է մինչև <xliff:g id="USED_1">%2$d</xliff:g> ԿԲ/վ"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> առավելագույնը գերազանցվել է\nՏվյալների արժեքը նվազել է մինչև <xliff:g id="USED_1">%2$d</xliff:g> կԲ/վ"</string>
     <!-- String.format failed for translation -->
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
-    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Տվյալների ծավալը կնվազի մինչև <xliff:g id="USED">%1$d</xliff:g> ԿԲ/վ, եթե տվյալների օգտագործման սահմանաչափը գերազանցվի"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Լրացուցիչ տեղեկություններ ձեր օպերատորի բջջային ցանցի տվյալների օգտագործման քաղաքականության մասին"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Տվյալների ծավալը կնվազի մինչև <xliff:g id="USED">%1$d</xliff:g> կԲ/վ, եթե տվյալների օգտագործման սահմանաչափը գերազանցվի"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Լրացուցիչ տեղեկություններ ձեր սպասարկողի բջջային ցանցի տվյալների օգտագործման քաղաքականության մասին"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Բջջային հեռարձակման SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Բջջային հեռարձակման SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Բջջային հեռարձակման SMS-ը միացված է"</string>
@@ -323,7 +349,7 @@
     <item msgid="1205664026446156265">"Ավտոմատ"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA բաժանորդագրում"</string>
-    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Փոխել RUIM/SIM-ի և NV-ի միջև"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Փոխել RUIM/SIM քարտի և NV-ի միջև"</string>
     <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"բաժանորդագրում"</string>
   <string-array name="cdma_subscription_choices">
     <item msgid="2258014151300708431">"RUIM/SIM"</item>
@@ -336,13 +362,13 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Ակտիվացնել սարքը"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Կարգավորել տվյալների ծառայությունը"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Օպերատորի կարգավորումներ"</string>
-    <string name="fdn" msgid="7878832555095183202">"Ամրակայված հեռախոսահամարներ"</string>
+    <string name="fdn" msgid="7878832555095183202">"Թույլատրված համարներ"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Ֆիքսված համարներ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"FDN ցուցակ"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN ցանկ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN ակտիվացում"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"Ամրակայված հեռախոսահամարները միացված են"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Ամրակայված հեռախոսահամարներն անջատված են"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Թույլատրված հեռախոսահամարները միացված են"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Թույլատրված հեռախոսահամարներն անջատված են"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Միացնել FDN-ը"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Անջատել FDN-ը"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Փոխել PIN2-ը"</string>
@@ -350,10 +376,10 @@
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Միացնել FDN-ը"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Կառավարել ամրակայված հեռախոսահամարները"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Փոխել PIN-ը՝ FDN-ն օգտագործելու համար"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Կառավարել հեռախոսի համարների ցանկը"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Կառավարել թույլատրված համարների ցուցակը"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Ձայնային գաղտնիություն"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Միացնել ուժեղացված գաղտնիության ռեժիմը"</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY ռեժիմը"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY ռեժիմ"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"Սահմանել TTY ռեժիմը"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Ավտոմատ կրկնում"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Միացնել ավտոմատ կրկնման ռեժիմը"</string>
@@ -361,27 +387,28 @@
     <string name="menu_add" msgid="1882023737425114762">"Ավելացնել կոնտակտ"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Խմբագրել կոնտակտը"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Ջնջել կոնտակտը"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Զանգել կոնտակտին"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Մուտքագրեք PIN2-ը"</string>
     <string name="name" msgid="7329028332786872378">"Անուն"</string>
     <string name="number" msgid="7905950798349903858">"Համար"</string>
     <string name="save" msgid="4094274636321939086">"Պահել"</string>
     <string name="add_fdn_contact" msgid="2481915899633353976">"Ավելացնել ամրակայված հեռախոսահամար"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"Ավելացվում է ամրակայված հեռախոսահամարը..."</string>
-    <string name="fdn_contact_added" msgid="7458335758501736665">"Ամրակայված հեռախոսահամարն ավելացված է:"</string>
+    <string name="fdn_contact_added" msgid="7458335758501736665">"Թույլատրված հեռախոսահամարն ավելացված է:"</string>
     <string name="edit_fdn_contact" msgid="7976936035587081480">"Խմբագրել ամրակայված հեռախոսահամարը"</string>
     <string name="updating_fdn_contact" msgid="8370929876849803600">"Թարմացվում է ամրակցված համարհավաքման համարը..."</string>
-    <string name="fdn_contact_updated" msgid="5497828782609005017">"Ամրակայված հեռախոսահամարը նորացված է:"</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"Թույլատրված հեռախոսահամարը նորացված է:"</string>
     <string name="delete_fdn_contact" msgid="6668958073074151717">"Ջնջել ամրակայված հեռախոսահամարը"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Ջնջվում է ամրակայված հեռախոսահամարը ..."</string>
-    <string name="fdn_contact_deleted" msgid="7154162327112259569">"Ամրակայված հեռախոսահամարը ջնջված է:"</string>
+    <string name="fdn_contact_deleted" msgid="7154162327112259569">"Թույլատրված հեռախոսահամարը ջնջված է:"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN-ը չի թարմացվել, քանի որ դուք մուտքագրել եք սխալ PIN:"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN-ը չի թարմացվել, քանի որ համարը չի կարող գերազանցել 20 նիշը:"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN-ը չթարմացվեց, քանի որ համարը լրացված չէ կամ գերազանցում է 20 նիշը:"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN-ը չի թարմացվել: PIN2-ը սխալ է կամ հեռախոսահամարը մերժված է:"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN գործողությունը ձախողվեց:"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ընթերցում է SIM քարտից..."</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"Ձեր SIM քարտում կոնտակտներ չկան:"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Ընտրեք կոնտակտները ներմուծման համար"</string>
-    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Կոնտակտները SIM քարտից ներմուծելու համար անջատեք ինքնաթիռային ռեժիմը:"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Կոնտակտները SIM քարտից ներմուծելու համար անջատեք Ինքնաթիռի ռեժիմը:"</string>
     <string name="enable_pin" msgid="5422767284133234860">"Միացնել/անջատել SIM PIN-ը"</string>
     <string name="change_pin" msgid="9174186126330785343">"Փոխել SIM PIN-ը"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN՝"</string>
@@ -400,7 +427,7 @@
     <string name="pin_changed" msgid="4455736268023261662">"PIN կոդը թարմացվեց"</string>
     <string name="puk_requested" msgid="5921393215789090200">"Գաղտնաբառը սխալ է: PIN կոդն այժմ կողպված է: Պահանջվում է PUK կոդը:"</string>
     <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
-    <string name="oldPin2Label" msgid="8559146795026261502">"Հին PIN2"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"Հին PIN2 կոդը"</string>
     <string name="newPin2Label" msgid="4573956902204349054">"Նոր PIN2"</string>
     <string name="confirmPin2Label" msgid="8100319484454787708">"Հաստատեք նոր PIN2-ը"</string>
     <string name="badPuk2" msgid="7910064009531541708">"PUK2 կոդը սխալ է: Փորձեք կրկին:"</string>
@@ -416,9 +443,9 @@
     <string name="pin2_attempts" msgid="720736232885011507">\n"Ձեզ մնացել է <xliff:g id="NUMBER">%d</xliff:g> փորձ:"</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 կոդն այլևս արգելափակված չէ"</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"Ցանցի կամ SIM քարտի սխալ"</string>
-    <string name="doneButton" msgid="2859593360997984240">"Կատարված է"</string>
+    <string name="doneButton" msgid="2859593360997984240">"Պատրաստ է"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Ձայնային փոստի համարը"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Համարարկվում է"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Համարը հավաքվում է"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Վերահամարարկում"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Կոնֆերանս զանգ"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Մուտքային զանգ"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ձայնային փոստի համարն անհայտ է"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ծառայություններ չկան"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Ընտրված ցանցը (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) անհասանելի է"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Զանգ կատարելու համար անջատեք ինքնաթիռային ռեժիմը:"</string>
-    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Զանգ կատարելու համար անջատեք ինքնաթիռային ռեժիմը կամ միացեք անլար ցանցին:"</string>
-    <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Սովորական զանգ կատարելու համար դուրս եկեք արտակարգ իրավիճակների հետզանգի ռեժիմից:"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Զանգ կատարելու համար միացեք բջջային ցանցին, անջատեք ինքնաթիռի կամ էներգախնայման ռեժիմը:"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Զանգ կատարելու համար անջատեք Ինքնաթիռի ռեժիմը:"</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Զանգ կատարելու համար անջատեք Ինքնաթիռի ռեժիմը կամ միացեք անլար ցանցին:"</string>
+    <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Սովորական զանգ կատարելու համար դուրս եկեք շտապ կանչի ռեժիմից։"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ցանցում գրանցված չէ:"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Բջջային ցանցն անհասանելի է:"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Բջջային ցանցն անհասանելի է: Զանգ կատարելու համար միացեք անլար ցանցին:"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Բջջային ցանցն անհասանելի է:"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Բջջային ցանցն անհասանելի է: Զանգելու համար միացեք Wi-Fi ցանցին:"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Զանգ կատարելու համար մուտքագրեք ճիշտ համար:"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Հնարավոր չէ զանգել:"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Մեկնարկում է MMI հաջորդականությունը..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Զանգը ձախողվեց:"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Այս պահին հնարավոր չէ զանգել:"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Ծառայությունը չի աջակցվում"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Հնարավոր չէ փոխանջատել զանգը:"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Հնարավոր չէ առանձնացնել զանգը:"</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Կոնֆերանս զանգը հնարավոր չէ:"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Հնարավոր չէ մերժել զանգը:"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Հնարավոր չէ անջատել զանգ(եր)ը:"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Հնարավոր չէ հետաձգել զանգերը:"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Զանգ կատարելու համար միացեք անլար ցանցին:"</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Արտակարգ իրավիճակների զանգ"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Զանգ կատարելու համար միացրեք «Զանգեր Wi-Fi ցանցի միջոցով» գործառույթը:"</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Շտապ կանչ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ռադիոն միացվում է..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ծառայությունը մատչելի չէ: Նորից փորձեք…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Շտապ կանչի ժամանակ հնարավոր չէ մտնել ինքնաթիռի ռեժիմ:"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Հնարավոր չէ զանգել: <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> համարը արտակարգ իրավիճակի համար չէ:"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Հնարավոր չէ զանգել: Հավաքեք արտակարգ իրավիճակի որևէ համար:"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Օգտագործեք ստեղնաշարը՝ համարհավաքման համար"</string>
@@ -464,17 +495,19 @@
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Փոխանակել"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Կառավարել զանգերը"</string>
     <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Կառավարել կոնֆերանսը"</string>
-    <string name="onscreenAudioText" msgid="1710087112800041743">"Ձայնանյութ"</string>
+    <string name="onscreenAudioText" msgid="1710087112800041743">"Աուդիո"</string>
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Տեսազանգել"</string>
     <string name="importSimEntry" msgid="6614358325359736031">"Ներմուծել"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"Ներմուծել բոլորը"</string>
-    <string name="importingSimContacts" msgid="7374056215462575769">"Ներմուծվում է SIM-ի կոնտակտներից"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Ներմուծվում է SIM քարտի կոնտակտներից"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Ներմուծել կոնտակտներից"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"Լսողական օգնական"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Միացնել լսողական օգնականի համատեղելիությունը"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Ներմուծված կոնտակտ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Չհաջողվեց ներմուծել կոնտակտը"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Լսողական ապարատ"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Միացնել լսողական ապարատի աջակցումը"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY-ն անջատված է"</item>
-    <item msgid="3971695875449640648">"TTY-ն լցված է"</item>
+    <item msgid="3971695875449640648">"TTY Full"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -491,7 +524,7 @@
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"Ակտիվացվում է..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"Հեռախոսը ակտիվացնում է ձեր բջջային տվյալների ծառայությունը:\n\nՍա կարող է տևել մինչև 5 րոպե:"</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Բաց թողնե՞լ ակտիվացումը"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Եթե ​​դուք բաց թողնեք ակտիվացումը, դուք չեք կարող կատարել զանգեր կամ միանալ բջջային տվյալների ցանցերին (թեև դուք կարող եք միանալ Wi-Fi ցանցերին): Մինչև դուք չակտիվացնեեք ձեր հեռախոսը, ձեզ հարցվելու է ակտիվացնել յուրաքանչյուր անգամ, երբ դուք միացնեք այն:"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Եթե ​​դուք բաց թողնեք ակտիվացումը, դուք չեք կարող կատարել զանգեր և միանալ բջջային տվյալների ցանցերին (թեև դուք կարող եք միանալ Wi-Fi ցանցերին): Մինչև դուք չակտիվացնեեք ձեր հեռախոսը, ձեզ հարցվելու է ակտիվացնել յուրաքանչյուր անգամ, երբ դուք միացնեք այն:"</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Բաց թողնել"</string>
     <string name="ota_activate" msgid="1368528132525626264">"Ակտիվացնել"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"Հեռախոսն ակտիվացված է:"</string>
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Գտնվում է արտակարգ իրավիճակների հետզանգի ռեժիմում"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Արտակարգ իրավիճակների հետզանգի ռեժիմ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Տվյալների կապն անջատված է"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> րոպե տվյալների միացում չկա</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> րոպե տվյալների միացում չկա</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Մինչև ժամը <xliff:g id="COMPLETETIME">%s</xliff:g> ինտերնետ կապ չի լինի"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Հեռախոսը գտնվելու է Արտակարգ իրավիճակների հետզանգի ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Այդ ռեժիմում տվյալների միացում պահանջող հավելվածները չեն կարող օգտագործվել: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
       <item quantity="other">Հեռախոսը գտնվելու է Արտակարգ իրավիճակների հետզանգի ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Այդ ռեժիմում տվյալների միացում պահանջող հավելվածները չեն կարող օգտագործվել: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
@@ -522,7 +552,7 @@
       <item quantity="one">Նշված գործողությունն Արտակարգ իրավիճակների հետզանգի ռեժիմում հասանելի չէ: Հեռախոսը գտնվելու է այս ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
       <item quantity="other">Նշված գործողությունն Արտակարգ իրավիճակների հետզանգի ռեժիմում հասանելի չէ: Հեռախոսը գտնվելու է այս ռեժիմում <xliff:g id="COUNT_1">%s</xliff:g> րոպե: Ցանկանո՞ւմ եք դուրս գալ հիմա:</item>
     </plurals>
-    <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Ընտրված գործողությունը մատչելի չէ արտակարգ հետզանգի ռեժիմում գտնվելիս:"</string>
+    <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"Ընտրված գործողությունը հասանելի չէ շտապ կանչի ժամանակ:"</string>
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Դուրս է գալիս արտակարգ իրավիճակների հետզանգի ռեժիմից"</string>
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Այո"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Ոչ"</string>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"ընտրել կոնտակտ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Ձայնային զանգերը չեն սպասարկվում"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"համարհավաքել"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Թրթռալ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Թրթռալ"</string>
-    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Տեսանելի ձայնային փոստ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ձայն"</string>
+    <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Տեսողական ձայնային փոստ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Ընտրեք PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Փոխել PIN-ը"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ձայներանգ &amp; Թրթռոց"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ներկառուցված SIM քարտեր"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Միացնել տեսազանգի գործառույթը"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Միայն արտակարգ իրավիճակների զանգեր"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM քարտ, բնիկը՝ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Մատչելիություն"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Մուտքային Wi-Fi զանգ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi զանգ այս օգտվողից՝"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Զանգ Wi-Fi-ի միջոցով"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Կրկին հպեք՝ բացելու համար"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Կրկին հպեք՝ բացելու համար"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Հաղորդագրությունն ապակոդավորելիս սխալ առաջացավ:"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM քարտն ակտիվացրել է ծառայությունը և թարմացրել ձեր հեռախոսի ռոումինգի հնարավորությունները:"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Չափազանց շատ ընթացիկ զանգեր կան: Ավարտեք կամ միավորեք առկա զանգերը՝ նախքան նորն զանգ կատարելը:"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Չհաջողվեց միանալ, տեղադրեք վավեր SIM քարտ:"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi կապը կորավ: Զանգն ավարտվեց:"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Փոխել ձայնային փոստի PIN-ը"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Շարունակել"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Չեղարկել"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Լավ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Հաստատեք ձեր հին PIN-ը"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Շարունակելու համար մուտքագրեք ձայնային փոստի PIN-ը:"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Ընտրեք նոր PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-ը պետք է բաղկացած լինի <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> թվանշանից:"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Հաստատեք ձեր PIN-ը"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-երը չեն համընկնում"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Ձայնային փոստի PIN-ը թարմացվեց"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Չհաջողվեց փոխել PIN-ը"</string>
 </resources>
diff --git a/res/values-in/config.xml b/res/values-in/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-in/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 3c4808d..6618324 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Data Seluler"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Data Seluler"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Layanan Telepon"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Aplikasi Telepon Darurat"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telepon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nomor kotak pesan hilang"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nomor kotak pesan tersimpan pada kartu SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Tambahkan nomor"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Setelan Pesan Suara hanya dapat diubah oleh Pengguna Utama."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Kartu SIM Anda tidak lagi dicekal. Ponsel Anda sedang dibuka kuncinya..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN pembuka kunci jaringan SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Buka kunci"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Meminta membuka jaringan..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Permintaan buka kunci jaringan gagal."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Jaringan berhasil dibuka."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Setelan jaringan seluler tidak tersedia bagi pengguna ini"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Setelan jaringan seluler tidak tersedia bagi pengguna ini"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Setelan panggilan GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Setelan panggilan telepon GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Setelan panggilan CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Lakukan panggilan dengan"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Lakukan panggilan SIP dengan"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Tanyakan terlebih dahulu"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Jaringan tidak tersedia"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Setelan"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Pilih akun"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akun ponsel"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Kotak Pesan"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Kotak pesan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifikasi"</string>
     <string name="networks" msgid="8873030692174541976">"Operator jaringan"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Siaran darurat"</string>
     <string name="call_settings" msgid="6112441768261754562">"Setelan panggilan"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Saat tidak dapat dihubungi"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nomor jika tidak dapat dihubungi"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Meneruskan ke <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Dinonaktifkan"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Nonaktif"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operator Anda tidak mendukung penonaktifan penerusan panggilan ketika ponsel tidak dapat dijangkau."</string>
     <string name="updating_title" msgid="6146755386174019046">"Setelan panggilan"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Setelan panggilan hanya dapat diubah oleh pengguna utama."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Setelan panggilan telepon hanya dapat diubah oleh pengguna admin."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Setelan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Kesalahan setelan panggilan"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Membaca setelan…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Tidak ada perubahan yang dilakukan."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Pilih layanan kotak pesan"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operator Anda"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Setelan jaringan seluler"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN Lama"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN Baru"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Mohon tunggu."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN baru terlalu pendek."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN baru terlalu panjang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN baru terlalu lemah. Sandi yang kuat tidak boleh memiliki urutan karakter kontinu atau digit berulang."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"PIN lama tidak cocok."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"PIN baru berisi karakter yang tidak valid."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Tidak dapat mengubah PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipe pesan tidak didukung, telepon <xliff:g id="NUMBER">%s</xliff:g> untuk mendengarkan."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Setelan jaringan seluler"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Jaringan seluler"</string>
     <string name="label_available" msgid="1181658289009300430">"Jaringan yang tersedia"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Menelusuri…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Jaringan tidak ditemukan."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Terdaftar pada jaringan."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Pilih operator jaringan"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Telusuri semua jaringan yang tersedia"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Pilih otomatis"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Memilih jaringan yang disukai secara otomatis"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Pilih jaringan secara otomatis"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Jaringan"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Pendaftaran otomatis..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Jenis jaringan yang dipilih"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Ubah mode pengoperasian jaringan"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM saja"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA lebih disukai"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Memanggil"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Jaringan"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mode LTE 4G yang Ditingkatkan"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Panggilan Telepon Lanjutan"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Gunakan layanan LTE untuk menyempurnakan suara dan komunikasi lainnya (disarankan)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data diaktifkan"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Izinkan penggunaan data"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming data"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Perhatian"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Sambungkan ke layanan data ketika roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Sambungkan ke layanan data ketika roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Anda telah kehilangan konektivitas data karena meninggalkan jaringan asal dalam keadaan roaming data dimatikan."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Anda dapat dikenakan biaya yang cukup besar."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Izinkan roaming data?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Penggunaan data"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> data seluler digunakan antara <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Data Seluler"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Mengakses data menggunakan jaringan seluler"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Panggilan Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Video call operator"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opsi GSM//UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opsi CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Penggunaan data"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Melebihi batas maksimum <xliff:g id="USED_0">%1$s</xliff:g>\nKecepatan data dikurangi hingga <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ dari siklus yang berlalu\nPeriode berikutnya dimulai dalam <xliff:g id="USED_1">%2$d</xliff:g> hari (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Kecepatan data dikurangi menjadi <xliff:g id="USED">%1$d</xliff:g> Kb/s jika penggunaan data melebihi batas"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Informasi selengkapnya tentang kebijakan penggunaan data jaringan seluler operator Anda"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Informasi selengkapnya tentang kebijakan penggunaan data jaringan seluler operator Anda"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS Siaran Sel"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS Siaran Sel"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Setelan SMS Siaran Sel diaktifkan"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Tambahkan kontak"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edit kontak"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Hapus kontak"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Kontak telepon"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Ketik PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nama"</string>
     <string name="number" msgid="7905950798349903858">"Nomor"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Menghapus nomor panggilan tetap..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Nomor panggilan tetap dihapus."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN tidak diperbarui karena Anda memasukkan PIN yang salah."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN tidak diperbarui karena nomor tersebut tidak boleh melebihi 20 digit."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"NPT tidak diupdate karena kosong atau melebihi 20 digit."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN tidak diperbarui. PIN2 salah, atau nomor telepon ditolak."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operasi FDN gagal."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Membaca dari kartu SIM…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nomor kotak pesan tidak dikenal"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Tidak ada layanan"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Jaringan yang dipilih (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) tidak tersedia"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Nonaktifkan mode pesawat untuk melakukan panggilan"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Aktifkan jaringan seluler, lalu nonaktifkan mode pesawat atau penghemat baterai untuk melakukan panggilan."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Nonaktifkan mode pesawat untuk melakukan panggilan"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Nonaktifkan mode pesawat atau sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Keluar dari mode telepon balik darurat untuk melakukan panggilan non-darurat."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tidak terdaftar pada jaringan."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Jaringan seluler tidak tersedia."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Jaringan selular tidak tersedia. Sambungkan ke jaringan nirkabel untuk melakukan panggilan."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Jaringan seluler tidak tersedia."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Jaringan seluler tidak tersedia. Sambungkan ke jaringan nirkabel untuk melakukan panggilan."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Untuk melakukan panggilan telepon, masukkan nomor yang valid."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Tidak dapat menelepon."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Memulai urutan MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Telepon gagal."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Panggilan tidak dapat ditambahkan untuk saat ini."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Layanan tidak didukung"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Tidak dapat berganti panggilan telepon."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Tidak dapat memisahkan panggilan telepon."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Tidak dapat melakukan telewicara."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Tidak dapat menolak panggilan telepon."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepas panggilan telepon."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Tidak dapat menahan panggilan."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke jaringan nirkabel untuk melakukan panggilan"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktifkan panggilan Wi-Fi untuk melakukan panggilan."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan darurat"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tidak ada layanan. Mencoba lagi…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Tidak dapat masuk ke mode pesawat selama panggilan darurat."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Tidak dapat menelepon. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> bukan nomor darurat."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Tidak dapat menelepon. Panggil nomor darurat."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Gunakan keyboard untuk memanggil"</string>
@@ -464,10 +495,12 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Impor semua"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Mengimpor kontak dari SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Impor dari kontak"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontak diimpor"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Gagal mengimpor kontak"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Alat bantu dengar"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Hidupkan kompatibilitas alat bantu dengar"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY Mati"</item>
+    <item msgid="512950011423868021">"TTY Nonaktif"</item>
     <item msgid="3971695875449640648">"TTY Penuh"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Masukkan Mode Telepon Balik Darurat"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mode Panggilan Balik Darurat"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Sambungan data dinonaktifkan"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Tidak ada sambungan data selama <xliff:g id="COUNT_1">%s</xliff:g> menit</item>
-      <item quantity="one">Tidak ada sambungan data selama <xliff:g id="COUNT_0">%s</xliff:g> menit</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Tidak ada koneksi data sampai <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Ponsel ini akan berada dalam mode Panggilan Balik Darurat selama <xliff:g id="COUNT_1">%s</xliff:g> menit. Saat dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat digunakan. Ingin keluar sekarang?</item>
       <item quantity="one">Ponsel ini akan berada dalam mode Panggilan Balik Darurat selama <xliff:g id="COUNT_0">%s</xliff:g> menit. Saat dalam mode ini, aplikasi yang menggunakan sambungan data tidak dapat digunakan. Ingin keluar sekarang?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"pilih kontak"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Panggilan suara tidak didukung"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"panggil"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Getar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Getar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Kotak Pesan Visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Suara"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Setel PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Ubah PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering &amp; Getar"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Kartu SIM internal"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Aktifkan video call"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Hanya untuk panggilan darurat"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Aksesibilitas"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Panggilan Wi-Fi masuk"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Panggilan Wi-Fi dari"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Panggilan Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Sentuh lagi untuk membuka"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ketuk lagi untuk membuka"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Terjadi kesalahan saat mendekode pesan."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kartu SIM telah mengaktifkan layanan dan memperbarui kemampuan roaming ponsel."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ada terlalu banyak panggilan aktif. Akhiri atau gabungkan panggilan yang ada sebelum melakukan panggilan baru."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Tidak dapat tersambung, masukkan kartu SIM yang valid."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Sambungan Wi-Fi terputus. Panggilan diakhiri."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Ubah PIN Pesan Suara"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Lanjutkan"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Batal"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Oke"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Konfirmasi PIN lama Anda"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Masukkan PIN pesan suara Anda untuk melanjutkan."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Setel PIN baru"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN harus <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> digit."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Konfirmasi PIN Anda"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN tidak cocok"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN pesan suara diperbarui"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Tidak dapat menyetel PIN"</string>
 </resources>
diff --git a/res/values-is-rIS/arrays.xml b/res/values-is/arrays.xml
similarity index 100%
rename from res/values-is-rIS/arrays.xml
rename to res/values-is/arrays.xml
diff --git a/res/values-is/config.xml b/res/values-is/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-is/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is/strings.xml
similarity index 86%
rename from res/values-is-rIS/strings.xml
rename to res/values-is/strings.xml
index 0f46e79..a82f046 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Farsímagögn"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Farsímagögn"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Símaþjónusta"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Neyðarnúmeraval"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Sími"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Talhólfsnúmer vantar"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Ekkert talhólfsnúmer er vistað á SIM-kortinu."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Bæta númeri við"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Aðeins aðalnotandinn má breyta talhólfsstillingum."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Opnað var fyrir SIM-kortið. Verið er að opna símann…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN-númer SIM-korts til að opna síma"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Taka úr lás"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Biður um að símkerfi sé opnað…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ekki tókst að opna fyrir símkerfið."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Opnað var fyrir símkerfið."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Farsímakerfisstillingar eru ekki í boði fyrir þennan notanda"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Farsímakerfisstillingar eru ekki í boði fyrir þennan notanda"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-símtalsstillingar"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-símtalsstillingar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-símtalsstillingar"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Hringja með"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Hringja SIP-símtöl með"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Spyrja fyrst"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Engin nettenging tiltæk"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Stillingar"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Velja reikninga"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Símareikningar"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Talhólf"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Talhólf (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Talhólf:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Tilkynningar"</string>
     <string name="networks" msgid="8873030692174541976">"Símafyrirtæki"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Neyðarútsendingar"</string>
     <string name="call_settings" msgid="6112441768261754562">"Símtalsstillingar"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Þegar ekki næst í þig"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Númeraval þegar ekki næst í símann"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Áframsendir í <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Slökkt"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Slökkt"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Símafyrirtækið leyfir ekki að slökkt sé á símtalsflutningi þegar ekki næst í símann."</string>
     <string name="updating_title" msgid="6146755386174019046">"Símtalsstillingar"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Aðeins aðalnotandinn má breyta símtalsstillingum."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Aðeins stjórnandinn má breyta símtalsstillingum."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Stillingar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Villa í símtalsstillingum"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Les stillingar…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Engu var breytt."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Velja talhólfsþjónustu"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Símafyrirtækið þitt"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Farsímakerfisstillingar"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gamla PIN-númerið"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nýtt PIN-númer"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Augnablik."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nýja PIN-númerið er of stutt."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nýja PIN-númerið er of langt."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nýja PIN-númerið er ekki nógu sterkt. Sterk aðgangsorð mega ekki vera með tölustafi í beinni röð eða endurtekna tölustafi."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Gamla PIN-númerið passar ekki."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Nýja PIN-númerið inniheldur ógilda stafi."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Ekki var hægt að breyta PIN-númerinu"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Óstudd skilaboðagerð, hringdu í <xliff:g id="NUMBER">%s</xliff:g> til að hlusta."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Stillingar farsímakerfis"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Farsímakerfi"</string>
     <string name="label_available" msgid="1181658289009300430">"Símkerfi í boði"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Leitar…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Engin símkerfi fundust."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Skráð á símkerfi."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Veldu símafyrirtæki"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Leita að öllum tiltækum símkerfum"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Velja sjálfkrafa"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Velja sjálfkrafa kjörsímkerfi"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Velja netkerfi sjálfkrafa"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Netkerfi"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Sjálfvirk skráning…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Valin símkerfistegund"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Breyta virknihætti símkerfis"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM eingöngu"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA fyrsta val"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Hringir"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Netkerfi"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"endurbætt 4G LTE-stilling"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Betri símtöl"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Nota LTE-þjónustu til að bæta talsamband og önnur samskipti (ráðlagt)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Kveikt á gagnaaðgangi"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Leyfa gagnanotkun"</string>
-    <string name="roaming" msgid="8871412572928323707">"Gagnareiki"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Athugaðu"</string>
+    <string name="roaming" msgid="7894878421600247140">"Reiki"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Tengjast gagnaþjónustu í reiki"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Tengjast gagnaþjónustu í reiki"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Gagnatengingin rofnaði vegna þess að þú ert utan heimakerfis með slökkt á gagnareiki."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Þetta getur haft mikinn kostnað í för með sér."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Leyfa gagnareiki?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Gagnanotkun"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> farsímagögn notuð á tímabilinu <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Símafyrirtæki"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Farsímagögn"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Aðgangur að gögnum um farsímakerfi"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi símtöl"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Myndsímtöl um símkerfi"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Valkostir GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-valkostir"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Gagnanotkun"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> hámarki náð\nGagnahraði minnkaður í <xliff:g id="USED_1">%2$d</xliff:g> kB/sek."</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ af tímabili lokið\nNæsta tímabil hefst eftir <xliff:g id="USED_1">%2$d</xliff:g> daga (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Gagnahraði minnkaður í <xliff:g id="USED">%1$d</xliff:g> kB/sek. ef farið er yfir gagnanotkunarmörk"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Frekari upplýsingar um gagnanotkunarreglur símafyrirtækisins"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Frekari upplýsingar um reglur símafyrirtækisins um gagnanotkun"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS-skilaboð frá endurvarpa"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS-skilaboð frá endurvarpa"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Kveikt á SMS-skilaboðum frá endurvarpa"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Bæta tengilið við"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Breyta tengilið"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Eyða tengilið"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Hringja í tengilið"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Sláðu inn PIN2-númerið"</string>
     <string name="name" msgid="7329028332786872378">"Nafn"</string>
     <string name="number" msgid="7905950798349903858">"Símanúmer"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Eyða föstu númeravali…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Föstu númeravali eytt."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Fast númeraval var ekki uppfært því að þú slóst inn rangt PIN-númer."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Fast númeraval var ekki uppfært því að númerið getur ekki verið lengra en 20 tölustafir."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Fast númeraval var ekki uppfært því að númerið er autt eða er lengra en 20 tölustafir."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Fast númeraval var ekki uppfært. PIN2-númerið var rangt eða símanúmerinu var hafnað."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Aðgerð fasts númeravals mistókst."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Les af SIM-korti…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Talhólfsnúmer ekki þekkt"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ekkert símasamband"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Valið símkerfi (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ekki tiltækt"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Slökktu á flugstillingu til að hringja."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Kveiktu á farsímakerfie eða slökktu á flugstillingu eða rafhlöðusparnaði til að hringja."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Slökktu á flugstillingu til að hringja."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slökktu á flugstillingu eða tengstu þráðlausu neti til að hringja."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Hætta í stillingu fyrir svarhringingu neyðarsímtala til að hringja símtal sem ekki er neyðarsímtal."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ekki skráð á símkerfi."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Farsímakerfi ekki til staðar."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Farsímakerfi er ekki í boði. Tengstu þráðlausu neti til að hringja."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Farsímakerfi ekki tiltækt."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Farsímakerfi er ekki tiltækt. Tengstu þráðlausu neti til að hringja."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Sláðu inn gilt númer til að hringja símtal."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Ekki hægt að hringja."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Ræsir MMI-runu…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Tókst ekki að hringja."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Ekki er hægt að bæta símtali við sem stendur."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Þjónusta ekki studd"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Ekki hægt að skipta milli símtala."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Ekki hægt að aðskilja símtal."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ekki hægt að halda símafund."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ekki hægt að hafna símtali."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ekki hægt að leggja á."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Getur ekki sett símtöl í bið."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Tengstu þráðlausu neti til að hringja."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Virkjaðu Wi-Fi símtöl til að hringja."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Neyðarsímtal"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Kveikir á loftneti…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ekkert samband. Reynir aftur…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Ekki er hægt að fara í flugstillingu meðan neyðarsímtal er í gangi."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Ekki hægt að hringja. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> er ekki neyðarnúmer."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Ekki hægt að hringja. Hringdu í neyðarnúmer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Notaðu lyklaborðið til að hringja"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Flytja allt inn"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Flytur inn tengiliði af SIM-korti"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Flytja inn úr tengiliðum"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Tengiliður fluttur inn"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Mistókst að flytja inn tengilið"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Heyrnartæki"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Kveikja á samhæfi við heyrnartæki"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Stilling fyrir svarhringingu neyðarsímtala virk"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Stilling fyrir svarhringingu neyðarsímtala"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Slökkt á gagnatengingu"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Engin gagnatenging í <xliff:g id="COUNT_1">%s</xliff:g> mínútu</item>
-      <item quantity="other">Engin gagnatenging í <xliff:g id="COUNT_1">%s</xliff:g> mínútur</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Engin gagnatenging þangað til <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT_1">%s</xliff:g> mínútu. Þegar hann er í þessari stillingu er ekki hægt að nota nein forrit sem krefjast gagnatengingar. Viltu hætta núna?</item>
       <item quantity="other">Síminn verður í stillingu fyrir svarhringingu neyðarsímtala í <xliff:g id="COUNT_1">%s</xliff:g> mínútur. Þegar hann er í þessari stillingu er ekki hægt að nota nein forrit sem krefjast gagnatengingar. Viltu hætta núna?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"velja tengilið"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Símtöl eru ekki studd"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"hringja"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Titringur"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Titringur"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Myndrænt talhólf"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Hljóð"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Stilla PIN-númer"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Breyta PIN-númeri"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Hringitónn og titringur"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Innbyggð SIM-kort"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Kveikja á myndsímtölum"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Eingöngu neyðarsímtöl"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kort, rauf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Aðgengi"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi símtal berst"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi símtal frá"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi símtal"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Snertu aftur til að opna"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ýttu aftur til að opna"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Villa kom upp við að afkóða skeytið."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-kort hefur virkjað þjónustuna þína og uppfært reikigetu símans."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Of mörg símtöl eru virk. Ljúktu eða sameinaðu fyrirliggjandi símtöl áður en þú hringir nýtt."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ekki var hægt að tengjast, notaðu gilt SIM-kort."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi tengingin rofnaði. Símtalinu lauk."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Breyta PIN-númeri talhólfs"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Halda áfram"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Hætta við"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Í lagi"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Staðfestu gamla PIN-númerið"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Sláðu inn PIN-númerið fyrir talhólf til að halda áfram."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Veldu nýtt PIN-númer"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-númerið verður að vera <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> tölustafir."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Staðfestu PIN-númerið"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-númerin stemma ekki"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-númer fyrir talhólf uppfært"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Ekki hægt að stilla PIN-númer"</string>
 </resources>
diff --git a/res/values-it/config.xml b/res/values-it/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-it/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index a0d54c3..955197a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dati mobili"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dati cellulare"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Phone Services"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Chiamata di emergenza"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefono"</string>
@@ -32,7 +32,7 @@
     <string name="enter_input" msgid="1810529547726803893">"Il messaggio USSD deve essere compreso tra <xliff:g id="MIN_LEN">%d</xliff:g> e <xliff:g id="MAX_LEN">%d</xliff:g> caratteri. Riprova."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestisci audioconferenza"</string>
     <string name="ok" msgid="3811371167865772377">"OK"</string>
-    <string name="audio_mode_speaker" msgid="27649582100085266">"Altoparlante"</string>
+    <string name="audio_mode_speaker" msgid="27649582100085266">"Vivavoce"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Auricolare telefono"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Auricolare con cavo"</string>
     <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Numero segreteria mancante"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Nessun numero di segreteria presente nella SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Aggiungi numero"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Le impostazioni della segreteria possono essere modificate solo dall\'utente principale."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"La SIM è stata sbloccata. Sblocco del telefono..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN sblocco rete SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Sblocca"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Richiesta sblocco rete..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Richiesta di sblocco della rete respinta."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sblocco della rete riuscito."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Le impostazioni per reti cellulari non sono disponibili per questo utente"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Le impostazioni per dispositivi mobili non sono disponibili per questo utente"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Imp. chiamate GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Impostazioni di chiamata GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Impostazioni di chiamata CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Effettua chiamate con"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Effettua chiamate SIP con"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Chiedi prima"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nessuna rete disponibile"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Impostazioni"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Seleziona account"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Account telefono"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Segreteria"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Segreteria (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ST:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notifiche"</string>
     <string name="networks" msgid="8873030692174541976">"Operatori di rete"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Trasmissioni di emergenza"</string>
     <string name="call_settings" msgid="6112441768261754562">"Impostazioni chiamate"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Quando non raggiungibile"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numero se non raggiungibile"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Deviazione al numero <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Disattivato"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Non attiva"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Il tuo operatore non supporta la disattivazione dell\'inoltro chiamate quando il telefono non è raggiungibile."</string>
     <string name="updating_title" msgid="6146755386174019046">"Impostazioni chiamate"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Le impostazioni delle chiamate possono essere modificate solo dall\'utente principale."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Le impostazioni delle chiamate possono essere modificate solo dall\'utente amministratore."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Impostazioni (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Errore durante aggiornam. impostaz. chiamate"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lettura impostazioni..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nessuna modifica effettuata."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Scegli il servizio di segreteria"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatore"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Impostazioni rete cellulare"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Vecchio PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nuovo PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Attendi."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Il nuovo PIN è troppo corto."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Il nuovo PIN è troppo lungo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Il nuovo PIN è troppo semplice. Una password efficace non deve contenere sequenze continue o cifre ripetute."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Il vecchio PIN non corrisponde."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Il nuovo PIN contiene caratteri non validi."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Impossibile cambiare il PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipo di messaggio non supportato, chiama <xliff:g id="NUMBER">%s</xliff:g> per ascoltare."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Impostazioni reti mobili"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rete mobile"</string>
     <string name="label_available" msgid="1181658289009300430">"Reti disponibili"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Ricerca..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nessuna rete trovata."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrato sulla rete."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Scegli un operatore di rete"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Cerca tutte le reti disponibili"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Scegli automaticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Scegli automaticamente la rete preferita"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Seleziona automaticamente la rete"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rete"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registrazione automatica..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo di rete preferito"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Cambia la modalità di funzionamento della rete"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Solo GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferito"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Chiamata in corso"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rete"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modalità 4G LTE avanzata"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Chiamata avanzata"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Usa i servizi LTE per migliorare la voce e le altre comunicazioni (consigliato)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dati attivati"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Consenti l\'utilizzo dei dati"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming dati"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Attenzione"</string>
+    <string name="roaming" msgid="7894878421600247140">"In roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Connessione a servizi di dati in caso di roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Connessione a servizi di dati in roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Connettività dati persa: hai lasciato la rete del tuo operatore con il roaming dati disattivato."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"I costi potrebbero essere elevati."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Consentire il roaming dei dati?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Utilizzo dati"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Utilizzo dati del dispositivo mobile: <xliff:g id="ID_1">%1$s</xliff:g> nel periodo <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatore"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Dati mobili"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Accedi ai dati utilizzando la rete mobile"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Chiamate Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videochiamata dell\'operatore"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opzioni GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opzioni CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Utilizzo dati"</string>
@@ -222,7 +248,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> max superato\nVelocità dati ridotta a <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>% del ciclo trascorso\nIl periodo succ. inizia tra <xliff:g id="USED_1">%2$d</xliff:g> gg (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Velocità dati ridotta a <xliff:g id="USED">%1$d</xliff:g> Kb/s se limite utilizzo dati superato"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Informazioni su norme di utilizzo dati della rete cellulare dell\'operatore"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Informazioni sulla norme di utilizzo dati della rete cellulare del gestore"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS cell broadcast"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS cell broadcast"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS cell broadcast attivato"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Aggiungi contatto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Modifica contatto"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Elimina contatto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Componi numero contatto"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Digita PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nome"</string>
     <string name="number" msgid="7905950798349903858">"Numero"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Eliminazione numero selezione fissa..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numero di selezione fissa eliminato."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN non aggiornato perché il PIN inserito non è corretto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN non è stato aggiornato perché il numero non può superare 20 cifre."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN non è stato aggiornato perché il numero è vuoto o contiene più di 20 cifre."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN non aggiornato. Il codice PIN2 non era corretto o il numero di telefono è stato rifiutato."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operazione FDN non riuscita."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lettura da SIM..."</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numero segreteria sconosciuto"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nessun servizio"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rete selezionata (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) non disponibile"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Disattiva la modalità aereo per effettuare una chiamata."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Attiva la rete mobile e disattiva la modalità aereo o il risparmio energetico per effettuare una chiamata."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Disattiva la modalità aereo per effettuare una chiamata."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Disattiva la modalità aereo o connettiti a una rete wireless per effettuare una chiamata."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Per effettuare chiamate non di emergenza, esci dalla modalità di richiamata di emergenza."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Non registrato sulla rete."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rete cellulare non disponibile."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"La rete cellulare non è disponibile. Connettiti a una rete wireless per effettuare una chiamata."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rete cellulare non disponibile."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"La rete cellulare non è disponibile. Connettiti a una rete wireless per effettuare una chiamata."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Per effettuare una chiamata, inserisci un numero valido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Impossibile chiamare."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Inizio sequenza MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Chiamata non riuscita."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Al momento non è possibile aggiungere la chiamata."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Servizio non supportato"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Impossibile cambiare chiamata."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Impossibile separare la chiamata."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Audioconferenze non disponibili"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Impossibile rifiutare la chiamata."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Impossibile riagganciare."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Impossibile mettere in attesa le chiamate."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Connettiti a una rete wireless per effettuare una chiamata."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Attiva le chiamate tramite Wi-Fi per effettuare una chiamata."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chiamata di emergenza"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Attivazione segnale cellulare..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nessun servizio. Nuovo tentativo…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Impossibile attivare la modalità aereo durante una chiamata di emergenza."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Impossibile chiamare. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> non è un numero di emergenza."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Impossibile chiamare. Componi un numero di emergenza."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Usa tastiera"</string>
@@ -468,11 +499,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importa tutti"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importazione contatti SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importa da contatti"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contatto importato"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Importazione contatto non riuscita"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Apparecchi acustici"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Attiva la compatibilità con apparecchi acustici"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY disattivato"</item>
-    <item msgid="3971695875449640648">"TTY completa"</item>
+    <item msgid="3971695875449640648">"TTY completo"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modalità di richiamata di emergenza attivata"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modalità di richiamata di emergenza"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Connessione dati disabilitata"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Nessuna connessione dati per <xliff:g id="COUNT_1">%s</xliff:g> minuti</item>
-      <item quantity="one">Nessuna connessione dati per <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Nessuna connessione dati fino alle ore <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Il telefono sarà in modalità Richiamata di emergenza per <xliff:g id="COUNT_1">%s</xliff:g> minuti. In questa modalità non è possibile utilizzare applicazioni che impiegano una connessione dati. Vuoi uscire ora?</item>
       <item quantity="one">Il telefono sarà in modalità Richiamata di emergenza per <xliff:g id="COUNT_0">%s</xliff:g> minuto. In questa modalità non è possibile utilizzare app che impiegano una connessione dati. Vuoi uscire ora?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"seleziona contatto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Chiamate vocali non supportate"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"componi"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrazione"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrazione"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Leggi la segreteria"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Suono"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Imposta PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Cambia PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Suoneria e vibrazione"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Schede SIM integrate"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Attiva videochiamata"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Solo chiamate di emergenza"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Scheda SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibilità"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chiamata Wi-Fi in arrivo"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Chiamata Wi-Fi da"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chiamata Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tocca di nuovo per aprire"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tocca di nuovo per aprire"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Si è verificato un errore durante la decodifica del messaggio."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Una scheda SIM ha attivato il tuo servizio e ha aggiornato le funzionalità di roaming del telefono."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ci sono troppe chiamate attive. Termina o unisci le chiamate esistenti prima di effettuarne una nuova."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Impossibile collegarsi. Inserisci una scheda SIM valida."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Connessione Wi-Fi interrotta. Chiamata terminata."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Cambia PIN segreteria"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continua"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Annulla"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Conferma il PIN precedente"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Inserisci il PIN della segreteria per continuare."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Imposta un nuovo PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Il PIN deve contenere da <xliff:g id="MIN">%1$d</xliff:g> a <xliff:g id="MAX">%2$d</xliff:g> cifre."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Conferma il tuo PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"I PIN non corrispondono"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN segreteria aggiornato"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Impossibile impostare il PIN"</string>
 </resources>
diff --git a/res/values-iw/config.xml b/res/values-iw/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-iw/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3d6329e..3d5f3ce 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"נתונים סלולריים"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"נתוני נייד"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"שירותי טלפון"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"חייגן חירום"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"טלפון"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"‏רשימת FDN"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"רשימת מספרי חיוג קבועים"</string>
     <string name="unknown" msgid="6878797917991465859">"לא ידוע"</string>
     <string name="private_num" msgid="6713286113000232309">"מספר פרטי"</string>
     <string name="payphone" msgid="4793877574636445118">"טלפון ציבורי"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"חסר מספר של דואר קולי"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"‏בכרטיס ה-SIM לא מאוחסן מספר של דואר קולי."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"הוסף מספר"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"רק המשתמש הראשי יכול לשנות את ההגדרות של הדואר הקולי."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"‏בוטלה החסימה של כרטיס SIM. מבטל את חסימת הטלפון..."</string>
     <string name="label_ndp" msgid="780479633159517250">"‏PIN לביטול נעילה של רשת SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"בטל נעילה"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"מבקש ביטול נעילת רשת..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"הבקשה לביטול נעילת הרשת נכשלה."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ביטול נעילת הרשת התבצע בהצלחה."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"הגדרות רשת סלולרית אינן זמינות עבור המשתמש הזה"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"הגדרות של רשת סלולרית אינן זמינות עבור המשתמש הזה"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏הגדרות שיחה של GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"‏הגדרות שיחת GSM ‏(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏הגדרות שיחה של CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"בצע שיחות באמצעות"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"‏בצע שיחות SIP באמצעות"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"שאל לפני ביצוע"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"אין רשתות זמינות"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"הגדרות"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"בחר חשבונות"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"חשבונות טלפון"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"דואר קולי"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"דואר קולי (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"דואר קולי:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"עדכונים"</string>
     <string name="networks" msgid="8873030692174541976">"מפעילי רשת"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"שידורי חירום"</string>
     <string name="call_settings" msgid="6112441768261754562">"הגדרות שיחה"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"כאשר לא נגיש"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"המספר לחיוג כשלא ניתן להשיג"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"מעביר אל <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"מושבת"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"כבוי"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"הספק שלך לא תומך בהשבתה של העברת שיחות כאשר הטלפון כבוי."</string>
     <string name="updating_title" msgid="6146755386174019046">"הגדרות שיחה"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"רק המשתמש הראשי יכול לשנות הגדרות שיחה."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"רק מנהל המערכת יכול לשנות הגדרות שיחה."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"הגדרות (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"שגיאה בהגדרות שיחה"</string>
     <string name="reading_settings" msgid="1920291699287055284">"קורא הגדרות…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"לא בוצעו שינויים."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"בחר שירות של דואר קולי"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"הספק שלך"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"הגדרות רשת סלולרית"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"קוד גישה ישן"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"קוד גישה חדש"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"אנא המתן."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"קוד הגישה החדש קצר מדי."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"קוד הגישה החדש ארוך מדי."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"קוד הגישה החדש חלש מדי. בסיסמה חזקה אסור שיהיו ספרות ברצף מספרי או ספרות שחוזרות על עצמן."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"קוד הגישה הישן אינו תואם."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"קוד הגישה החדש מכיל תווים לא חוקיים."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"לא ניתן לשנות את קוד הגישה"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"סוג ההודעה לא נתמך. התקשר למספר <xliff:g id="NUMBER">%s</xliff:g> כדי להאזין לה."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"הגדרות רשת סלולרית"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"רשת סלולרית"</string>
     <string name="label_available" msgid="1181658289009300430">"רשתות זמינות"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"מחפש..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"לא נמצאו רשתות."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"רשום ברשת."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"בחר ספק רשת"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"חפש את כל הרשתות הזמינות"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"בחר אוטומטית"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"בחר רשת מועדפת באופן אוטומטי"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"בחירה אוטומטית של הרשת"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"רשת"</string>
     <string name="register_automatically" msgid="6017849844573519637">"רישום אוטומטי..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"סוג רשת מועדף"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"שנה את מצב ההפעלה של הרשת"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"‏GSM בלבד"</item>
     <item msgid="3817924849415716259">"‏GSM/WCDMA מועדף"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"שיחות"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"רשת"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"‏מצב 4G LTE משופר"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"שיחה משופרת"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"‏השתמש בשירותי LTE כדי לשפר את הקול ודרכי תקשורת אחרות (מומלץ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"נתונים מופעלים"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"התר שימוש בנתונים"</string>
-    <string name="roaming" msgid="8871412572928323707">"נדידת נתונים"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"זהירות"</string>
+    <string name="roaming" msgid="7894878421600247140">"נדידה"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"התחבר לשירותי נתונים בעת נדידה"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"התחבר לשירותי נתונים בעת נדידה"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"איבדת את קישוריות הנתונים כיוון שעזבת את הרשת הביתית כשהנדידה כבויה."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ייתכנו שיעורי חיוב גבוהים."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"האם לאפשר נדידה?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"שימוש בחבילת הגלישה"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"השתמשת ב-<xliff:g id="ID_1">%1$s</xliff:g> מחבילת הגלישה בתאריכים <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ספק"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"חבילת גלישה"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"שימוש בחבילת הגלישה דרך הרשת הסלולרית"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"‏שיחות Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"שיחות וידאו באמצעות הספק הסלולרי"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"‏אפשרויות GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"‏אפשרויות CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"שימוש בנתונים"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"‏<xliff:g id="USED_0">%1$s</xliff:g> חריגה מהמקסימום\nקצב הנתונים ירד ל-‏‎<xliff:g id="USED_1">%2$d</xliff:g> Kb לשנייה"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>?? מהמחזור חלפו\nהתקופה הבאה מתחילה בעוד <xliff:g id="USED_1">%2$d</xliff:g> ימים (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"‏קצב הנתונים יורד ל-‏‎<xliff:g id="USED">%1$d</xliff:g> Kb לשנייה במקרה של חריגה ממגבלת השימוש בנתונים"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"מידע נוסף על מדיניות השימוש בנתונים ברשת הסלולרית של הספק שלך"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"למידע נוסף על מדיניות השימוש בנתונים ברשת הסלולרית של הספק שלך"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"‏SMS בשידור סלולרי"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"‏SMS בשידור סלולרי"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"‏SMS בשידור סלולרי מופעל"</string>
@@ -332,18 +358,18 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"הגדרות ספק"</string>
     <string name="fdn" msgid="7878832555095183202">"מספרי חיוג קבועים"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"מספרי חיוג קבועים (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"‏רשימת FDN"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"‏רשימת FDN ‏(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"‏הפעלת FDN"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"רשימת מספרי חיוג קבועים"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"רשימת מספרי חיוג קבועים ‏(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"הפעלת מספרי חיוג קבועים"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"מספרי חיוג קבועים מופעלים"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"מספרי חיוג קבועים מושבתים"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"‏הפוך FDN לפעיל"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"‏השבת FDN"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"הפעלת מספרי חיוג קבועים"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"השבתת מספרי חיוג קבועים"</string>
     <string name="change_pin2" msgid="2153563695382176676">"‏שנה PIN2"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"‏השבת FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"‏הפוך FDN לפעיל"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"השבת מספרי חיוג קבועים"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"הפעל מספרי חיוג קבועים"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"נהל מספרי חיוג קבועים"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"‏שנה את ה-PIN לקבלת גישת FDN"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"שנה את קוד הגישה למספרי חיוג קבועים"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"נהל רשימת מספרי טלפון"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"פרטיות קול"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"הפוך מצב פרטיות משופרת לפעיל"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"הוסף איש קשר"</string>
     <string name="menu_edit" msgid="7143003705504672374">"ערוך איש קשר"</string>
     <string name="menu_delete" msgid="3977150783449642851">"מחק איש קשר"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"חיוג לאיש הקשר"</string>
     <string name="get_pin2" msgid="8204677063922225311">"‏הקלד PIN2"</string>
     <string name="name" msgid="7329028332786872378">"שם"</string>
     <string name="number" msgid="7905950798349903858">"מספר"</string>
@@ -368,9 +395,9 @@
     <string name="delete_fdn_contact" msgid="6668958073074151717">"מחק מספר חיוג קבוע"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"מוחק מספר חיוג קבוע..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"מספר חיוג קבוע נמחק."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"‏ה-FDN לא עודכן כיוון שהקלדת PIN שגוי."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"‏ה-FDN לא עודכן משום שהמספר חורג ממגבלת 20 הספרות."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"‏FDN לא עודכן. קוד PIN2 היה שגוי או שמספר הטלפון נדחה."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"רשימת מספרי חיוג קבועים לא עודכנה מכיוון שקוד הגישה שגוי."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"‏ה-FDN לא עודכן מכיוון שהמספר ריק או ארוך מ-20 תווים."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"רשימת מספרי החיוג הקבועים לא עודכנה. קוד הגישה היה שגוי או שמספר הטלפון נדחה."</string>
     <string name="fdn_failed" msgid="540018079008319747">"‏פעולת FDN נכשלה."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"‏קורא מכרטיס SIM…"</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"‏אין אנשי קשר בכרטיס ה-SIM."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"המספר של הדואר הקולי אינו ידוע"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"אין שירות"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"הרשת שנבחרה (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) לא זמינה"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"בטל את מצב טיסה כדי לבצע שיחה."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"עליך להפעיל את הרשת הסלולרית, להשבית את מצב הטיסה או להשבית את מצב החיסכון בסוללה כדי להתקשר."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"בטל את מצב טיסה כדי לבצע שיחה."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"בטל את מצב טיסה או התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"עליך לצאת ממצב חירום של התקשרות חזרה כדי לבצע שיחות שאינן שיחות חירום."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"לא רשום ברשת."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"רשת סלולרית אינה זמינה."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"רשת סלולרית אינה זמינה. התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"הרשת הסלולרית אינה זמינה."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"הרשת הסלולרית לא זמינה. עליך להתחבר לרשת אלחוטית כדי להתקשר."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"כדי להתקשר, הזן מספר טלפון חוקי."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"לא ניתן להתקשר."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"‏מתחיל רצף MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"השיחה נכשלה."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"לא ניתן להוסיף את השיחה כרגע."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"שירות לא נתמך"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"לא ניתן לעבור בין שיחות."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"לא ניתן להפריד שיחה."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"אין אפשרות לנהל שיחות ועידה."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"לא ניתן לדחות שיחה."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"לא ניתן לשחרר שיחות."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"לא ניתן להחזיק שיחות."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"התחבר לרשת אלחוטית כדי לבצע שיחה."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"‏הפעל את \'שיחות Wi-Fi\' כדי להתקשר."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"שיחת חירום"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"מפעיל את הרדיו…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"אין שירות. מנסה שוב..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"אי אפשר לעבור למצב טיסה בזמן שיחת חירום."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"לא ניתן להתקשר. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> אינו מספר חירום."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"לא ניתן להתקשר. חייג למספר חירום."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"השתמש במקלדת כדי לחייג"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"ייבא הכל"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"‏מייבא אנשי קשר מ-SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"ייבא מאנשי קשר"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"איש הקשר יובא"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"ייבוא איש הקשר נכשל"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"מכשירי שמיעה"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"הפעל תאימות למכשיר שמיעה"</string>
   <string-array name="tty_mode_entries">
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"נכנס למצב חירום של התקשרות חזרה"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"מצב חירום של התקשרות חזרה"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"חיבור נתונים מושבת"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="two">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
-      <item quantity="many">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
-      <item quantity="other">ללא חיבור נתונים למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות</item>
-      <item quantity="one">ללא חיבור נתונים למשך דקה <xliff:g id="COUNT_0">%s</xliff:g></item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"אין חיבור לרשת נתונים עד <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="two">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
       <item quantity="many">הטלפון יהיה במצב חירום של התקשרות חזרה למשך <xliff:g id="COUNT_1">%s</xliff:g> דקות. בזמן שהטלפון במצב הזה, לא ניתן להשתמש באפליקציות הזקוקות לחיבור נתונים. האם ברצונך לצאת כעת?</item>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"בחר איש קשר"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"חיוג קולי אינו נתמך"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"חייג"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"רטט"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"רטט"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"דואר קולי ויזואלי"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"צליל"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"הגדרת קוד גישה"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"שינוי קוד הגישה"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"רינגטון ורטט"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"‏כרטיסי SIM מובנים"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"הפעל שיחות וידאו"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"שיחות חירום בלבד"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"‏כרטיס SIM, חריץ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"נגישות"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"‏שיחת Wi-Fi נכנסת"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"‏שיחת Wi-Fi מאת"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"‏שיחת Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"גע שוב כדי לפתוח"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"הקש שוב כדי לפתוח"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"אירעה שגיאה בעת פענוח ההודעה."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"‏כרטיס SIM הפעיל את השירות שלך ועדכן את יכולות הנדידה של הטלפון."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"יש יותר מדי שיחות פעילות. כדי להתחיל שיחה חדשה עליך לסיים או למזג חלק מהשיחות הפעילות."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"‏לא ניתן להתחבר. הכנס כרטיס SIM תקין."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"‏השיחה הסתיימה כי החיבור לרשת ה-Wi-Fi נותק."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"שינוי של קוד הגישה לדואר הקולי"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"המשך"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ביטול"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"אישור"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"אשר את קוד הגישה הישן"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"הזן את קוד הגישה לדואר הקולי כדי להמשיך."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"הגדר קוד גישה חדש"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"האורך של קוד הגישה חייב להיות <xliff:g id="MAX">%2$d</xliff:g>-<xliff:g id="MIN">%1$d</xliff:g> ספרות."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"אשר את קוד הגישה"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"קודי הגישה אינם תואמים"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"קוד הגישה לדואר הקולי עודכן"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"לא ניתן להגדיר את קוד הגישה"</string>
 </resources>
diff --git a/res/values-ja/config.xml b/res/values-ja/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ja/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 72c2d08..3d05d5e 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"モバイルデータ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"モバイルデータ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"電話サービス"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"緊急通報"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"電話"</string>
@@ -33,7 +33,7 @@
     <string name="manageConferenceLabel" msgid="4691922394301969053">"グループ通話オプション"</string>
     <string name="ok" msgid="3811371167865772377">"OK"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"スピーカー"</string>
-    <string name="audio_mode_earpiece" msgid="4156527186373869107">"携帯端末のイヤホン"</string>
+    <string name="audio_mode_earpiece" msgid="4156527186373869107">"モバイル端末のイヤホン"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"有線ヘッドセット"</string>
     <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth"</string>
     <string name="wait_prompt_str" msgid="7601815427707856238">"次の番号を送信しますか?\n"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ボイスメール番号がありません"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIMカードにボイスメールの番号がありません。"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"番号を追加"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ボイスメール設定を変更できるのはメインユーザーのみに限られています。"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIMカードロックを解除しました。端末のロックを解除しています..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIMネットワークのロック解除PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ロック解除"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ネットワークのロック解除をリクエスト中..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ネットワークロックを解除できませんでした。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ネットワークロックを解除しました。"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"このユーザーはモバイルネットワーク設定を利用できません。"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"このユーザーはモバイルネットワーク設定を利用できません。"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM通話設定"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM通話設定(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA通話設定"</string>
@@ -63,9 +64,10 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"発信先"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP通話の発信先"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"最初に確認する"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"利用できるネットワークなし"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"設定"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"アカウントを選択"</string>
-    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"携帯端末アカウント"</string>
+    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"モバイル端末アカウント"</string>
     <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIPアカウントを追加"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"アカウントを設定"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"すべての通話アカウント"</string>
@@ -75,8 +77,9 @@
     <string name="voicemail" msgid="8693759337917898954">"ボイスメール"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ボイスメール(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"通知"</string>
     <string name="networks" msgid="8873030692174541976">"通信事業者"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急警報"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急速報メール"</string>
     <string name="call_settings" msgid="6112441768261754562">"通話設定"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"その他の設定"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"その他の設定(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"着信不能時"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"着信不能時の転送番号"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g>に転送する"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"無効"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"OFF"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ご利用の携帯通信会社は着信不能時の転送の無効化をサポートしていません。"</string>
     <string name="updating_title" msgid="6146755386174019046">"通話設定"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"通話設定はメインユーザーのみが変更できます。"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"通話設定は管理者ユーザーのみが変更できます。"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"設定(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"通話設定エラー"</string>
     <string name="reading_settings" msgid="1920291699287055284">"設定を読み取り中..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"変更されていません。"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ボイスメールサービスを選択"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"携帯通信会社"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"モバイルネットワーク設定"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"古い PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新しい PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"お待ちください。"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新しい PIN が短すぎます。"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新しい PIN が長すぎます。"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新しい PIN の強度が弱すぎます。パスワードには連続する文字や、数字の繰り返しは使用しないでください。"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"古い PIN が一致しません。"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"新しい PIN に無効な文字が含まれています。"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN を変更できませんでした"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"サポートされていないメッセージ タイプです。<xliff:g id="NUMBER">%s</xliff:g> 宛に電話をかけてメッセージをお聞きください。"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"モバイルネットワーク設定"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"モバイル ネットワーク"</string>
     <string name="label_available" msgid="1181658289009300430">"利用可能なネットワーク"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"検索中..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ネットワークが見つかりません。"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"ネットワークに登録されました。"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"通信事業者を選択する"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"利用可能なすべてのネットワークを検索する"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"自動的に選択"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"最適なネットワークを自動的に選択する"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ネットワークを自動的に選択"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ネットワーク"</string>
     <string name="register_automatically" msgid="6017849844573519637">"自動登録..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"優先ネットワークタイプ"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ネットワーク動作モードの変更"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSMのみ"</item>
     <item msgid="3817924849415716259">"GSM/WCDMAを優先"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"通話"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ネットワーク"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"4G LTE拡張モード"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"高度な通話機能"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTEサービスを使用して音声などの通信を改善する(推奨)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"データ通信を有効にする"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"データ使用を許可"</string>
-    <string name="roaming" msgid="8871412572928323707">"データローミング"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"注意"</string>
+    <string name="roaming" msgid="7894878421600247140">"ローミング"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ローミング時にデータサービスに接続する"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"ローミング時にデータサービスに接続する"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"データローミングをOFFにしてホームネットワークを離れたため、データ接続が切断されました。"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"高額な通信料が発生することがあります。"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"データローミングを許可しますか?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"データ使用量"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g>のモバイルデータ使用量: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"携帯通信会社"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"モバイルデータ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"モバイル ネットワーク経由でデータにアクセス"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi 通話"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"携帯通信会社のビデオ通話"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTSオプション"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMAオプション"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"データ使用量"</string>
@@ -218,12 +244,12 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"最大値<xliff:g id="USED_0">%1$s</xliff:g>を超えました\n転送速度は<xliff:g id="USED_1">%2$d</xliff:g>Kb/秒に低下"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"サイクルの٪<xliff:g id="USED_0">%1$d</xliff:g>を経過\n次の期間は<xliff:g id="USED_1">%2$d</xliff:g>日で始まります(<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"データ利用制限を超えると、転送速度が<xliff:g id="USED">%1$d</xliff:g>Kb/秒まで低下します"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"携帯通信会社のモバイルネットワークデータ利用ポリシーの詳細"</string>
-    <string name="cell_broadcast_sms" msgid="5584192824053625842">"緊急警報SMS"</string>
-    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"緊急警報SMS"</string>
-    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"緊急警報SMSは有効になっています"</string>
-    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"緊急警報SMSは無効になっています"</string>
-    <string name="cb_sms_settings" msgid="651715019785107312">"緊急警報SMS設定"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"携帯通信会社のモバイルネットワークデータ利用ポリシーの詳細"</string>
+    <string name="cell_broadcast_sms" msgid="5584192824053625842">"緊急速報メール SMS"</string>
+    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"緊急速報メール SMS"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"緊急速報メール SMS は有効になっています"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"緊急速報メール SMS は無効になっています"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"緊急速報メール SMS 設定"</string>
     <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"緊急ブロードキャスト"</string>
     <string name="emergency_broadcast_enable" msgid="2645980025414010211">"緊急ブロードキャストは有効になっています"</string>
     <string name="emergency_broadcast_disable" msgid="3665199821267569426">"緊急ブロードキャストは無効になっています"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"連絡先を追加"</string>
     <string name="menu_edit" msgid="7143003705504672374">"連絡先を編集"</string>
     <string name="menu_delete" msgid="3977150783449642851">"連絡先を削除"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"連絡先に発信"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2を入力"</string>
     <string name="name" msgid="7329028332786872378">"名前"</string>
     <string name="number" msgid="7905950798349903858">"電話番号"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"発信番号制限を削除しています..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"発信番号制限を削除しました。"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"発信番号制限は更新されませんでした。入力したPINは正しくありません。"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"発信番号制限は更新されませんでした。20桁を超える番号は指定できません。"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"電話番号が空白になっているか、20 桁を超えているため、FDN を更新できませんでした。"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"発信番号制限は更新されませんでした。PIN2が正しくないか、電話番号が拒否されました。"</string>
     <string name="fdn_failed" msgid="540018079008319747">"発信番号制限操作に失敗しました。"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIMカードから読み取り中..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ボイスメールの番号が不明です"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"通信サービスなし"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"選択したネットワーク(<xliff:g id="OPERATOR_NAME">%s</xliff:g>)が利用できません"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"電話をかけるには機内モードをオフにしてください。"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"通話を発信するには、モバイル ネットワークを ON にし、機内モードまたはバッテリー セーバー モードを OFF にしてください。"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"電話をかけるには機内モードをオフにしてください。"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"電話をかけるには、機内モードをオフにするか無線ネットワークに接続してください。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"緊急通報以外の通話を発信するには、緊急通報待機モードを終了してください。"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ご加入の通信サービスがありません"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"モバイルネットワークが利用できません。"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"モバイルネットワークが利用できません。電話をかけるには無線ネットワークに接続してください。"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"モバイルネットワークが利用できません。"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"モバイル ネットワークを利用できません。電話をかけるにはワイヤレス ネットワークに接続してください。"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"発信するには、有効な番号を入力してください。"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"発信できません。"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMIシーケンスを開始中..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"発信できませんでした。"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"現在、通話を追加できません。"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"サービスはサポートされていません"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"通話を切り替えられません。"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"通話を分割できません。"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"グループ通話を利用できません。"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"着信を拒否できません。"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"通話を解放できません。"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"通話を保留にできません。"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"電話をかけるには無線ネットワークに接続してください。"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"電話をかけるには Wi-Fi 通話を有効にしてください。"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急通報"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"無線通信をONにしています..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"通信サービスはありません。もう一度お試しください…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"緊急通報中に機内モードに切り替えることはできません。"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"発信できません。<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g>は緊急通報番号ではありません。"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"発信できません。緊急通報番号におかけください。"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"キーボードで番号を入力してください"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"すべてインポート"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIMの連絡先をインポート中"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"連絡先からインポート"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"連絡先をインポートしました"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"連絡先をインポートできませんでした"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"補聴機能"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"補聴機能の互換をON"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY OFF"</item>
-    <item msgid="3971695875449640648">"TTYフル"</item>
+    <item msgid="3971695875449640648">"TTY フル"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -488,14 +521,14 @@
     <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"スキップして有効にしない場合、通話やモバイルデータネットワークの接続ができません(Wi-Fiネットワークには接続できます)。携帯を有効にするまでは、電源を入れるたびに有効にするかどうかを尋ねるメッセージが表示されます。"</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"スキップ"</string>
     <string name="ota_activate" msgid="1368528132525626264">"有効にする"</string>
-    <string name="ota_title_activate_success" msgid="6570240212263372046">"携帯端末が有効になりました。"</string>
+    <string name="ota_title_activate_success" msgid="6570240212263372046">"モバイル端末が有効になりました。"</string>
     <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"有効にする際のエラー"</string>
     <string name="ota_listen" msgid="162923839877584937">"完了したというメッセージが流れるまで音声ガイダンスに従ってください。"</string>
     <string name="ota_speaker" msgid="6904589278542719647">"スピーカー"</string>
     <string name="ota_progress" msgid="460876637828044519">"プログラムを設定しています…"</string>
     <string name="ota_failure" msgid="7713756181204620397">"プログラムを設定できませんでした"</string>
     <string name="ota_successful" msgid="1880780692887077407">"携帯が有効に設定されました。サービスが開始されるまで最大で15分ほどかかることがあります。"</string>
-    <string name="ota_unsuccessful" msgid="8072141612635635357">"携帯端末を有効にできませんでした。\n電波状態が悪い可能性があります。\n\n電波の良い場所(窓のそばや屋外)に移動してもう一度お試しいただくか、カスタマーサービスに他の方法をお問い合わせください。"</string>
+    <string name="ota_unsuccessful" msgid="8072141612635635357">"モバイル端末を有効にできませんでした。\n電波状態が悪い可能性があります。\n\n電波の良い場所(窓のそばや屋外)に移動してもう一度お試しいただくか、カスタマーサービスに他の方法をお問い合わせください。"</string>
     <string name="ota_spc_failure" msgid="3909983542575030796">"超過SPCによる失敗"</string>
     <string name="ota_call_end" msgid="4537279738134612388">"戻る"</string>
     <string name="ota_try_again" msgid="7685477206465902290">"再試行"</string>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"緊急通報待機モードになりました"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急通報待機モード"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"データ接続が無効です"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g>分間データ接続できません</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g>分間データ接続できません</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> までデータ接続できません"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">スマートフォンはあと<xliff:g id="COUNT_1">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリは使用できません。今すぐこのモードを終了しますか?</item>
       <item quantity="one">スマートフォンはあと<xliff:g id="COUNT_0">%s</xliff:g>分間、緊急通報待機モードです。このモードではデータ通信を行うアプリは使用できません。今すぐこのモードを終了しますか?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"連絡先を選択"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"音声通話はサポートされていません"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"発信"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"バイブレーション"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"バイブレーション"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ビジュアルボイスメール"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"通知音"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN の設定"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN の変更"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"着信音とバイブレーション"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"内蔵のSIMカード"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ビデオハングアウトを有効にする"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"緊急通報のみ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIMカード、スロット: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ユーザー補助機能"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi通話が着信中"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi 通話の着信"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi通話"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"開くにはもう一度タップしてください"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"開くにはもう一度タップしてください"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"メッセージのデコード中にエラーが発生しました。"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIMカードでサービスが有効になり、スマートフォンのローミング機能が更新されています。"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"通話中の電話の数が多すぎます。新しく通話を発信するには、まず既存の通話を終了するか、統合してグループ通話にしてください。"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"接続できません。有効な SIM カードを挿入してください。"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi 接続が失われたため、通話が終了しました。"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ボイスメール PIN の変更"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"続行"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"キャンセル"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"古い PIN の確認"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"続行するにはボイスメール PIN を入力してください。"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"新しい PIN の設定"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN は <xliff:g id="MIN">%1$d</xliff:g>~<xliff:g id="MAX">%2$d</xliff:g> 桁にしてください。"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN の確認"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN が一致しません"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ボイスメール PIN を更新しました"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN を設定できません"</string>
 </resources>
diff --git a/res/values-ka-rGE/arrays.xml b/res/values-ka/arrays.xml
similarity index 100%
rename from res/values-ka-rGE/arrays.xml
rename to res/values-ka/arrays.xml
diff --git a/res/values-ka/config.xml b/res/values-ka/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ka/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka/strings.xml
similarity index 86%
rename from res/values-ka-rGE/strings.xml
rename to res/values-ka/strings.xml
index d5fc79c..b8dc851 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ფიჭური მონაცემები"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"მობილური ინტერნეტი"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ტელეფონის სერვისები"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"გადაუდებელი ზარი"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ტელეფონი"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ხმოვანი ფოსტის ნომერი არ არის"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM ბარათზე ხმოვანი ფოსტის ნომერი შენახული არ არის."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"ნომრის დამატება"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ხმოვანი ფოსტის პარამეტრების შეცვლა მხოლოდ ძირითად მომხმარებელს შეუძლია."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"თქვენი SIM ბარათი განიბლოკა. მიმდინარეობს თქვენი ტელეფონის განბლოკვა…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM ქსელის განბლოკვის PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"განბლოკვა"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ქსელის განბლოკვის მოთხოვნა…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ქსელის განბლოკვის მოთხოვნა წარუმატებლად დასრულდა."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ქსელის განბლოკვის მოთხოვნა წარმატებით დასრულდა."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ფიჭური ქსელის პარამეტრები ამ მომხმარებლისათვის მიუწვდომელია"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"მობილური ქსელის პარამეტრები ამ მომხმარებლისათვის მიუწვდომელია"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM ზარის პარამეტრები"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM ზარის პარამეტრები (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ზარის პარამეტრები"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ზარის განხორციელება"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP ზარების მიღება"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"წინასწარი შეკითხვა"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ქსელი მიუწვდომელია"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"პარამეტრები"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"აირჩიეთ ანგარიშები"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ტელეფონის ანგარიშები"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"ხმოვანი ფოსტა"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ხმოვანი ფოსტა (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"შეტყობინებები"</string>
     <string name="networks" msgid="8873030692174541976">"ქსელის ოპერატორები"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"სასწრაფო გადაცემები"</string>
     <string name="call_settings" msgid="6112441768261754562">"ზარის პარამეტრები"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"როდესაც მიუწვდომელია"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ნომერი, როდესაც მიუწვდომელია"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"გადამისამართება <xliff:g id="PHONENUMBER">{0}</xliff:g>-ზე"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"გამორთულია"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"გამორთული"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"თქვენს ოპერატორს ტელეფონის მიუწვდომელობის დროს ზარის გადამისამართების გაუქმების მხარდაჭერა არ გააჩნია."</string>
     <string name="updating_title" msgid="6146755386174019046">"ზარის პარამეტრები"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ზარის პარამეტრების ცვლილება შესაძლებელია მხოლოდ პირველადი მომხმარებლის მიერ."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ზარის პარამეტრების შეცვლა მხოლოდ მომხმარებელ-ადმინისტრატორს შეუძლია."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"პარამეტრები (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"ზარის პარამეტრების შეცდომა"</string>
     <string name="reading_settings" msgid="1920291699287055284">"პარამეტრების წაკითხვა…"</string>
@@ -145,8 +148,19 @@
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"გადამისამართების ნომრის პარამეტრების მოძიება და შენახვა ვერ მოხერხდა.\nმაინც გსურთ ახალ პროვაიდერზე გადართვა?"</string>
     <string name="no_change" msgid="3186040086622435212">"ცვლილებები არ განხორციელებულა."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ხმოვანი ფოსტის სერვისის არჩევა"</string>
-    <string name="voicemail_default" msgid="2001233554889016880">"თქვენი მომწოდებელი"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ფიჭური ქსელის პარამეტრებიჶ"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"თქვენი ოპერატორი"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ძველი PIN-კოდი"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ახალი PIN-კოდი"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"გთხოვთ, დაელოდოთ."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ახალი PIN-კოდი ძალიან მოკლეა."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ახალი PIN-კოდი ძალიან გრძელია."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ახალი PIN-კოდი ძალიან სუსტია. ძლიერი პაროლი არ უნდა შეიცავდეს გამეორებული ციფრების გრძელ თანმიმდევრობას."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"ძველი PIN-კოდი არ თანხვდება."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"ახალი PIN-კოდი არასწორ სიმბოლოებს შეიცავს."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN-კოდის შეცვლა შეუძლებელია"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"შეტყობინების ტიპი მხარდაუჭერელია. მოსასმენად დარეკეთ <xliff:g id="NUMBER">%s</xliff:g>-ზე."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"მობილური ქსელის პარამეტრები"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"მობილური ქსელი"</string>
     <string name="label_available" msgid="1181658289009300430">"ხელმისაწვდომი ქსელები"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"ძიება..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ქსელები ვერ მოიძებნა."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"რეგისტრირებულია ქსელში."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"აირჩიეთ ქსელის ოპერატორი"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ყველა ხელმისაწვდომი ქსელების მოძიება"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ავტომატურად არჩევა"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"პრიორიტეტული ქსელის ავტომატური არჩევა"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ქსელის ავტომატურად არჩევა"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ქსელი"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ავტომატური რეგისტრაცია…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ქსელის სასურველი ტიპი"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ქსელის ოპერირების რეჟიმის შეცვლა"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"მხოლოდ GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA უპირატესობით"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"დარეკვა"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ქსელი"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"გაუმჯობესებული 4G LTE რეჟიმი"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"გაუმჯობესებული დარეკვა"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ხმოვანი და სხვა სახის კომუნიკაციებიგამოიყენეთ LTE მომსახურება გაუმჯობესება ხმა და სხვა კომუნიკაციები (რეკომენდირებულია)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"მონაცემთა გადაცემა ჩართულია჻"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"მონაცემების გამოყენება"</string>
-    <string name="roaming" msgid="8871412572928323707">"მობილური ინტერნეტის როუმინგი"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ყურადღება"</string>
+    <string name="roaming" msgid="7894878421600247140">"როუმინგი"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"როუმინგში ყოფნისას მობილურ მონაცემთა გადაცემის სერვისებთან დაკავშირება"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"როუმინგში ყოფნისას მობილურ მონაცემთა გადაცემის სერვისებთან დაკავშირება"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"ინტერნეტთან კავშირი გაწყდა, რადგან საშინაო ქსელში აღარ ხართ ჩართული, ხოლო მობილური ინტერნეტის როუმინგი გამორთული გაქვთ."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"თქვენ შეიძლება წარმოგეშვათ მნიშვნელოვანი ხარჯები."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"გსურთ, ჩაირთოს ინტერნეტის როუმინგი?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"მონაცემთა გამოყენება"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> მობილური ინტერნეტი გამოყენებულია <xliff:g id="ID_2">%2$s</xliff:g>-ში"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ოპერატორი"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"მობილური ინტერნეტი"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"მობილურ ინტერნეტზე წვდომა მობილური ქსელის გამოყენებით"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi დარეკვა"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ვიდეო დარეკვა ოპერატორით"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ვარიანტები"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA პარამეტრები"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"მონაცემთა გადაცემის გამოყენება"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"გადაჭარბებულია <xliff:g id="USED_0">%1$s</xliff:g> მაქსიმუმი\nმონაცემთა გადაცემის სიჩქარე შემცირდა <xliff:g id="USED_1">%2$d</xliff:g> კბიტი/წმ-ზე"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"გასულია ციკლის <xliff:g id="USED_0">%1$d</xliff:g>٪\nშემდეგი პერიოდის ათვლა იწყება <xliff:g id="USED_1">%2$d</xliff:g> დღეში (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"მონაცემთა გამოყენების ლიმიტის გადაჭარბების შემთხვევაში, მონაცემთა გადაცემის სიჩქარე შემცირდება <xliff:g id="USED">%1$d</xliff:g> კბიტი/წმ-ზე"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"დამატებითი ინფორმაცია თქვენი ოპერატორის ფიჭური ინტერნეტის გამოყენების წესების შესახებ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"დამატებითი ინფორმაცია თქვენი ოპერატორის მობილური ინტერნეტის გამოყენების წესების შესახებ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cell Broadcast SMS ჩართულია"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"კონტაქტის დამატება"</string>
     <string name="menu_edit" msgid="7143003705504672374">"კონტაქტის რედაქტირება"</string>
     <string name="menu_delete" msgid="3977150783449642851">"კონტაქტის წაშლა"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"კონტაქტთან დარეკვა"</string>
     <string name="get_pin2" msgid="8204677063922225311">"აკრიფეთ PIN2"</string>
     <string name="name" msgid="7329028332786872378">"სახელი"</string>
     <string name="number" msgid="7905950798349903858">"ნომერი"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"დაშვებული დარეკვის კონტაქტის წაშლა…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"დაშვებული ნომერი წაიშალა."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN არ განახლდა, რადგან არასწორი PIN შეიყვანეთ."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ვერ განახლდა, რადგან ნომერი არ შეიძლება 20 ციფრს აღემატებოდეს."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN არ განახლებულა, რადგან ნომერი ცარიელია ან 20 ციფრზე მეტს შეიცავს."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN არ განახლდა. PIN2 არასწორია ან ტელეფონის ნომერი უარყოფილია."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ოპერაცია ვერ განხორციელდა."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"მიმდინარეობს SIM ბარათიდან წაკითხვა…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ხმოვანი ფოსტის ნომერი უცნობია"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"სერვისი არ არის"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ხელმისაწვდომია არჩეული ქსელი (<xliff:g id="OPERATOR_NAME">%s</xliff:g>)"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"დასარეკად ჩართეთ მობილური ქსელი, გამორთეთ თვითმფრინავის რეჟიმი ან ბატარეის დაზოგვის რეჟიმი."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ზარის განსახორციელებლად, გამორთეთ თვითმფრინავის რეჟიმი ან დაუკავშირდით უსადენო ქსელს."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"გამოდით გადაუდებელი გადმორეკვის რეჟიმიდან არაგადაუდებელი ზარის განსახორციელებლად."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ქსელში რეგისტრირებული არ არის."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ფიჭური ქსელი მიუწვდომელია"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ფიჭური ქსელი მიუწვდომელია. ზარის განსახორციელებლად, დაუკავშირდით უსადენო ქსელს."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"მობილური ქსელი მიუწვდომელია."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"მობილური ქსელი მიუწვდომელია. ზარის განსახორციელებლად დაუკავშირდით უსადენო ქსელს."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"არ ირეკება."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI თანმიმდევრობის დაწყება…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ზარი ვერ განხორციელდა."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ამჯერად ზარის დამატება ვერ ხერხდება."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"მომსახურება არ არის მხარდაჭერილი"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ვერ ხორციელდება ზარების გადართვა."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ვერ ხორციელდება ზარის გამოყოფა."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"საკონფერენციო ზარები ვერ ხორციელდება."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ზარის უარყოფა ვერ ხორციელდება."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ვერ ხერხდება ზარ(ებ)ის გაშვება."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ზარების დაყოვნება ვერ ხერხდება."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ზარის განსახორციელებლად, დაუკავშირდით უსადენო ქსელს."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ზარის განსახორციელებლად ჩართეთ Wi-Fi დარეკვა."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"გადაუდებელი ზარი"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"გადამცემის ჩართვა…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"მომხსახურება არ არის. სცადეთ ხელხლა..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"საგანგებო ზარის დროს თვითმფრინავის რეჟიმში ვერ შეხვალთ."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"არ ირეკება. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> არ არის საგანგებო ნომერი."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"დარეკვა ვერ ხორციელდება. აკრიფეთ საგანგებო ნომერი."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"კლავიატურის გამოყენება დასარეკად"</string>
@@ -464,10 +495,12 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"ყველას იმპორტი"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"მიმდინარეობს SIM კონტაქტების იმპორტი"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"კონტაქტებიდან იმპორტი"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"კონტაქტი იმპორტირებულია"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"კონტაქტის იმპორტი ვერ მოხერხდა"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"სმენის დახმარებები"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"სმენის დახმარების თავსებადობის ჩართვა"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY გამორთვა"</item>
+    <item msgid="512950011423868021">"TTY გამორთულია"</item>
     <item msgid="3971695875449640648">"TTY სრული"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"გააქტიურდა გადაუდებელი გადმორეკვის რეჟიმი"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"გადაუდებელი გადმორეკვის რეჟიმი"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"მობილური ინტერნეტი გამორთულია"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"> არ არის დაკავშირების მონაცემები <xliff:g id="COUNT_1">%s</xliff:g> წუთისათვის</item>
-      <item quantity="one"> არ არის დაკავშირების მონაცემები <xliff:g id="COUNT_0">%s</xliff:g> წუთისათვის</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"მობილურ ინტერნეტთან კავშირი მიუწვდომელია <xliff:g id="COMPLETETIME">%s</xliff:g>-მდე"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other"> ტელეფონი იქნება საგანგებო დარეკვის რეჟიმი <xliff:g id="COUNT_1">%s</xliff:g> წუთით. ამ რეჟიმის მანძილზე ვერ მოხერხდება მონაცემთა დაკავშირების გმაოყენებით აპლიკაციების გამოყენება. გსურთ ახლა გამოსვლა?</item>
       <item quantity="one"> ტელეფონი იქნება საგანგებო დარეკვის რეჟიმი <xliff:g id="COUNT_0">%s</xliff:g> წუთით. ამ რეჟიმის მანძილზე ვერ მოხერხდება მონაცემთა დაკავშირების გმაოყენებით აპლიკაციების გამოყენება. გსურთ ახლა გამოსვლა?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"კონტაქტის არჩევა"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ხმოვანი ზარი მხარდაჭრილი არ არის"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"დარეკვა"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ვიბრაცია"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ვიბრაცია"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ვიზუალური ხმოვანი ფოსტა"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ხმა"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"დააყენეთ PIN-კოდი"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN-კოდის შეცვლა"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ზარის მელოდია &amp; ვიბრაცია"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"ჩაშენებული SIM ბარათები"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ვიდეოზარის ჩართვა"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"მხოლოდ საგანგებო ნომრებზე დარეკვა"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM ბარათი, სლოტი: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"მარტივი წვდომა"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"შემომავალი Wi-Fi ზარი"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi ზარი აბონენტისგან"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ზარი"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"შეეხეთ ისევ გასახსნელად"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"გასახსნელად, შეეხეთ ხელახლა"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"შეტყობინების გაშიფრვისას წარმოიშვა შეცდომა."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM ბარათმა გაააქტიურა თქვენი სერვისი და თქვენი ტელეფონის როუმინგის შესაძლებლობები განაახლა."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ძალიან ბევრი აქტიური ზარია. გთხოვთ, დაასრულოთ ან გააერთიანოთ არსებული ზარები ახალი ზარის განხორციელებამდე."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"დაკავშირება შეუძლებელია, გთხოვთ, ჩადოთ მოქმედი SIM ბარათი."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi კავშირი დაიკარგა. ზარი დასრულდა."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ხმოვანი ფოსტის PIN-კოდის შეცვლა"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"გაგრძელება"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"გაუქმება"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"კარგი"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"დაადასტურეთ თქვენი ძველი PIN-კოდი"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"გასაგრძელებლად შეიყვანეთ თქვენი ხმოვანი ფოსტის PIN-კოდი."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"დააყენეთ ახალი PIN-კოდი"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-კოდი უნდა იყოს <xliff:g id="MIN">%1$d</xliff:g>-დან <xliff:g id="MAX">%2$d</xliff:g> ციფრამდე."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"დაადასტურეთ PIN-კოდი"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-კოდები არ ემთხვევა"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ხმოვანი ფოსტის PIN-კოდი განახლდა"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN-კოდის დაყენება შეუძლებელია"</string>
 </resources>
diff --git a/res/values-kk-rKZ/arrays.xml b/res/values-kk/arrays.xml
similarity index 100%
rename from res/values-kk-rKZ/arrays.xml
rename to res/values-kk/arrays.xml
diff --git a/res/values-kk/config.xml b/res/values-kk/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-kk/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk/strings.xml
similarity index 85%
rename from res/values-kk-rKZ/strings.xml
rename to res/values-kk/strings.xml
index cbd3e8c..c380e82 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Ұялы деректер"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Ұялы дерекқор"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефон қызметтері"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Төтенше тергіш"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Дауыс хабарының нөмірі жоқ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM картасында ешқандай дауыс хабарының нөмірі сақталмаған."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Нөмір қосу"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Дауыстық пошта параметрлерін тек негізгі пайдаланушы өзгерте алады."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM картаңыз ашылды. Телефоныңыздың бекітпесі ашылуда…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM желісін ашатын PIN код"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Бекітпесін ашу"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Желінің бекітпесін ашуды өтінуде…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Желінің бекітпесін алу өтініші орындалмады."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Желінің бекітпесін алу орындалды."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Ұялы желі параметрлері бұл пайдаланушы үшін қол жетімді емес"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Мобильдік желі параметрлері бұл пайдаланушы үшін қол жетімді емес"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM қоңырауының параметрлері"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM қоңырау параметрлері (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA қоңырауының параметрлері"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"CDMA қоңырау параметрлері (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Қол жетімділік нүктесінің атаулары"</string>
     <string name="settings_label" msgid="3876743539816984008">"Желі параметрлері"</string>
-    <string name="phone_accounts" msgid="6376603393888116364">"Есептік жазбаларға қоңыр. шалу"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Қоңырау шалу есептік жазбалары"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Келесінің көмегімен қоңыраулар шалу"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Келесінің көмегімен SIP қоңырауларын шалу"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Алдымен сұрау"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Қолжетімді желі жоқ"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Параметрлер"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Есептік жазбаларды таңдау"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефон есептік жазбалары"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Дауыстық пошта"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Дауыстық пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ДХ:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Хабарландырулар"</string>
     <string name="networks" msgid="8873030692174541976">"Желі операторлары"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Жедел таратылымдар"</string>
     <string name="call_settings" msgid="6112441768261754562">"Қоңырау параметрлері"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Хабарласу мүмкін болмағанда"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Хабарласа алмағанда бағытталатын нөмір"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> нөміріне бағытталуда"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Өшірілген"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Өшірулі"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Телефоныңыз қол жетімсіз болғанда жабдықтаушы қоңырауды басқа нөмірге бағыттауды өшіруді қолдамайды."</string>
     <string name="updating_title" msgid="6146755386174019046">"Қоңырау параметрлері"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Қоңырау параметрлерін тек негізгі пайдаланушы өзгерте алады."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Қоңырау параметрлерін тек әкімші пайдаланушы өзгерте алады."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Параметрлер (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Қоңырау параметрлерінің қателігі"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Параметрлерді оқуда…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Еш өзгеріс жасалмаған."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Дауыс хабары қызметін таңдау"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Операторыңыз"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Ұялы желі параметрлері"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Ескі PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Жаңа PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Күте тұрыңыз."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Жаңа PIN код тым қысқа."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Жаңа PIN код тым ұзын."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Жаңа PIN код тым әлсіз. Күшті құпия сөзде үздіксіз реттік немесе қайталанатын таңбалар болмауы тиіс."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Ескі PIN код сәйкес келмейді."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Жаңа PIN кодта жарамсыз таңбалар бар."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN кодты өзгерту мүмкін емес"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Қолдау көрсетілмейтін хабар түрі, тыңдау үшін <xliff:g id="NUMBER">%s</xliff:g> нөміріне қоңырау шалыңыз."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Ұялы желі параметрлері"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобильдік желі"</string>
     <string name="label_available" msgid="1181658289009300430">"Қол жетімді желілер"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Іздеуде…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Ешқандай желілер табылмады."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Желіге тіркелді."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Желі операторын таңдау"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Барлық қол жетімді желілерді іздеу"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Автоматты таңдау"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Қалаулы желіні автоматты түрде таңдау"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Желіні автоматты түрде таңдау"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Желі"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Aвтоматты тіркелу…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Қалаулы желі түрі"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Желі жұмысының режимін өзгерту"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM (ұялы байланыстың жаһандық жүйесі) ғана"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA қалаулы"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Қоңырау"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Желі"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Жақсартылған 4G LTE режимі"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Кеңейтілген қоңырау шалу мүмкіндіктері"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Дауыстық және басқа байланыстарды жақсарту үшін LTE қызметтерін пайдалану (ұсынылады)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Дерекқор қосылған"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Деректерді пайдалануға рұқсат ету"</string>
-    <string name="roaming" msgid="8871412572928323707">"Дерекқор роумингі"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Роуминг кезінде дерекқор қызметтеріне қосу"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Назар аударыңыз"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роуминг"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Роуминг кезінде дерек қызметтеріне қосу"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Роуминг кезінде дерекқор қызметтеріне қосу"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Дерекқор байланысын жоғалтып алдыңыз, себебі үйдегі желінің дерекқор роумингін өшірілген күйінде қалдырғансыз."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Сізден елеулі ақылар алынуы мүмкін."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Деректер роумингіне рұқсат берілсін бе?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Деректер трафигі"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> аралығында <xliff:g id="ID_1">%1$s</xliff:g> мобильдік дерек қолданылды"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобильдік деректер"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Деректерге мобильдік желі арқылы кіру"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi қоңыраулары"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Оператор бейне қоңыраулары"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS опциялары"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA (кең жолақты әр түрлі кодты бірнеше қол жетімділік) опциялары"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Дерекқор қолдану"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ең көп мөлшерінен асып кетті\nДерекқор мөлшері <xliff:g id="USED_1">%2$d</xliff:g> Kб/с шамасына азайтылды"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Мерзімі аяқталған айналым <xliff:g id="USED_0">%1$d</xliff:g>٪ \nКелесі мерзім <xliff:g id="USED_1">%2$d</xliff:g> күнде басталады (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Егер дерекқор қолдану анықталған шегінен асып кетсе, дерекқор мөлшері <xliff:g id="USED">%1$d</xliff:g> Kб/с шамасына азайтылады."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Оператордың ұялы желі деректерін пайдалану саясаты туралы қосымша ақпарат"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Жабдықтаушының ұялы желі дерекқорын қолдану саясаты туралы толығырақ ақпарат"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Ұялы таратылымды SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Ұялы таратылымды SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Ұялы таратылымды SMS қосылған"</string>
@@ -346,7 +372,7 @@
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"ТТН қол жетімділігі үшін PIN кодты өзгерту"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Телефон нөмірлері тізімін басқару"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Дауыс құпиялығы"</string>
-    <string name="voice_privacy_summary" msgid="3159383389833516214">"Жетілдірілген құпиялық режимін қосу"</string>
+    <string name="voice_privacy_summary" msgid="3159383389833516214">"Жетілдірілген құпиялылық режимін қосу"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Tелетайп режимі"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"Телетайп режиміне реттеу"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Қайта авто әрекеттену"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Байланыс қосу"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Байланыс өңдеу"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Байланыс жою"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Контактіге қоңырау шалу"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 кодын теріңіз"</string>
     <string name="name" msgid="7329028332786872378">"Атауы"</string>
     <string name="number" msgid="7905950798349903858">"Нөмір"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Тұрақты теру нөмірін өшіруде…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Тұрақты теру нөмірі жойылды."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"ТТН жаңартылмады, себебі қате PIN код терілді."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"ТТН жаңартылмады, себебі нөмір 20 бірліктен аспауы тиіс."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN жаңартылмады, себебі нөмір 20 бірліктен аспауы тиіс."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"ТТН жаңартылмады. PIN2 қате болды немесе телефон нөмірі қабылданбады."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Тұрақты теру нөмірлерінің жұмысы орындалмады."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM картасынан оқу…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Дауыс хабарының нөмірі белгісіз"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Қызмет көрсетілмейді"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Таңдалған (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) желісі қол жетімсіз"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Қоңырау шалу үшін ұшақ режимін өшіріңіз."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Қоңырау шалу мүмкін болуы үшін мобильдік байланысты қосып, ұшақ режимін немесе батарея үнемдеу режимін өшіріңіз."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Қоңырау шалу үшін ұшақ режимін өшіріңіз."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Қоңырау шалу үшін ұшақ режимін өшіріңіз не сымсыз желіге қосылыңыз."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Төтенше емес қоңырау шалу үшін төтенше қоңырауды кері шалу режимінен шығыңыз."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Желіде тіркелмеген."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Ұялы желі қол жетімді емес."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Ұялы желі қол жетімді емес. Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Ұялы желі қол жетімсіз."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобильдік желі қолжетімді емес. Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Қоңырау шалу мүмкін емес."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI қатарын бастау…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Қоңырау шалынбады."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Қоңырауды қазіргі уақытта қосу мүмкін емес."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Қызметке қолдау көрсетілмейді"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Қоңырауларды ауыстыру мүмкін емес."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Қоңырауды бөлу мүмкін емес."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Мәжіліс қоңырауларын өшіру."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Қоңырауды қабылдамау мүмкін емес."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Қоңырау(лар)ды босату мүмкін емес."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Қоңырауларды ұстау мүмкін емес."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Қоңырау шалу үшін, Wi-Fi желісін қосыңыз."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Төтенше қоңырау"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радионы қосуда…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Қызмет жоқ. Әрекет қайталануда…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Жедел қызметке қоңырау шалу кезінде ұшақ режимін қолдану мүмкін емес."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Қоңырау шалу мүмкін емес. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> жедел нөмір емес."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Қоңырау шалу мүмкін емес. Жедел нөмірді теріңіз."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Теру үшін пернетақтаны қолдану"</string>
@@ -464,13 +495,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Барлығын импорттау"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM контактілерін импортттау"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Контактілерден импорттау"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"Есту көмектері"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Есту көмегінің үйлесімділігін қосу"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Контакт импортталды"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Контактіні импорттау сәтсіз аяқталды"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Есту аппараттары"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Есту аппаратының қолдауын қосу"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"Tеле тайп өшірулі"</item>
-    <item msgid="3971695875449640648">"Tелетайп Толық"</item>
-    <item msgid="1937509904407445684">"Tелетайп HCO (есту арқылы тасымалдау)"</item>
-    <item msgid="5644925873488772224">"Tелетайп VCO (дауыс арқылы тасымалдау)"</item>
+    <item msgid="512950011423868021">"Tелетайп өшірулі"</item>
+    <item msgid="3971695875449640648">"Tелетайп толық функциялы"</item>
+    <item msgid="1937509904407445684">"Tелетайп HCO (есту мүмкіндігімен)"</item>
+    <item msgid="5644925873488772224">"Tелетайп VCO (сөйлеу мүмкіндігімен)"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"Әуенді сигнал әуендері"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"Әуенді сигнал ұзақтығын реттеу"</string>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Төтенше қоңырауды кері шалу режиміне кірді"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Төтенше қоңырауды кері шалу режимі"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Дерекқор байланысы өшірілген"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> минут бойы деректер байланысы жоқ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> минут бойы деректер байланысы жоқ</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> дейін мобильдік байланыс болмайды."</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Телефон <xliff:g id="COUNT_1">%s</xliff:g> минут бойы жедел кері қоңырау шалу режимінде болады. Бұл режимде деректер байланысын пайдаланатын қолданбаларды пайдалану мүмкін емес. Қазір шығу керек пе?</item>
       <item quantity="one">Телефон <xliff:g id="COUNT_0">%s</xliff:g> минут бойы жедел кері қоңырау шалу режимінде болады. Бұл режимде деректер байланысын пайдаланатын қолданбаларды пайдалану мүмкін емес. Қазір шығу керек пе?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"контакт таңдау"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Дауыс арқылы қоңырау шалу қолдауы жоқ"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"теру"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Діріл"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Діріл"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуалды дауыс поштасы"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Дыбыс"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN кодын орнату"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN кодты өзгерту"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон&amp; Діріл"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Кірістірілген SIM карталары"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Бейне қоңырауларды қосу"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Тек жедел қоңыраулар"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM картасы, ұяшық: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Арнайы мүмкіндіктер"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Кіріс Wi-Fi қоңырауы"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi қоңырауын шалушы:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi қоңырауы"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ашу үшін қайтадан түртіңіз"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ашу үшін қайта түртіңіз"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Хабарды кодтан шығару кезінде қате пайда болды."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM карта қызметті белсендіріп, телефонның роуминг мүмкіндіктерін жаңартты."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Белсенді қоңыраулар тым көп. Жаңа қоңырау шалудан бұрын бар қоңырауларды аяқтаңыз немесе біріктіріңіз."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Қосылу мүмкін болмады. Жарамды SIM картасын енгізіңіз."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi байланысы үзіліп қалды. Қоңырау аяқталды."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Дауыстық пошта PIN кодын өзгерту"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Жалғастыру"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Тоқтату"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Жарайды"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Ескі PIN кодыңызды растаңыз"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Жалғастыру үшін, дауыстық поштаңыздың PIN кодын енгізіңіз."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Жаңа PIN кодын орнатыңыз"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN коды <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> бірліктен тұруы тиіс."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN кодын растаңыз"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN кодтары сәйкес келмейді"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Дауыстық пошта PIN коды жаңартылды"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN кодын орнату мүмкін болмады"</string>
 </resources>
diff --git a/res/values-km-rKH/arrays.xml b/res/values-km/arrays.xml
similarity index 100%
rename from res/values-km-rKH/arrays.xml
rename to res/values-km/arrays.xml
diff --git a/res/values-km/config.xml b/res/values-km/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-km/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km/strings.xml
similarity index 83%
rename from res/values-km-rKH/strings.xml
rename to res/values-km/strings.xml
index 04c3fd9..ade04d3 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ទិន្នន័យប្រព័ន្ធទូរស័ព្ទ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ទិន្នន័យ​ចល័ត"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"សេវាកម្មទូរស័ព្ទ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"អ្នក​ហៅ​នៅ​ពេល​មាន​អាសន្ន"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ទូរស័ព្ទ"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"បាត់​​ចំនួន​​សារ​ជា​សំឡេង"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"គ្មាន​ចំនួន​សារ​ជា​សំឡេង​​ត្រូវ​បាន​រក្សា​ទុក​នៅ​លើ​ស៊ី​ម​កាត​ទេ​។"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"បន្ថែម​លេខ"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"មាន​តែ​អ្នក​ប្រើប្រាស់​ចម្បង​ទើប​អាច​កែប្រែ​ការ​កំណត់​សារ​ជា​សំឡេង​បាន។"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"បាន​ដោះ​សោ​ស៊ីមកាត​របស់​អ្នក។ ទូរស័ព្ទ​របស់​អ្នក​កំពុង​ដោះ​សោ…"</string>
     <string name="label_ndp" msgid="780479633159517250">"ដោះ​សោ​​កូដ PIN បណ្ដាញ​ស៊ីមកាត"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ដោះ​សោ"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"កំពុង​ស្នើ​​ដោះ​សោ​បណ្ដាញ…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"បាន​បរាជ័យ​ក្នុង​ការ​ស្នើ​ដោះ​សោ​បណ្ដាញ។"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ដោះ​សោ​បណ្ដាញ​បាន​ជោគជ័យ។"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ការ​កំណត់​បណ្ដាញ​ចល័ត​គឺ​មិន​មាន​​សម្រាប់​អ្នក​ប្រើ​នេះ"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ការ​កំណត់​បណ្ដាញ​ចល័ត​មិន​អាច​ប្រើ​បាន​​សម្រាប់​អ្នក​ប្រើ​នេះ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"កំណត់​ការ​ហៅ GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"ការកំណត់ការហៅ GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"កំណត់​ការ​ហៅ CDMA"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"ការកំណត់ការហៅ CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"ឈ្មោះ​ចំណុច​ចូលដំណើរការ"</string>
     <string name="settings_label" msgid="3876743539816984008">"ការកំណត់​បណ្ដាញ"</string>
-    <string name="phone_accounts" msgid="6376603393888116364">"គណនីហៅទូរស័ព្ទ"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"គណនីហៅទូរសព្ទ"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ធ្វើការហៅជាមួយ"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ធ្វើការហៅ SIP ជាមួយ"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"សួរជាមុនសិន"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"មិន​មាន​បណ្ដាញ​អាច​ប្រើបាន"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ការកំណត់"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ជ្រើសរើសគណនី"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"គណនីទូរស័ព្ទ"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"សារ​ជា​សំឡេង"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"សារជាសម្លេង (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"ការ​ជូនដំណឹង"</string>
     <string name="networks" msgid="8873030692174541976">"ប្រតិបត្តិ​ករ​​​បណ្ដាញ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"ការ​ផ្សាយ​ពេល​មាន​អាសន្ន"</string>
     <string name="call_settings" msgid="6112441768261754562">"កំណត់​ការ​ហៅ"</string>
@@ -90,8 +93,8 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"បាន​បង្ហាញ​​​លេខ​ក្នុង​ការ​ហៅ​ចេញ"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"ប្រើ​ការ​កំណត់​​ប្រតិបត្តិ​ករ​លំនាំដើម ដើម្បី​បង្ហាញ​លេខ​របស់​ខ្ញុំ​នៅ​ក្នុង​ការ​ហៅ​ចេញ"</string>
     <string name="labelCW" msgid="6120513814915920200">"រង់ចាំ​ការ​ហៅ"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"អំឡុង​ពេល​ហៅ ជូនដំណឹង​ខ្ញុំ​នៃ​ការ​ហៅ​ចូល"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"អំឡុង​ពេល​ហៅ ជូនដំណឹង​ខ្ញុំ​នៃ​ការ​ហៅ​ចូល"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"ក្នុង​អំឡុង​ពេល​ហៅ ជូនដំណឹងដល់​ខ្ញុំ​អំពី​ការ​ហៅ​ចូល"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"ក្នុង​អំឡុង​ពេល​ហៅ ជូនដំណឹងដល់​ខ្ញុំ​អំពី​ការ​ហៅ​ចូល"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"កំណត់​ការ​ហៅ​​​បញ្ជូន​បន្ត"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ការកំណត់ការបញ្ជូនការហៅបន្ត (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"បញ្ជូន​ការ​ហៅ​បន្ត"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"នៅពេលមិនអាចទាក់ទងបាន"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"លេខ​នៅ​ពេល​ដែល​មិន​អាច​ហៅ​ចូល"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"បញ្ជូន​បន្ត​ទៅ​ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"បាន​បិទ"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"បិទ"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ក្រុមហ៊ុន​បញ្ជូន​របស់​អ្នក​​មិន​គាំទ្រ​ការ​បិទ​ការ​ហៅ​​បញ្ជូន​បន្ត នៅ​ពេល​ទូរស័ព្ទ​របស់​អ្នក​មិន​អាច​ហៅ​ចូល។"</string>
     <string name="updating_title" msgid="6146755386174019046">"កំណត់​ការ​ហៅ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ការកំណត់ការហៅអាចផ្លាស់ប្តូរបានដោយអ្នកប្រើបឋមតែប៉ុណ្ណោះ។"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ការកំណត់ការហៅអាចផ្លាស់ប្តូរបានដោយអ្នកប្រើដែលមានសិទ្ធិគ្រប់គ្រងតែប៉ុណ្ណោះ។"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ការកំណត់ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"កំហុស​ការ​កំណត់​ការ​ហៅ"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"បញ្ហា​ការ​កំណត់​ការ​ហៅ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"កំពុង​អាន​ការ​កំណត់…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"កំណត់​ការ​ធ្វើ​បច្ចុប្បន្ន​ភាព…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"ត្រឡប់​ការ​កំណត់…"</string>
     <string name="response_error" msgid="6674110501330139405">"ការ​ឆ្លើយ​តប​ដែល​មិន​រំពឹង​ទុក​ពី​​បណ្ដាញ​។"</string>
-    <string name="exception_error" msgid="7027667130619518211">"កំហុស​ស៊ីមកាត ឬ​បណ្ដាញ។"</string>
+    <string name="exception_error" msgid="7027667130619518211">"បញ្ហា​ស៊ីមកាត ឬ​បណ្ដាញ។"</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"សំណើ SS ត្រូវបានកែសម្រួលទៅសំណើនៃការហៅ។"</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"សំណើ SS ត្រូវបានកែសម្រួលទៅសំណើសារ USSD។"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"សំណើ SS ត្រូវបានកែសម្រួលទៅតាមសំណើ SS ថ្មី។"</string>
@@ -145,8 +148,19 @@
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"មិន​អាច​យក និង​រក្សាទុក​ការ​កំណត់​លេខ​បញ្ជូន​បន្ត​បច្ចុប្បន្ន​បាន​ទេ។\n ប្ដូរ​ទៅ​ក្រុមហ៊ុន​ផ្ដល់​សេវាកម្ម​ថ្មី​ឬ?"</string>
     <string name="no_change" msgid="3186040086622435212">"មិន​បាន​ប្ដូរ។"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ជ្រើស​សេវា​សារ​ជា​សំឡេង"</string>
-    <string name="voicemail_default" msgid="2001233554889016880">"អ្នកផ្តល់សេវាកម្មរបស់អ្នក"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ការ​កំណត់​បណ្ដាញ​ចល័ត"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"ក្រុមហ៊ុនបម្រើសេវាទូរសព្ទរបស់អ្នក"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"លេខ​កូដ PIN ថ្មី"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"លេខ​កូដ PIN ថ្មី"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"សូម​រង់ចាំ។"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"លេខ​កូដ PIN ថ្មី​ខ្លី​ពេក។"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"លេខ​កូដ PIN ថ្មី​វែង​ពេក។"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"លេខ​កូដ PIN ថ្មី​ខ្សោយ​ពេក។ ពាក្យ​សម្ងាត់​ដែល​ខ្លាំង​មិន​គួរ​មាន​​លេខ​រៀង​​តគ្នា ឬ​​ស្ទួន​គ្នា​ទេ។"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"លេខ​កូដ PIN ចាស់​មិន​ត្រូវ​គ្នា។"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"លេខ​កូដ PIN ថ្មី​​មាន​តួអក្សរ​មិន​ត្រឹមត្រូវ។"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"មិន​អាច​ប្ដូរ​លេខ​កូដ PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"មិន​ស្គាល់​ប្រភេទ​សារ សូម​ហៅ​ទូរស័ព្ទ​ទៅ <xliff:g id="NUMBER">%s</xliff:g> ដើម្បី​ស្ដាប់។"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"ការ​កំណត់​បណ្ដាញ​ឧបករណ៍​ចល័ត"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"បណ្ដាញទូរសព្ទចល័ត"</string>
     <string name="label_available" msgid="1181658289009300430">"បណ្ដាញ​ដែល​មាន"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"កំពុង​ស្វែងរក..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"រក​មិន​ឃើញ​បណ្ដាញ។"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"បាន​ចុះឈ្មោះ​នៅ​លើ​បណ្ដាញ។"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ជ្រើស​ប្រតិបត្តិ​ករ​​បណ្ដាញ"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ស្វែងរក​បណ្ដាញ​ដែល​មាន​ទាំង​អស់"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ជ្រើស​ដោយ​ស្វ័យ​ប្រវត្តិ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ជ្រើស​បណ្ដាញ​ដែល​ចូលចិត្ត​ដោយ​ស្វ័យប្រវត្តិ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ជ្រើសរើស​បណ្ដាញ​ដោយស្វ័យប្រវត្តិ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"បណ្ដាញ"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ការ​ចុះ​ឈ្មោះ​ដោយ​ស្វ័យ​ប្រវត្តិ ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ប្រភេទ​បណ្ដាញ​​ដែល​​ពេញចិត្ត"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ប្ដូរ​របៀប​ប្រតិបត្តិការ​បណ្ដាញ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"តែ GSM ប៉ុណ្ណោះ"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA ដែល​ចូលចិត្ត​"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"កំពុង​ហៅ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"បណ្ដាញ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"​របៀប 4G LTE ធ្វើឲ្យ​ប្រសើរ​ឡើង"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"ការ​ហៅ​ទូរសព្ទ​កម្រិត​ខ្ពស់"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ប្រើសេវាកម្ម LTE ដើម្បីធ្វើឲ្យសម្លេង និងការទំនាក់ទំនងផ្សេងទៀតប្រសើរឡើង (បានណែនាំ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"បាន​បើក​ទិន្នន័យ"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"អនុញ្ញាត​​ឲ្យ​​ប្រើ​ប្រាស់​ទិន្នន័យ"</string>
-    <string name="roaming" msgid="8871412572928323707">"រ៉ូមីង​​ទិន្នន័យ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ប្រយ័ត្ន"</string>
+    <string name="roaming" msgid="7894878421600247140">"រ៉ូ​មីង"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"តភ្ជាប់​ទៅ​កាន់​សេវា​កម្ម​ទិន្នន័យ​នៅ​ពេល​ដែល​រ៉ូ​មីង"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"តភ្ជាប់​ទៅ​កាន់​សេវា​កម្ម​ទិន្នន័យ​នៅ​ពេល​ដែល​រ៉ូ​មីង"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"អ្នក​បាន​បាត់បង់​ការ​តភ្ជាប់​ទិន្នន័យ ពីព្រោះ​អ្នក​បាន​ចាកចេញ​ពី​បណ្ដាញ​ដើម​របស់​អ្នក​ជាមួយ​រ៉ូមីង​ទិន្នន័យ​បាន​បិទ។"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"អាចនាំឲ្យមានការគិតប្រាក់របស់អ្នកច្រើន។"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"អនុញ្ញាតឲ្យរ៉ូមីងទិន្នន័យ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ការ​ប្រើ​ប្រាស់ទិន្នន័យ"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> ទិន្នន័យ​ទូរសព្ទ​ដែល​បាន​ប្រើ​នៅ​ចន្លោះ​ថ្ងៃ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ក្រុមហ៊ុន​បម្រើ​សេវា​ទូរសព្ទ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"ទិន្នន័យ​ទូរសព្ទចល័ត"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"ចូល​ប្រើប្រាស់​ទិន្នន័យ​តាម​បណ្ដាញ​​ទូរសព្ទ​ចល័ត"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"ការហៅ​ទូរសព្ទ​តាម Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ការហៅវីដេអូ​តាម​ក្រុមផ្ដល់​សេវា​ទូរសព្ទ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"ជម្រើស GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"ជម្រើស CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ការ​ប្រើ​ប្រាស់​ទិន្នន័យ"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ​លើស​អតិបរមា \n បាន​កាត់​បន្ថយ​អត្រា​ទិន្នន័យ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ខួប​កន្លង​ទៅ\n រយៈ​ពេល​ចាប់ផ្ដើម​បន្ទាប់​​នៅ​ក្នុង <xliff:g id="USED_1">%2$d</xliff:g> ថ្ងៃ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"បាន​កាត់​បន្ថយ​អត្រា​ទិន្នន័យ <xliff:g id="USED">%1$d</xliff:g> Kb/s ប្រសិនបើ​ទិន្នន័យ​ប្រើ​លើស​ដែន​កំណត់"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ព័ត៌មាន​បន្ថែម​អំពី​​គោលនយោបាយ​ក្នុង​ការ​ប្រើប្រាស់​ទិន្នន័យ​បណ្ដាញ​ចល័ត​របស់​ក្រុមហ៊ុន​បញ្ជូន។"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ព័ត៌មាន​បន្ថែម​អំពី​​គោលនយោបាយ​ក្នុង​ការ​ប្រើប្រាស់​ទិន្នន័យ​បណ្ដាញ​ឧបករណ៍​ចល័ត​ក្រុមហ៊ុន​បញ្ជូន​របស់​អ្នក"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"សារ SMS ​ផ្សព្វផ្សាយ​ចល័ត"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"សារ SMS ផ្សព្វផ្សាយ​ចល័ត"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"បាន​បើក​សារ SMS ​ផ្សព្វផ្សាយ​ចល័ត"</string>
@@ -306,7 +332,7 @@
     <string name="enable_disable_multi_category" msgid="626771003122899280">"ប្រភេទ​ច្រើន"</string>
     <string name="multi_category_enable" msgid="1179299804641721768">"បាន​បើក​ប្រភេទ​ច្រើន"</string>
     <string name="multi_category_disable" msgid="880104702904139505">"បាន​បិទ​ប្រភេទ​ច្រើន"</string>
-    <string name="network_lte" msgid="7702681952521375754">"LTE (បាន​ផ្ដល់​អនុសាសន៍)"</string>
+    <string name="network_lte" msgid="7702681952521375754">"LTE (បានណែនាំ)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (បាន​ផ្ដល់​អនុសាសន៍)"</string>
     <string name="network_global" msgid="1323190488685355309">"សកល"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"ជ្រើស​ប្រព័ន្ធ"</string>
@@ -330,31 +356,32 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"ធ្វើ​ឲ្យ​​​ឧបករណ៍​​​សកម្ម"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"រៀបចំ​សេវា​​កម្ម​ទិន្នន័យ"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"ការ​កំណត់​ក្រុមហ៊ុន​បញ្ជូន"</string>
-    <string name="fdn" msgid="7878832555095183202">"លេខ​ហៅ​ថេរ"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"លេខចុចហៅថេរ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn" msgid="7878832555095183202">"លេខ​ហៅ​មានកំណត់"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"លេខចុចហៅមានកំណត់ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"បញ្ជី FDN"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"បញ្ជី FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"ការ​ធ្វើ​ឲ្យ​សកម្ម FDN"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"បាន​បើក​លេខ​ហៅ​ថេរ"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"បាន​បិទ​លេខ​ហៅ​ថេរ"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"បាន​បើក​លេខ​ហៅ​មានកំណត់"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"បាន​បិទ​លេខ​ហៅ​មានកំណត់"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"បើក FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"បិទ FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"ប្ដូរ​កូដ PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"បិទ FDN"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"បើក FDN"</string>
-    <string name="sum_fdn" msgid="1959399454900272878">"គ្រប់គ្រង​លេខ​ហៅ​ថេរ"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"គ្រប់គ្រង​លេខ​ហៅ​មានកំណត់"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"ប្ដូរ​កូដ PIN សម្រាប់​ចូល​ដំណើរការ FDN"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"គ្រប់គ្រង​បញ្ជី​លេខ​ទូរស័ព្ទ"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"គ្រប់គ្រង​បញ្ជី​លេខ​ទូរសព្ទ"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"ភាព​ឯកជន​សារ​ជា​សំឡេង"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"បើក​របៀប​បង្កើន​ភាព​ឯកជន"</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"របៀប TTY"</string>
-    <string name="tty_mode_option_summary" msgid="1073835131534808732">"កំណត់​របៀប TTY"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"ម៉ូត TTY"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"កំណត់​ម៉ូត TTY"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"ព្យាយាម​ម្ដងទៀត​ស្វ័យប្រវត្តិ"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"បើក​របៀប​ព្យាយាម​ម្ដងទៀត​ស្វ័យប្រវត្តិ"</string>
-    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ការផ្លាស់ប្តូររបៀប TTY មិនត្រូវបានអនុញ្ញាតអំឡុងពេលធ្វើការហៅជាវីដេអូទេ។"</string>
-    <string name="menu_add" msgid="1882023737425114762">"បន្ថែម​ទំនាក់ទំនង"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"ការផ្លាស់ប្តូរម៉ូត TTY មិនត្រូវបានអនុញ្ញាតទេ អំឡុងពេលធ្វើការហៅជាវីដេអូ។"</string>
+    <string name="menu_add" msgid="1882023737425114762">"បញ្ចូល​ទំនាក់ទំនង"</string>
     <string name="menu_edit" msgid="7143003705504672374">"កែ​ទំនាក់ទំនង"</string>
     <string name="menu_delete" msgid="3977150783449642851">"លុប​ទំនាក់ទំនង"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"ចុច​ហៅទៅ​ទំនាក់ទំនង"</string>
     <string name="get_pin2" msgid="8204677063922225311">"វាយ​បញ្ចូល​កូដ PIN2"</string>
     <string name="name" msgid="7329028332786872378">"ឈ្មោះ"</string>
     <string name="number" msgid="7905950798349903858">"លេខ"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"កំពុង​លុប​លេខ​​ហៅ​ថេរ…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"បាន​លុប​លេខ​ហៅ​ថេរ។"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"មិន​បាន​ធ្វើ​បច្ចុប្បន្នភាព FDN ពី​ព្រោះ​អ្នក​បាន​វាយ​បញ្ចូល​កូដ PIN មិន​ត្រឹមត្រូវ។"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"មិន​​បាន​ធ្វើ​បច្ចុប្បន្នភាព FDN ពីព្រោះ​ចំនួន​មិន​អាច​លើស​ពី ២០ តួ​លេខ​​ទេ។"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN មិនត្រូវ​បាន​ធ្វើ​បច្ចុប្បន្នភាពទេ ពីព្រោះ​លេខ​ទទេ ឬ​លើស​ 20 ខ្ទង់។"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"មិន​បាន​ធ្វើ​បច្ចុប្បន្នភាព។ កូដ PIN2 មិន​ត្រឹមត្រូវ ឬ​លេខ​ទូរស័ព្ទ​ត្រូវ​បាន​ច្រានចោល។"</string>
     <string name="fdn_failed" msgid="540018079008319747">"បាន​បរាជ័យ​ក្នុង​ការ​ប្រតិបត្តិការ FDN ។"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"កំពុង​អាន​ពី​ស៊ីមកាត…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"គ្មាន​ទំនាក់ទំនង​នៅ​លើ​ស៊ីមកាត​របស់​អ្នក​ទេ។"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"គ្មាន​ទំនាក់ទំនង​នៅ​ក្នុង​​ស៊ីមកាត​របស់​អ្នក​ទេ។"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"ជ្រើស​ទំនាក់​ទំនង​ដើម្បី​នាំចូល"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"បិទរបៀបយន្តហោះដើម្បីនាំចូលទំនាក់ទំនងចេញពីស៊ីមកាត។"</string>
     <string name="enable_pin" msgid="5422767284133234860">"បិទ/បើក​កូដ PIN ស៊ីមកាត"</string>
@@ -409,7 +436,7 @@
     <string name="puk2_blocked" msgid="3150263853077280049">"លេខ​កូដ PUK2 ត្រូវ​បាន​​ទប់ស្កាត់​ជា​អចិន្ត្រៃយ៍។"</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"អ្នកនៅសល់ការព្យាយាមបញ្ចូល <xliff:g id="NUMBER">%d</xliff:g> ដងទៀត។"</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"លេខសម្ងាត់ PIN2 មិនត្រូវបានរារាំងទៀតទេ"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"កំហុសស៊ីមកាត ឬបណ្ដាញ។"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"បញ្ហាស៊ីមកាត ឬបណ្ដាញ។"</string>
     <string name="doneButton" msgid="2859593360997984240">"រួចរាល់"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"លេខ​សារ​ជា​សំឡេង"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"កំពុង​ហៅ"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"មិន​ស្គាល់​ចំនួន​សារ​ជា​សំឡេង"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"គ្មាន​សេវា"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"បណ្ដាញ​ដែល​បាន​ជ្រើស ( <xliff:g id="OPERATOR_NAME">%s</xliff:g> ) មិន​អាច​ប្រើ​បាន​ទេ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"បិទរបៀបយន្តហោះដើម្បីធ្វើការហៅ។"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"បើក​បណ្ដាញ​ទូរសព្ទ​ចល័ត បិទ​មុខងារ​ពេល​ជិះ​យន្តហោះ ឬ​បិទ​មុខងារ​កម្មវិធី​សន្សំថ្ម ដើម្បី​ហៅ​ទូរសព្ទ។"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"បិទរបៀបយន្តហោះដើម្បីធ្វើការហៅ។"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"បិទរបៀបយន្តហោះ ឬភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"ចាកចេញពីរបៀបហៅទៅវិញពេលមានអាសន្នដើម្បីធ្វើការហៅធម្មតា។"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"មិន​បាន​ចុះ​ឈ្មោះ​នៅ​លើ​បណ្ដាញ។"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"បណ្ដាញ​ចល័ត​មិន​អាច​ប្រើ​បាន។"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"មិនមានបណ្តាញទូរស័ព្ទទេ។ ភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"បណ្ដាញ​​ឧបករណ៍​​ចល័ត​មិន​អាច​ប្រើ​បាន​។"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"មិនមានបណ្តាញទូរសព្ទទេ។ ភ្ជាប់ទៅបណ្តាញឥតខ្សែ ដើម្បី​អាច​ហៅ​ទូរសព្ទ​បាន។"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"មិនអាចហៅបានទេ។"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"កំពុង​ចាប់ផ្ដើម​លំដាប់ MMI ..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"បាន​បរាជ័យ​ការ​ហៅ។"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"មិន​អាច​បន្ថែម​​​ការ​ហៅ​ទូរសព្ទ​នៅ​ពេល​នេះ​​បាន​ទេ។"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"សេវាកម្មមិនត្រូវបានគាំទ្រទេ។"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"មិនអាចឆ្លាស់ការហៅបានទេ។"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"មិនអាចបំបែកការហៅបានទេ។"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"មិន​អាច​ហៅ​ជា​សន្និសីទ។"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"មិនអាចបដិសេធការហៅបានទេ។"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"មិនអាចបញ្ចេញការហៅបានទេ។"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"មិនអាចរង់ចាំការហៅទេ"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ភ្ជាប់ទៅបណ្តាញឥតខ្សែដើម្បីធ្វើការហៅ។"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"បើក​ការ​ហៅ​តាម​​វ៉ាយហ្វាយ​ដើម្បី​ធ្វើ​ការ​ហៅ។"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ការ​ហៅ​នៅ​ពេល​មាន​អាសន្ន"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"កំពុង​បើក​វិទ្យុ…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"គ្មានសេវាទេ។ ព្យាយាមម្តង…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"មិន​អាច​ចូល​ជា​របៀប​លើ​យន្តហោះ​​នៅ​អំឡុង​ការ​ហៅ​បន្ទាន់​បាន​ទេ។"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"មិនអាចហៅបានទេ។ <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> មិនមានជាលេខអាសន្នទេ។"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"មិនអាចហៅបានទេ។ ចុចហៅលេខអាសន្ន។"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ប្រើ​​ក្ដារចុច​ដើម្បី​ចុច​លេខ"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"នាំចូល​ទាំងអស់"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"នាំចូល​ទំនាក់ទំនង​ស៊ីមកាត"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"នាំចូល​ពី​ទំនាក់ទំនង"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"ឧបករណ៍​ជំនួស​ការ​ស្ដាប់"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"បើក​ឧបករណ៍​ជំនួស​ការ​ស្ដាប់"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"បាននាំចូលទំនាក់ទំនង"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"បានបរាជ័យក្នុងការនាំចូលទំនាក់ទំនង"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"ឧបករណ៍​ជំនួយការ​ស្ដាប់"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"បើក​មុខងារដែលត្រូវគ្នានឹងឧបករណ៍​ជំនួយ​ការ​ស្ដាប់"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"បិទ TTY"</item>
     <item msgid="3971695875449640648">"TTY ពេញ"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"បាន​បញ្ចូល​របៀប​ការ​ហៅ​ទៅ​វិញ​ពេល​មាន​អាសន្ន"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"របៀប​ហៅ​ទៅ​វិញ​ពេល​មាន​អាសន្ន"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"បាន​បិទ​ការ​តភ្ជាប់​ទិន្នន័យ"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">គ្មានការភ្ជាប់ទិន្នន័យរយៈពេល <xliff:g id="COUNT_1">%s</xliff:g> នាទី</item>
-      <item quantity="one">គ្មានការភ្ជាប់ទិន្នន័យរយៈពេល <xliff:g id="COUNT_0">%s</xliff:g> នាទី</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"មិន​មាន​ការតភ្ជាប់​ទិន្នន័យ រហូតដល់ម៉ោង <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន រយៈពេល <xliff:g id="COUNT_1">%s</xliff:g> នាទី។ ខណៈពេលស្ថិតក្នុងរបៀបនេះ មិនមានកម្មវិធីដែលប្រើការភ្ជាប់ទិន្នន័យណា អាចប្រើបានបានឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
       <item quantity="one">ទូរស័ព្ទនេះនឹងស្ថិតក្នុងរបៀប ហៅត្រលប់ពេលអាសន្ន រយៈពេល <xliff:g id="COUNT_0">%s</xliff:g> នាទី។ ខណៈពេលស្ថិតក្នុងរបៀបនេះ មិនមានកម្មវិធីដែលប្រើការភ្ជាប់ទិន្នន័យណា អាចប្រើបានបានឡើយ។ តើអ្នកចង់ចាកចេញឥឡូវនេះទេ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"ជ្រើស​ទំនាក់ទំនង"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"មិន​គាំទ្រ​ការ​ហៅ​ជា​សំឡេង"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ចុច"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ញ័រ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ញ័រ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"សារជាសំឡេងអាចមើលឃើញ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"សំឡេង"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"កំណត់លេខកូដ PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ប្ដូរ​​លេខ​កូដ PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"សំឡេង​រោទ៍ &amp; ញ័រ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"ស៊ីមកាត​ជាប់​ជា​មួយ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"បើក​ការ​ហៅ​ជា​វីដេអូ"</string>
@@ -544,10 +573,25 @@
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"ការហៅពេលអាសន្ន"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"សម្រាប់ការហៅពេលអាសន្នប៉ុណ្ណោះ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"ស៊ីមកាត រន្ធ៖ <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
-    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"លទ្ធភាពប្រើប្រាស់"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"មានការហៅចូលមកតាម Wi-Fi"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ភាពងាយស្រួល"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"ការហៅតាម Wi-Fi ពី"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ហៅតាម Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ប៉ះ​ម្ដង​ទៀត​ដើម្បី​បើក"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ប៉ះម្ដងទៀតដើម្បីបើក"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"មានកំហុសខណៈពេលឌិកូដសារ។"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ស៊ីមកាតបានធ្វើឲ្យសេវាកម្មរបស់អ្នកសកម្ម និងបានធ្វើបច្ចុប្បន្នភាពសមត្ថភាពរ៉ូមីងសម្រាប់ទូរស័ព្ទរបស់អ្នក។"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"មាន​ការ​ហៅ​ដែល​សកម្ម​ច្រើន​ពេក។ សូម​បញ្ចប់ ឬ​​ដាក់​​បញ្ចូល​គ្នា​ការ​ហៅ​ដែល​មាន​ស្រាប់​​មុន​ពេល​ដាក់​ការ​ហៅ​ថ្មី។"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"មិន​អាច​តភ្ជាប់​បាន​ទេ សូម​បញ្ចូល​ស៊ីម​កាត​​ដែល​ប្រើ​បាន។"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"បាត់ការភ្ជាប់ Wi-Fi។ បានបញ្ចប់ការហៅទូរស័ព្ទ។"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ប្ដូរ​លេខ​កូដ PIN ជា​​សារ​សំឡេង"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"បន្ត"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"បោះបង់"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"យល់ព្រម"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"បញ្ជាក់​លេខ​កូដ PIN ចាស់​របស់​អ្នក"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"បញ្ចូល​លេខ​កូដ PIN ជា​សារ​សំឡេង​របស់​អ្នក​​ដើម្បី​បន្ត។"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"កំណត់​លេខ​កូដ PIN ថ្មី"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN ត្រូវតែ​មាន​ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> ខ្ទង់។"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"បញ្ជាក់លេខ​កូដ PIN របស់​អ្នក"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"លេខ​កូដ PIN មិន​ត្រូវគ្នា"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"បាន​ធ្វើ​បច្ចុប្បន្នភាព​​លេខ​កូដ PIN ជា​សារ​សំលេង"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"មិន​អាច​កំណត់​លេខ​កូដ PIN"</string>
 </resources>
diff --git a/res/values-kn-rIN/arrays.xml b/res/values-kn/arrays.xml
similarity index 100%
rename from res/values-kn-rIN/arrays.xml
rename to res/values-kn/arrays.xml
diff --git a/res/values-kn/config.xml b/res/values-kn/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-kn/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn/strings.xml
similarity index 83%
rename from res/values-kn-rIN/strings.xml
rename to res/values-kn/strings.xml
index 10449b6..3122f6a 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn/strings.xml
@@ -16,19 +16,19 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ಫೋನ್ ಸೇವೆಗಳು"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"ತುರ್ತು ಡಯಲರ್"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ಫೋನ್"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"FDN ಪಟ್ಟಿ"</string>
-    <string name="unknown" msgid="6878797917991465859">"ಅಜ್ಞಾತ"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"ಎಫ್‌ಡಿಎನ್‌ ಪಟ್ಟಿ"</string>
+    <string name="unknown" msgid="6878797917991465859">"ಅಪರಿಚಿತ"</string>
     <string name="private_num" msgid="6713286113000232309">"ಖಾಸಗಿ ಸಂಖ್ಯೆ"</string>
     <string name="payphone" msgid="4793877574636445118">"ಪೇಫೋನ್"</string>
     <string name="onHold" msgid="9035493194749959955">"ತಡೆಹಿಡಿಯಲಾಗಿದೆ"</string>
     <string name="mmiStarted" msgid="6347869857061147003">"MMI ಕೋಡ್‌ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ"</string>
     <string name="ussdRunning" msgid="485588686340541690">"USSD ಕೋಡ್‌ ಚಾಲನೆಯಲ್ಲಿದೆ…"</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"MMI ಕೋಡ್‌ ರದ್ದು ಮಾಡಲಾಗಿದೆ"</string>
-    <string name="cancel" msgid="5044513931633602634">"ರದ್ದುಮಾಡು"</string>
+    <string name="cancel" msgid="5044513931633602634">"ರದ್ದುಮಾಡಿ"</string>
     <string name="enter_input" msgid="1810529547726803893">"USSD ಸಂದೇಶದ ಅಕ್ಷರಗಳು <xliff:g id="MIN_LEN">%d</xliff:g> ಮತ್ತು <xliff:g id="MAX_LEN">%d</xliff:g> ನಡುವೆ ಇರಬೇಕು. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"ಕಾನ್ಫರೆನ್ಸ್ ಕರೆಯನ್ನು ನಿರ್ವಹಿಸಿ"</string>
     <string name="ok" msgid="3811371167865772377">"ಸರಿ"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆಯು ಕಾಣೆಯಾಗಿದೆ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸಿಲ್ಲ."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ಧ್ವನಿಮೇಲ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕೇವಲ ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರು ಮಾತ್ರ ಮಾರ್ಪಡಿಸಬಹುದು."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"ನಿಮ್ಮ ಸಿಮ್‌ ಕಾರ್ಡ್‌ನ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆಯಲಾಗಿದೆ. ನಿಮ್ಮ ಫೋನ್‌ ಅನ್‌ಲಾಕ್‌ ಆಗುತ್ತಿದೆ…"</string>
     <string name="label_ndp" msgid="780479633159517250">"ಸಿಮ್‌ ನೆಟ್‌ವರ್ಕ್‌ನ ಅನ್‌ಲಾಕ್‌ ಮಾಡುವ ಪಿನ್‌"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ಅನ್‌ಲಾಕ್"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ನೆಟ್‌ವರ್ಕ್‌ ಅನ್ನು ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ವಿನಂತಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ನೆಟ್‌ವರ್ಕ್‌ ಅನ್‌ಲಾಕ್‌ ವಿನಂತಿಯು ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ನೆಟ್‌ವರ್ಕ್‌ ಅನ್‌ಲಾಕ್‌ ಯಶಸ್ವಿಯಾಗಿದೆ."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ಸೆಲ್ಯುಲಾರ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -61,20 +62,22 @@
     <string name="settings_label" msgid="3876743539816984008">"ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ಇದರೊಂದಿಗೆ ಕರೆಗಳನ್ನು ಮಾಡಿ"</string>
-    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP ಕರೆಗಳನ್ನು ಇದರೊಂದಿಗೆ ಮಾಡಿ"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ಎಸ್‌ಐಪಿ ಕರೆಗಳನ್ನು ಇದರೊಂದಿಗೆ ಮಾಡಿ"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ಮೊದಲು ಕೇಳು"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ಯಾವುದೇ ನೆಟ್‌ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ಖಾತೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ಫೋನ್ ಖಾತೆಗಳು"</string>
-    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"ಎಸ್‌ಐಪಿ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ಖಾತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"ಎಲ್ಲಾ ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"ಯಾವ ಖಾತೆಗಳು ಕರೆಗಳನ್ನು ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi ಕರೆ ಮಾಡುವಿಕೆ"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"ಅಂತರ್ನಿರ್ಮಿತ ಸಂಪರ್ಕ ಸೇವೆ"</string>
     <string name="voicemail" msgid="8693759337917898954">"ಧ್ವನಿಮೇಲ್"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ಧ್ವನಿಮೇಲ್ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="networks" msgid="8873030692174541976">"ನೆಟ್‌ವರ್ಕ್‌ ಆಪರೇಟರ್‌ಗಳು"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"ತುರ್ತು ಪ್ರಸಾರಗಳು"</string>
     <string name="call_settings" msgid="6112441768261754562">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"ಅಲಭ್ಯವಿರುವಾಗ"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ಅಲಭ್ಯವಿರುವಾಗ ಸಂಖ್ಯೆ"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ಗೆ ಫಾರ್ವರ್ಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ಆಫ್"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ನಿಮ್ಮ ಫೋನ್‌ ಅನ್ನು ತಲುಪಲಾಗದಿದ್ದಾಗ ನಿಮ್ಮ ವಾಹಕ ಕರೆ ಫಾರ್ವರ್ಡ್‌ ಮಾಡುವಿಕೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
     <string name="updating_title" msgid="6146755386174019046">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕೇವಲ ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರು ಮಾತ್ರ ಬದಲಾಯಿಸಬಹುದು."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕ ಬಳಕೆದಾರರು ಮಾತ್ರ ಬದಲಾಯಿಸಬಹುದು."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ದೋಷ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಓದಲಾಗುತ್ತಿದೆ…"</string>
@@ -131,11 +134,11 @@
     <string name="fdn_check_failure" msgid="18200614306525434">"ನಿಮ್ಮ ಫೋನ್‌ ಅಪ್ಲಿಕೇಶನ್‌‌ನ ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಗಳ ಸೆಟ್ಟಿಂಗ್‌ ಅನ್ನು ಆನ್‌ ಮಾಡಲಾಗಿದೆ. ಪರಿಣಾಮ, ಕೆಲವು ಕರೆ ಸಂಬಂಧಿತ ವೈಶಿಷ್ಟ್ಯಗಳು ಕಾರ್ಯ ನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"ಈ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸುವ ಮೊದಲು ರೇಡಿಯೋ ಆನ್ ಮಾಡಿ."</string>
     <string name="close_dialog" msgid="2365884406356986917">"ಸರಿ"</string>
-    <string name="enable" msgid="7248657275000173526">"ಆನ್ ಮಾಡು"</string>
+    <string name="enable" msgid="7248657275000173526">"ಆನ್‌ ಮಾಡಿ"</string>
     <string name="disable" msgid="4678348128118573672">"ಆಫ್ ಮಾಡು"</string>
     <string name="change_num" msgid="239476305819844391">"ಅಪ್‌ಡೇಟ್‌ ಮಾಡು"</string>
   <string-array name="clir_display_values">
-    <item msgid="5560134294467334594">"ನೆಟ್‌ವರ್ಕ್ ಡೀಫಾಲ್ಟ್"</item>
+    <item msgid="5560134294467334594">"ನೆಟ್‌ವರ್ಕ್ ಡಿಫಾಲ್ಟ್"</item>
     <item msgid="7876195870037833661">"ಸಂಖ್ಯೆಯನ್ನು ಮರೆಮಾಡು"</item>
     <item msgid="1108394741608734023">"ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸು"</item>
   </string-array>
@@ -146,20 +149,31 @@
     <string name="no_change" msgid="3186040086622435212">"ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲಿಲ್ಲ."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ಧ್ವನಿಮೇಲ್‌ ಸೇವೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"ನನ್ನ ವಾಹಕ"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ಸೆಲ್ಯುಲಾರ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ಹಳೆಯ ಪಿನ್"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ಹೊಸ ಪಿನ್"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ಚಿಕ್ಕದಾಗಿದೆ."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ಉದ್ದವಾಗಿದೆ."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ಹೊಸ ಪಿನ್ ತುಂಬಾ ದುರ್ಬಲವಾಗಿದೆ. ಪ್ರಬಲ ಪಾಸ್‌ವರ್ಡ್ ನಿರಂತರ ಅನುಕ್ರಮ ಅಥವಾ ಪುನರಾವರ್ತಿತ ಅಂಕಿಗಳನ್ನು ಹೊಂದುವಂತಿಲ್ಲ."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"ಹಳೆಯ ಪಿನ್ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತಿಲ್ಲ."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"ಹೊಸ ಪಿನ್ ಅಮಾನ್ಯವಾದ ಅಕ್ಷರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"ಪಿನ್ ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ಬೆಂಬಲಿತವಲ್ಲದ ಸಂದೇಶ ಮಾದರಿ, ಆಲಿಸಲು <xliff:g id="NUMBER">%s</xliff:g> ಗೆ ಕರೆ ಮಾಡಿ."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌"</string>
     <string name="label_available" msgid="1181658289009300430">"ಲಭ್ಯವಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳು"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"ಹುಡುಕಲಾಗುತ್ತಿದೆ…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ಯಾವುದೇ ನೆಟ್‌ವರ್ಕ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ."</string>
-    <string name="search_networks" msgid="1601136049300882441">"ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಹುಡುಕು"</string>
+    <string name="search_networks" msgid="1601136049300882441">"ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಹುಡುಕಿ"</string>
     <string name="network_query_error" msgid="6828516148953325006">"ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕುತ್ತಿರುವಾಗ ದೋಷ."</string>
     <string name="register_on_network" msgid="9055203954040805084">"<xliff:g id="NETWORK">%s</xliff:g> ನಲ್ಲಿ ನೋಂದಾಯಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="not_allowed" msgid="5613353860205691579">"ಈ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕವನ್ನು ನಿಮ್ಮ ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಅನುಮತಿಸುವುದಿಲ್ಲ."</string>
     <string name="connect_later" msgid="2308119155752343975">"ಇದೀಗ ಈ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="registration_done" msgid="495135664535876612">"ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ನೋಂದಾಯಿಸಲಾಗಿದೆ."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ನೆಟ್‌ವರ್ಕ್‌ ಆಪರೇಟರ್‌ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="sum_search_networks" msgid="2921092249873272715">"ಎಲ್ಲ ಲಭ್ಯವಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕು"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆಮಾಡು"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ಪ್ರಾಶಸ್ತ್ಯ ನೀಡಲಾದ ನೆಟ್‌ವರ್ಕ್‌ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆಮಾಡು"</string>
+    <string name="sum_search_networks" msgid="2921092249873272715">"ಎಲ್ಲ ಲಭ್ಯವಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗಾಗಿ ಹುಡುಕಿ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ನೆಟ್‌ವರ್ಕ್‌ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆಮಾಡಿ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ನೆಟ್‌ವರ್ಕ್"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ಸ್ವಯಂಚಾಲಿತ ನೋಂದಣಿ…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ಬಯಸಿದ ನೆಟ್‌ವರ್ಕ್‌ ಪ್ರಕಾರ"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ನೆಟ್‌ವರ್ಕ್‌ ಕಾರ್ಯಾಚರಣಾ ಮೋಡ್‌ ಬದಲಿಸಿ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM ಮಾತ್ರ"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA ಗೆ ಪ್ರಾಶಸ್ತ್ಯ ನೀಡಲಾಗಿದೆ"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"ಕರೆಮಾಡಲಾಗುತ್ತಿದೆ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ನೆಟ್‌ವರ್ಕ್"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"ವರ್ಧಿಸಲಾದ 4G LTE ಮೋಡ್"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"ಸುಧಾರಿತ ಕರೆ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ಧ್ವನಿ ಮತ್ತು ಇತರ ಸಂವಹನಗಳನ್ನು ಸುಧಾರಿಸಲು LTE ಸೇವೆಗಳನ್ನು ಬಳಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ಡೇಟಾ ಸಕ್ರಿಯಗೊಂಡಿದೆ"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ಡೇಟಾ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
-    <string name="roaming" msgid="8871412572928323707">"ಡೇಟಾ ರೋಮಿಂಗ್"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ಎಚ್ಚರಿಕೆ"</string>
+    <string name="roaming" msgid="7894878421600247140">"ರೋಮಿಂಗ್"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ರೋಮಿಂಗ್‌ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸು"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"ರೋಮಿಂಗ್‌ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸು"</string>
-    <string name="roaming_reenable_message" msgid="8913735676127858115">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನ್ನು ಆಫ್‌ ಮಾಡಿರುವ ಸ್ಥಿತಿಯಲ್ಲಿ ನಿಮ್ಮ ಹೋಮ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಅನ್ನು ನೀವು ಇರಿಸಿರುವ ಕಾರಣ ನೀವು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಕಳೆದುಕೊಂಡಿರುವಿರಿ."</string>
+    <string name="roaming_reenable_message" msgid="8913735676127858115">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನ್ನು ಆಫ್‌ ಮಾಡಿರುವ ಸ್ಥಿತಿಯಲ್ಲಿ ನಿಮ್ಮ ಮುಖಪುಟ‌ ನೆಟ್‌ವರ್ಕ್‌ ಅನ್ನು ನೀವು ಇರಿಸಿರುವ ಕಾರಣ ನೀವು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಕಳೆದುಕೊಂಡಿರುವಿರಿ."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ನೀವು ಗಣನೀಯವಾಗಿ ಶುಲ್ಕಗಳನ್ನು ತೆರಬೇಕಾಗಬಹುದು."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನುಮತಿಸುವುದೇ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ಡೇಟಾ ಬಳಕೆ"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> ನಡುವೆ ಬಳಸಲಾದ ಮೊಬೈಲ್ ಡೇಟಾ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ವಾಹಕ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ ಬಳಸಿ ಡೇಟಾ ಪ್ರವೇಶಿಸಿ"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ವಾಹಕ ವೀಡಿಯೊ ಕರೆ ಮಾಡುವಿಕೆ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ಆಯ್ಕೆಗಳು"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ಆಯ್ಕೆಗಳು"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ಡೇಟಾ ಬಳಕೆ"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ಗರಿಷ್ಠ ಮಿತಿ ಮೀರಿದೆ\nಡೇಟಾ ದರವನ್ನು <xliff:g id="USED_1">%2$d</xliff:g> Kb/s ಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗಿದೆ"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"ಆವರ್ತನೆಯ <xliff:g id="USED_0">%1$d</xliff:g>٪ ತೆಗೆದುಕೊಂಡಿದೆ\nಮುಂದಿನ ಅವಧಿಯು <xliff:g id="USED_1">%2$d</xliff:g> ದಿನಗಳಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ಡೇಟಾ ಬಳಕೆ ಮಿತಿ ಮೀರಿದರೆ ಡೇಟಾ ದರವನ್ನು <xliff:g id="USED">%1$d</xliff:g> Kb/s ಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗುವುದು"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ನಿಮ್ಮ ವಾಹಕದ ಸೆಲ್ಯುಲಾರ್‌ ನೆಟ್‌ವರ್ಕ್ ಡೇಟಾ ಬಳಕೆ ನೀತಿ ಕುರಿತು ಇನ್ನಷ್ಟು ಮಾಹಿತಿ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ನಿಮ್ಮ ವಾಹಕಗಳ ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್ ಡೇಟಾ ಬಳಕೆ ನೀತಿ ಕುರಿತು ಇನ್ನಷ್ಟು ಮಾಹಿತಿ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"ಸೆಲ್‌ ಪ್ರಸಾರ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"ಸೆಲ್‌ ಪ್ರಸಾರ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"ಸೆಲ್‌ ಪ್ರಸಾರ SMS ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -332,18 +358,18 @@
     <string name="carrier_settings_title" msgid="9028166176523012300">"ವಾಹಕ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="fdn" msgid="7878832555095183202">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಗಳು"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"ಸ್ಥಿರ ಡಯಲ್ ಸಂಖ್ಯೆಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"FDN ಪಟ್ಟಿ"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN ಪಟ್ಟಿ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"FDN ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"ಎಫ್‌ಡಿಎನ್‌ ಪಟ್ಟಿ"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"ಎಫ್‌ಡಿಎನ್‌ ಪಟ್ಟಿ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"ಎಫ್‌ಡಿಎನ್‌ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="fdn_disabled" msgid="4700049736675368279">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"FDN ಸಕ್ರಿಯಗೊಳಿಸು"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"FDN ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"ಎಫ್‌ಡಿಎನ್‌ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"ಎಫ್‌ಡಿಎನ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"</string>
     <string name="change_pin2" msgid="2153563695382176676">"PIN2 ಬದಲಾಯಿಸಿ"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN ಸಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"ಎಫ್‌ಡಿಎನ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"ಎಫ್‌ಡಿಎನ್‌ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ಪ್ರವೇಶಕ್ಕಾಗಿ ಪಿನ್‌ ಬದಲಾಯಿಸಿ"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"ಎಫ್‌ಡಿಎನ್‌ ಪ್ರವೇಶಕ್ಕಾಗಿ ಪಿನ್‌ ಬದಲಾಯಿಸಿ"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ಫೋನ್ ಸಂಖ್ಯೆ ಪಟ್ಟಿಯನ್ನು ನಿರ್ವಹಿಸಿ"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"ಧ್ವನಿ ಗೌಪ್ಯತೆ"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"ಗೌಪ್ಯತೆ ವರ್ಧಿತ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು"</string>
@@ -353,8 +379,9 @@
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"ಸ್ವಯಂ ಮರುಪ್ರಯತ್ನಿಸುವಿಕೆ ಮೋಡ್‌‌ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY ಮೋಡ್ ವೀಡಿಯೊ ಕರೆಯ ಸಂದರ್ಭದಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
     <string name="menu_add" msgid="1882023737425114762">"ಸಂಪರ್ಕ ಸೇರಿಸಿ"</string>
-    <string name="menu_edit" msgid="7143003705504672374">"ಸಂಪರ್ಕವನ್ನು ಸಂಪಾದಿಸಿ"</string>
+    <string name="menu_edit" msgid="7143003705504672374">"ಸಂಪರ್ಕವನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"ಸಂಪರ್ಕವನ್ನು ಅಳಿಸಿ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"ಸಂಪರ್ಕ ಡಯಲ್‌ ಮಾಡಿ"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 ಅನ್ನು ಟೈಪ್‌ ಮಾಡಿ"</string>
     <string name="name" msgid="7329028332786872378">"ಹೆಸರು"</string>
     <string name="number" msgid="7905950798349903858">"ಸಂಖ್ಯೆ"</string>
@@ -362,16 +389,16 @@
     <string name="add_fdn_contact" msgid="2481915899633353976">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ."</string>
-    <string name="edit_fdn_contact" msgid="7976936035587081480">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಿ"</string>
+    <string name="edit_fdn_contact" msgid="7976936035587081480">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="updating_fdn_contact" msgid="8370929876849803600">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="fdn_contact_updated" msgid="5497828782609005017">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಯನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ."</string>
-    <string name="delete_fdn_contact" msgid="6668958073074151717">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಅಳಿಸು"</string>
+    <string name="delete_fdn_contact" msgid="6668958073074151717">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಅಳಿಸಿ"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ಸ್ಥಿರ ಡಯಲಿಂಗ್‌‌ ಸಂಖ್ಯೆಯನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಯನ್ನು ಅಳಿಸಲಾಗಿದೆ."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"ನೀವು ತಪ್ಪಾದ ಪಿನ್‌ ಟೈಪ್‌ ಮಾಡಿರುವ ಕಾರಣ FDN ಅನ್ನು ನವೀಕರಿಸಲಾಗಲಿಲ್ಲ."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"ಸಂಖ್ಯೆಯು 20 ಅಂಕಿಗಳನ್ನು ಮೀರದ ಕಾರಣ FDN ಅನ್ನು ನವೀಕರಿಸಲಾಗಲಿಲ್ಲ."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ಅನ್ನು ನವೀಕರಿಸಲಾಗಲಿಲ್ಲ. PIN2 ತಪ್ಪಾಗಿದೆ ಅಥವಾ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ."</string>
-    <string name="fdn_failed" msgid="540018079008319747">"FDN ಕಾರ್ಯಾಚರಣೆ ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"ನೀವು ತಪ್ಪಾದ ಪಿನ್‌ ಟೈಪ್‌ ಮಾಡಿರುವ ಕಾರಣ ಎಫ್‌ಡಿಎನ್‌ ಅನ್ನು ನವೀಕರಿಸಲಾಗಲಿಲ್ಲ."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"ಸಂಖ್ಯೆಯು ಖಾಲಿ ಇರುವುದರಿಂದ ಅಥವಾ 20 ಅಂಕಿಗಳನ್ನು ಮೀರುವುದರಿಂದಾಗಿ ಎಫ್‌ಡಿಎನ್‌ ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿಲ್ಲ."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"ಎಫ್‌ಡಿಎನ್‌ ಅನ್ನು ನವೀಕರಿಸಲಾಗಲಿಲ್ಲ. PIN2 ತಪ್ಪಾಗಿದೆ ಅಥವಾ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ತಿರಸ್ಕರಿಸಲಾಗಿದೆ."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"ಎಫ್‌ಡಿಎನ್‌ ಕಾರ್ಯಾಚರಣೆ ವಿಫಲವಾಗಿದೆ."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಿಂದ ಓದಲಾಗುತ್ತಿದೆ…"</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"ನಿಮ್ಮ ಸಿಮ್‌ ಕಾರ್ಡ್‌ನಲ್ಲಿ ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"ಆಮದು ಮಾಡಲು ಸಂಪರ್ಕಗಳು"</string>
@@ -391,7 +418,7 @@
     <string name="enable_pin_ok" msgid="2918545971413270063">"PIN ಹೊಂದಿಸಲಾಗಿದೆ"</string>
     <string name="disable_pin_ok" msgid="2109571368635883688">"PIN ತೆರವುಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="pin_failed" msgid="5644377896213584760">"PIN ತಪ್ಪಾಗಿದೆ"</string>
-    <string name="pin_changed" msgid="4455736268023261662">"PIN ನವೀಕರಿಸಲಾಗಿದೆ"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"PIN ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ"</string>
     <string name="puk_requested" msgid="5921393215789090200">"ಪಾಸ್‌ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ. PIN ಇದೀಗ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. PUK ವಿನಂತಿಸಲಾಗಿದೆ."</string>
     <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
     <string name="oldPin2Label" msgid="8559146795026261502">"ಹಳೆಯ PIN2"</string>
@@ -402,7 +429,7 @@
     <string name="mismatchPin2" msgid="4177967478551851117">"PIN2s ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="invalidPin2" msgid="1757045131429105595">"4 ರಿಂದ 8 ಸಂಖ್ಯೆಗಳ PIN2 ನಮೂದಿಸಿ."</string>
     <string name="invalidPuk2" msgid="7059081153334815973">"8 ಸಂಖ್ಯೆಗಳ PUK2 ನಮೂದಿಸಿ."</string>
-    <string name="pin2_changed" msgid="3724522579945610956">"PIN2 ನವೀಕರಿಸಲಾಗಿದೆ"</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"PIN2 ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"PUK2 ಕೋಡ್ ನಮೂದಿಸಿ"</string>
     <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"ಪಾಸ್‌ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ. PIN2 ಇದೀಗ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು, PIN 2 ಬದಲಾಯಿಸಿ."</string>
     <string name="puk2_requested" msgid="5831015200030161434">"ಪಾಸ್‌ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ. SIM ಅನ್ನು ಇದೀಗ ಲಾಕ್ ಮಾಡಲಾಗಿದೆ. PUK2 ನಮೂದಿಸಿ."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ಅಪರಿಚಿತ ಧ್ವನಿಮೇಲ್‌ ಸಂಖ್ಯೆ"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ಯಾವುದೇ ಸೇವೆಯಿಲ್ಲ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ಆಯ್ಕೆಮಾಡಿದ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ಕರೆ ಮಾಡಲು ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
-    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ ಅಥವಾ ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ಕರೆ ಮಾಡಲು ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಆನ್ ಮಾಡಿ, ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಅಥವಾ ಬ್ಯಾಟರಿ ಉಳಿತಾಯ ಮೋಡ್ ಅನ್ನು ಆಫ್ ಮಾಡಿ."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ಕರೆ ಮಾಡಲು ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ."</string>
+    <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಆಫ್ ಮಾಡಿ ಅಥವಾ ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"ತುರ್ತು ರಹಿತ ಕರೆಯನ್ನು ಮಾಡಲು ತುರ್ತು ಮರು ಕರೆಮಾಡುವಿಕೆ ಮೋಡ್ ಅನ್ನು ನಿರ್ಗಮಿಸಿ."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ನೆಟ್‌ವರ್ಕ್‌ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ಸೆಲ್ಯುಲಾರ್ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ಸೆಲ್ಯುಲಾರ್ ನೆಟ್‌ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ. ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"ಮೊಬೈಲ್‌ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿಲ್ಲ."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ. ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ಅನುಕ್ರಮ ಪ್ರಾರಂಭವಾಗುತ್ತಿದೆ…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ಕರೆ ವಿಫಲವಾಗಿದೆ."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ಕರೆಯನ್ನು ಈ ಸಮಯದಲ್ಲಿ ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ಸೇವೆಯು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ಕರೆಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ಕರೆಯನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
@@ -442,17 +470,20 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ಕಾನ್ಫರೆನ್ಸ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ಕರೆಯನ್ನು ತಿರಸ್ಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ಕರೆ(ಗಳು) ಬಿಡುಗಡೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
-    <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ಕರೆಗಳನ್ನು ಹೋಲ್ಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ."</string>
+    <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ಕರೆ ಮಾಡಲು ವೈರ್‌ಲೆಸ್ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ಕರೆ ಮಾಡಲು ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ತುರ್ತು ಕರೆಗಳು"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ರೇಡಿಯೋ ಆನ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ಯಾವುದೇ ಸೇವೆ ಇಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ತುರ್ತು ಕರೆ ಸಮಯದಲ್ಲಿ ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್‌ಗೆ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ಇದು ತುರ್ತು ಸಂಖ್ಯೆಯಲ್ಲ."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ಕರೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ತುರ್ತು ಸಂಖ್ಯೆಯನ್ನು ಡಯಲ್ ಮಾಡಿ."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ಡಯಲ್‌ ಮಾಡಲು ಕೀಬೋರ್ಡ್‌ ಬಳಸಿ"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"ಹೋಲ್ಡ್‌‌ ಮಾಡು"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"ಮುಕ್ತಾಯ"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"ಡಯಲ್‌ಪ್ಯಾಡ್‌"</string>
-    <string name="onscreenMuteText" msgid="5011369181754261374">"ಮ್ಯೂಟ್ ಮಾಡು"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"ಮ್ಯೂಟ್ ಮಾಡಿ"</string>
     <string name="onscreenAddCallText" msgid="5140385634712287403">"ಕರೆಯನ್ನು ಸೇರಿಸು"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"ಕರೆಗಳನ್ನು ವಿಲೀನಗೊಳಿಸು"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"ಸ್ವ್ಯಾಪ್‌ ಮಾಡು"</string>
@@ -464,7 +495,9 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"ಎಲ್ಲವನ್ನೂ ಆಮದು ಮಾಡು"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"ಸಿಮ್‌ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"ಸಂಪರ್ಕಗಳಿಂದ ಆಮದು ಮಾಡು"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"ಶ್ರವಣ ಸಾಧನಗಳು"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"ಆಮದು ಮಾಡಿದ ಸಂಪರ್ಕ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"ಸಂಪರ್ಕ ಆಮದು ಮಾಡುವಲ್ಲಿ ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"ಕೇಳುವಿಕೆ ಸಾಧನಗಳು"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"ಶ್ರವಣ ಸಾಧನ ಹೊಂದಾಣಿಕೆಯನ್ನು ಆನ್‌ ಮಾಡಿ"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY ಆಫ್"</item>
@@ -485,7 +518,7 @@
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ..."</string>
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"ನಿಮ್ಮ ಮೊಬೈಲ್‌‌ ಡೇಟಾ ಸೇವೆಯನ್ನು ಫೋನ್‌ ಸಕ್ರಿಯಗೊಳಿಸುತ್ತಿದೆ.\n\nಇದು ಸುಮಾರು 5 ನಿಮಿಷಗಳ ಕಾಲಾವಕಾಶ ತೆಗೆದುಕೊಳ್ಳಬಹುದು."</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"ಸಕ್ರಿಯಗೊಳಿಸುವುದನ್ನು ಸ್ಕಿಪ್‌ ಮಾಡುವುದೇ?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"ನೀವು ಸಕ್ರಿಯಗೊಳಿಸುವುದನ್ನು ಸ್ಕಿಪ್‌ ಮಾಡಿದರೆ, ನೀವು ಕರೆಗಳನ್ನು ಮಾಡಲು ಅಥವಾ ಮೊಬೈಲ್‌ ಡೇಟಾ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ (ಆದರೂ ನೀವು Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಗೊಳಿಸಬಹುದು). ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸುವವರೆಗೂ, ನೀವು ಅದನ್ನು ಪ್ರತಿಬಾರಿ ಆನ್‌ ಮಾಡಿದಾಗಲೆಲ್ಲಾ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ನಿಮಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ."</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"ನೀವು ಸಕ್ರಿಯಗೊಳಿಸುವುದನ್ನು ಸ್ಕಿಪ್‌ ಮಾಡಿದರೆ, ನೀವು ಕರೆಗಳನ್ನು ಮಾಡಲು ಅಥವಾ ಮೊಬೈಲ್‌ ಡೇಟಾ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ (ಆದರೂ ನೀವು ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸಂಪರ್ಕಗೊಳಿಸಬಹುದು). ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸುವವರೆಗೂ, ನೀವು ಅದನ್ನು ಪ್ರತಿಬಾರಿ ಆನ್‌ ಮಾಡಿದಾಗಲೆಲ್ಲಾ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ನಿಮಗೆ ತಿಳಿಸಲಾಗುತ್ತದೆ."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"ಸ್ಕಿಪ್"</string>
     <string name="ota_activate" msgid="1368528132525626264">"ಸಕ್ರಿಯಗೊಳಿಸು"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"ಫೋನ್‌ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
@@ -498,16 +531,13 @@
     <string name="ota_unsuccessful" msgid="8072141612635635357">"ನಿಮ್ಮ ಫೋನ್‌ ಸಕ್ರಿಯಗೊಳ್ಳಲಿಲ್ಲ. \n ಅತ್ಯುತ್ತಮ ಪ್ರಸಾರವ್ಯಾಪ್ತಿ ಹೊಂದಿರುವ ಪ್ರದೇಶವನ್ನು ಹುಡುಕಬೇಕಾಗಬಹುದು (ಕಿಟಕಿ ಹತ್ತಿರ ಅಥವಾ ಹೊರಗಡೆ). \n\nಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳಿಗಾಗಿ ಗ್ರಾಹಕ ಸೇವೆಗೆ ಕರೆ ಮಾಡಿ."</string>
     <string name="ota_spc_failure" msgid="3909983542575030796">"ಮಿತಿಮೀರಿದ SPC ವೈಫಲ್ಯಗಳು"</string>
     <string name="ota_call_end" msgid="4537279738134612388">"ಹಿಂದೆ"</string>
-    <string name="ota_try_again" msgid="7685477206465902290">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು"</string>
+    <string name="ota_try_again" msgid="7685477206465902290">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
     <string name="ota_next" msgid="3904945374358235910">"ಮುಂದಿನದು"</string>
     <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"ತುರ್ತು ಕಾಲ್‌ಬ್ಯಾಕ್‌ ಮೋಡ್‌ ನಮೂದಿಸಲಾಗಿದೆ"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ತುರ್ತು ಕಾಲ್‌ಬ್ಯಾಕ್‌ ಮೋಡ್‌"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ಡೇಟಾ ಸಂಪರ್ಕ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"> <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> ರವರೆಗೆ ಯಾವುದೇ ಡೇಟಾ ಸಂಪರ್ಕವಿಲ್ಲ"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">ಪೋನ್‌ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್‌ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್‌ನಲ್ಲಿರುವಾಗ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಬಳಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
       <item quantity="other">ಪೋನ್‌ <xliff:g id="COUNT_1">%s</xliff:g> ನಿಮಿಷಗಳ ಕಾಲ ತುರ್ತು ಮರಳಿ ಕರೆಮಾಡು ಮೋಡ್‌ನಲ್ಲಿರುತ್ತದೆ. ಈ ಮೋಡ್‌ನಲ್ಲಿರುವಾಗ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿಕೊಂಡು ಬಳಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ನೀವು ಇದೀಗ ನಿರ್ಗಮಿಸಲು ಬಯಸುವಿರಾ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"ಸಂಪರ್ಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ಧ್ವನಿ ಕರೆ ಮಾಡುವಿಕೆ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ಡಯಲ್"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ವೈಬ್ರೇಟ್‌"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ವೈಬ್ರೇಟ್‌"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ದೃಶ್ಯ ಧ್ವನಿಮೇಲ್"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ಧ್ವನಿ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"ಪಿನ್ ಹೊಂದಿಸಿ"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ಪಿನ್ ಬದಲಾಯಿಸಿ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ರಿಂಗ್‌ಟೋನ್‌‌ &amp; ವೈಬ್ರೇಟ್‌"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"ಅಂತರ್-ರಚಿತ ಸಿಮ್‌ ಕಾರ್ಡ್‌ಗಳು"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ವೀಡಿಯೊ ಕರೆಯನ್ನು ಆನ್ ಮಾಡಿ"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ತುರ್ತು ಕರೆ ಮಾಡುವಿಕೆ ಮಾತ್ರ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM ಕಾರ್ಡ್, ಸ್ಲಾಟ್: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ಒಳಬರುವ Wi-Fi ಕರೆ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"ಅವರಿಂದ ವೈ-ಫೈ ಕರೆ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ವೈ-ಫೈ ಕರೆ"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ತೆರೆಯಲು ಮತ್ತೊಮ್ಮೆ ಸ್ಪರ್ಶಿಸಿ"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ತೆರೆಯಲು ಮತ್ತೆ ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"ಸಂದೇಶವನ್ನು ಡೀಕೋಡ್ ಮಾಡುವಾಗ ದೋಷವುಂಟಾಗಿದೆ."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ನಿಮ್ಮ ಸೇವೆಯನ್ನು ಸಿಮ್‌ ಕಾರ್ಡ್‌ ಸಕ್ರಿಯಗೊಳಿಸಿದೆ ಮತ್ತು ನಿಮ್ಮ ಫೋನ್‌ನ ರೋಮಿಂಗ್ ಸಾಮರ್ಥ್ಯವನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ಹಲವಾರು ಸಕ್ರಿಯ ಕರೆಗಳು. ಹೊಸ ಕರೆ ಮಾಡುವ ಮೊದಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕರೆಗಳನ್ನು ಅಂತ್ಯಗೊಳಿಸಿ ಅಥವಾ ವಿಲೀನಗೊಳಿಸಿ."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ಸಿಮ್ ಕಾರ್ಡ್ ಸೇರಿಸಿ."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"ವೈ-ಫೈ ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡಿದೆ. ಕರೆ ಅಂತ್ಯಗೊಂಡಿದೆ."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ಧ್ವನಿಮೇಲ್ ಪಿನ್‌ ಬದಲಾಯಿಸಿ"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ಮುಂದುವರಿಸು"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ರದ್ದುಮಾಡಿ"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ಸರಿ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"ನಿಮ್ಮ ಹಳೆಯ ಪಿನ್‌ ಅನ್ನು ದೃಢೀಕರಿಸಿ"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಅನ್ನು ನಮೂದಿಸಿ."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"ಹೊಸ ಪಿನ್ ಹೊಂದಿಸಿ"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ಪಿನ್ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> ಅಂಕಿಗಳನ್ನು ಹೊಂದಿರಬೇಕು."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ನಿಮ್ಮ ಪಿನ್‌ ಅನ್ನು ದೃಢೀಕರಿಸಿ"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"ಪಿನ್‌ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗುವುದಿಲ್ಲ"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ಧ್ವನಿಮೇಲ್ ಪಿನ್ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ಪಿನ್ ಹೊಂದಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
 </resources>
diff --git a/res/values-ko/config.xml b/res/values-ko/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ko/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index d4c9596..908067a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"이동통신 데이터"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"모바일 데이터"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"전화 서비스"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"긴급 통화"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"휴대전화"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"음성사서함 번호 없음"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 카드에 저장된 음성사서함 번호가 없습니다."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"번호 추가"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"기본 사용자만 음성사서함 설정을 변경할 수 있습니다."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM 카드의 잠금이 해제되었습니다. 휴대전화의 잠금해제 중..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM 네트워크 잠금해제 PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"잠금해제"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"네트워크 잠금해제 요청 중..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"네트워크 잠금해제 요청이 실패했습니다."</string>
     <string name="unlock_success" msgid="6770085622238180152">"네트워크의 잠금을 해제했습니다."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"이 사용자는 이동통신망 설정을 사용할 수 없습니다."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"이 사용자는 모바일 네트워크 설정을 사용할 수 없습니다."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 통화 설정"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM 통화 설정(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 통화 설정"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"전화 걸기 대상"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP 전화 걸기 대상"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"확인 후 걸기"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"사용 가능한 네트워크 없음"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"설정"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"계정 선택"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"전화 계정"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"음성사서함"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"음성사서함(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"알림"</string>
     <string name="networks" msgid="8873030692174541976">"네트워크 운영자"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"긴급 방송"</string>
     <string name="call_settings" msgid="6112441768261754562">"통화 설정"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"전화를 받을 수 없는 경우"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"전화를 받을 수 없는 경우 착신전환할 번호"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g>(으)로 착신전환"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"사용 중지됨"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"사용 안함"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"이동통신사에서 전화를 받을 수 없을 때 착신전환 사용 중지를 지원하지 않습니다."</string>
     <string name="updating_title" msgid="6146755386174019046">"통화 설정"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"기본 사용자만 통화 설정을 변경할 수 있습니다."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"관리자만 통화 설정을 변경할 수 있습니다."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"설정(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"통화 설정 오류"</string>
     <string name="reading_settings" msgid="1920291699287055284">"설정을 읽는 중..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"변경사항이 없습니다."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"음성사서함 서비스 선택"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"이동통신사"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"이동통신망 설정"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"이전 PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"새 PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"잠시 기다려 주세요."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"새 PIN이 너무 짧습니다."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"새 PIN이 너무 깁니다."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"새 PIN의 안정성이 낮습니다. 안전한 비밀번호에는 연속되는 숫자 또는 반복되는 숫자를 사용하지 말아야 합니다."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"이전 PIN이 일치하지 않습니다."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"새 PIN에 잘못된 문자가 있습니다."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN을 변경할 수 없습니다."</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"지원되지 않는 메시지 유형입니다. 들으려면 <xliff:g id="NUMBER">%s</xliff:g>번으로 전화하세요."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"모바일 네트워크 설정"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"모바일 네트워크"</string>
     <string name="label_available" msgid="1181658289009300430">"사용 가능한 네트워크"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"검색 중..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"네트워크를 찾을 수 없습니다."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"네트워크에 등록되었습니다."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"네트워크 운영자 선택"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"사용 가능한 모든 네트워크 검색"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"자동으로 선택"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"기본 설정 네트워크를 자동으로 선택"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"네트워크 자동 선택"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"네트워크"</string>
     <string name="register_automatically" msgid="6017849844573519637">"자동 등록..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"기본 네트워크 유형"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"네트워크 작동 모드 변경"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM 전용"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA로 기본 설정"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"통화"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"네트워크"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"향상된 4G LTE 모드"</string>
-    <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTE 서비스를 사용하여 음성 및 기타 통신을 개선할 수 있습니다(권장)."</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"고급 통화"</string>
+    <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTE 서비스를 사용하여 음성 및 기타 통신을 개선할 수 있습니다(권장)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"데이터 사용"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"데이터 사용 허용"</string>
-    <string name="roaming" msgid="8871412572928323707">"데이터 로밍"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"주의"</string>
+    <string name="roaming" msgid="7894878421600247140">"로밍"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"로밍 시 데이터 서비스에 연결"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"로밍 시 데이터 서비스에 연결"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"데이터 로밍을 사용 중지한 상태에서 홈 네트워크를 벗어났으므로 데이터 연결이 끊어졌습니다."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"많은 요금이 부과될 수 있습니다."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"데이터 로밍을 허용하시겠습니까?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"데이터 사용량"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> 기간에 사용된 모바일 데이터: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"이동통신사"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"모바일 데이터"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"모바일 네트워크를 사용하여 데이터 액세스"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi 통화"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"이동통신사 화상 통화"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 옵션"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA 옵션"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"데이터 사용"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"최대치 <xliff:g id="USED_0">%1$s</xliff:g> 초과\n데이터 속도가 <xliff:g id="USED_1">%2$d</xliff:g>Kb/s로 감소"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"주기의 <xliff:g id="USED_0">%1$d</xliff:g>٪ 경과\n다음 기간은 <xliff:g id="USED_1">%2$d</xliff:g>일 후에 시작(<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"데이터 사용량 제한을 초과하면 데이터 속도는 <xliff:g id="USED">%1$d</xliff:g>Kb/s로 줄어듭니다."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"이동통신사의 이동통신망 데이터 사용 정책에 대한 자세한 정보"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"이동통신사의 모바일 네트워크 데이터 사용 정책에 대한 자세한 정보"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"셀 브로드캐스트 SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"셀 브로드캐스트 SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"셀 브로드캐스트 SMS 사용"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"연락처 추가"</string>
     <string name="menu_edit" msgid="7143003705504672374">"연락처 수정"</string>
     <string name="menu_delete" msgid="3977150783449642851">"연락처 삭제"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"연락처로 전화 걸기"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 유형"</string>
     <string name="name" msgid="7329028332786872378">"이름"</string>
     <string name="number" msgid="7905950798349903858">"번호"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"발신 허용 번호를 삭제하는 중..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"발신 허용 번호가 삭제되었습니다."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"잘못된 PIN을 입력하여 FDN 업데이트 안됨"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"숫자가 20자리를 초과할 수 없으므로 FDN을 업데이트하지 못했습니다."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"숫자가 비어있거나 20자리를 초과하여 FDN을 업데이트하지 못했습니다."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN이 업데이트되지 않았습니다. PIN2가 잘못되었거나 전화번호가 거부되었습니다."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN 작업이 실패했습니다."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM 카드에서 읽는 중..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"알 수 없는 음성사서함 번호"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"서비스 불가"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"선택한 네트워크(<xliff:g id="OPERATOR_NAME">%s</xliff:g>)를 사용할 수 없음"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"전화를 걸려면 비행기 모드를 사용 중지하세요."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"전화를 걸려면 모바일 네트워크를 사용 설정하고 비행기 모드 또는 배터리 세이버 모드를 사용 중지하세요."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"전화를 걸려면 비행기 모드를 사용 중지하세요."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"전화를 걸려면 비행기 모드를 사용 중지하거나 무선 네트워크에 연결하세요."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"일반 전화를 걸려면 긴급 콜백 모드를 해제하세요."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"네트워크에서 등록되지 않았습니다."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"사용 가능한 이동통신망이 없습니다."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"모바일 네트워크를 사용할 수 없습니다. 전화를 걸려면 무선 네트워크에 연결하세요."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"모바일 네트워크를 사용할 수 없습니다."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"모바일 네트워크를 사용할 수 없습니다. 전화를 걸려면 무선 네트워크에 연결하세요."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"전화를 걸려면 올바른 번호를 입력하세요."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"전화를 걸 수 없습니다."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI 시퀀스 시작 중..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"전화 연결 실패"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"현재 통화를 추가할 수 없습니다."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"지원되지 않는 서비스입니다."</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"통화를 전환할 수 없습니다."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"통화를 분리할 수 없습니다."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"다자간 통화를 할 수 없습니다."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"통화를 거절할 수 없습니다."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"통화를 끊을 수 없습니다."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"통화를 보류할 수 없습니다."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"전화를 걸려면 무선 네트워크에 연결하세요."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"전화를 걸려면 Wi-Fi 통화를 사용 설정하세요."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"긴급 전화"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"무선을 켜는 중..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"서비스를 사용할 수 없습니다. 다시 시도 중..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"긴급 통화 중에는 비행기 모드를 사용할 수 없습니다."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"전화를 걸 수 없습니다. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g>은(는) 긴급 번호가 아닙니다."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"전화를 걸 수 없습니다. 긴급 번호를 사용하세요."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"키보드를 사용하여 전화걸기"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"모두 가져오기"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM 주소록 가져오는 중"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"주소록에서 가져오기"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"연락처를 가져왔습니다."</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"연락처를 가져오지 못했습니다."</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"보청기"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"보청기 호환 사용"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"긴급 콜백 모드 시작"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"긴급 콜백 모드"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"데이터 연결이 끊김"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g>분 동안 데이터 연결 없음</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g>분 동안 데이터 연결 없음</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g>까지 데이터 연결 없음"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">휴대전화가 <xliff:g id="COUNT_1">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 긴급 콜백 모드에서는 데이터 연결을 이용하는 애플리케이션을 사용할 수 없습니다. 지금 종료하시겠습니까?</item>
       <item quantity="one">휴대전화가 <xliff:g id="COUNT_0">%s</xliff:g>분 동안 긴급 콜백 모드로 전환됩니다. 긴급 콜백 모드에서는 데이터 연결을 이용하는 앱을 사용할 수 없습니다. 지금 종료하시겠습니까?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"연락처 선택"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"음성통화 지원되지 않음"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"전화걸기"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"진동"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"진동"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"시각적 음성사서함"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"알림음"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN 설정"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN 변경"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"벨소리 및 진동"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"내장된 SIM 카드"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"화상 통화 사용"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"긴급 전화 전용"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM 카드, 슬롯: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"접근성"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 수신 전화"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi 수신 전화:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 통화"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"다시 터치하여 열기"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"다시 탭하여 열기"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"메시지를 디코딩하는 중에 오류가 발생했습니다."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 카드로 서비스가 활성화되었으며 휴대전화 로밍 기능이 업데이트되었습니다."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"활성화된 통화가 너무 많습니다. 새로운 전화를 걸기 전에 기존의 통화를 끝내거나 합치세요."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"연결할 수 없습니다. 유효한 SIM 카드를 삽입하세요."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi 연결이 끊어져 통화가 종료되었습니다."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"음성사서함 PIN 변경"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"계속"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"취소"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"확인"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"이전 PIN 확인"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"계속하려면 음성사서함 PIN을 입력하세요."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"새 PIN 설정"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN은 <xliff:g id="MIN">%1$d</xliff:g>~<xliff:g id="MAX">%2$d</xliff:g>자 사이여야 합니다."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN 확인"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN이 일치하지 않음"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"음성사서함 PIN이 업데이트되었습니다."</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN을 설정할 수 없습니다."</string>
 </resources>
diff --git a/res/values-ky-rKG/arrays.xml b/res/values-ky/arrays.xml
similarity index 94%
rename from res/values-ky-rKG/arrays.xml
rename to res/values-ky/arrays.xml
index ebaa329..e7ff02d 100644
--- a/res/values-ky-rKG/arrays.xml
+++ b/res/values-ky/arrays.xml
@@ -18,7 +18,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <string-array name="preferred_network_mode_choices_world_mode">
-    <item msgid="3391522821603584785">"Глобалдуу"</item>
+    <item msgid="3391522821603584785">"Дүйнөлүк"</item>
     <item msgid="6753774959494729275">"LTE / CDMA"</item>
     <item msgid="8658695584186942227">"LTE / GSM / UMTS"</item>
   </string-array>
diff --git a/res/values-ky/config.xml b/res/values-ky/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ky/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky/strings.xml
similarity index 82%
rename from res/values-ky-rKG/strings.xml
rename to res/values-ky/strings.xml
index 337f84e..bf6453e 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky/strings.xml
@@ -16,11 +16,12 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Уюлдук дайындар"</string>
+    <!-- no translation found for phoneAppLabel (8576272342240415145) -->
+    <skip />
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефон кызматтары"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Өзгөчө кырдаалдагы тергич"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"FDN тизмеси"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Уруксат берилген номерлер тизмеси"</string>
     <string name="unknown" msgid="6878797917991465859">"Белгисиз"</string>
     <string name="private_num" msgid="6713286113000232309">"Купуя номер"</string>
     <string name="payphone" msgid="4793877574636445118">"Таксофон"</string>
@@ -45,6 +46,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Үн почтасынын номери жок болуп жатат"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM-картада сакталган үн почтасынын номери жок."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Номер кошуу"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Үн почта жөндөөлөрүн алгачкы колдонуучу гана өзгөртө алат."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM-картаңыз бөгөттөн чыгарылган. Телефонуңуздун кулпусу ачылууда…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM-карта тармагынын кулпусун ачуучу PIN код"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Кулпусун ачуу"</string>
@@ -52,17 +54,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Тармак кулпусун ачуу суралууда…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Тармактын кулпусун ачуу өтүнүчү ишке ашкан жок."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Тармактын кулпусу ийгиликтүү ачылды."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Уюктук тармак жөндөөлөрү бул колдонуучу үчүн жеткиликтүү эмес"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Бул колдонуучу мобилдик тармак жөндөөлөрүн колдоно албайт"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM чалуунун жөндөөлөрү"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM чалуунун жөндөөлөрү (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA чалуунун жөндөөлөрү"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"CDMA чалуунун жөндөөлөрү (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"Мүмкүнчүлүк алуу түйүнүнүн аталыштары"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Туташуу түйүндөрү (APN)"</string>
     <string name="settings_label" msgid="3876743539816984008">"Тармак жөндөөлөрү"</string>
-    <string name="phone_accounts" msgid="6376603393888116364">"Чалуучу каттоо эсептери"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Чалуу үчүн каттоо эсептер"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Чалууларды төмөнкү менен жасоо"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP чалууларын төмөнкү менен жасоо"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Биринчи сурасын"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Тармак жок"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Жөндөөлөр"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Каттоо эсептерин тандоо"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефон каттоо эсептери"</string>
@@ -75,8 +78,9 @@
     <string name="voicemail" msgid="8693759337917898954">"Үн почтасы"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Үн почтасы (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ҮП:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Эскертмелер"</string>
     <string name="networks" msgid="8873030692174541976">"Тармактык операторлор"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Шашылыш таркатмалар"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Өзгөчө кырдаал тууралуу кулактандыруу"</string>
     <string name="call_settings" msgid="6112441768261754562">"Чалуу жөндөөлөрү"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Кошумча жөндөөлөр"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Кошумча жөндөөлөр (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -84,15 +88,15 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Кошумча CDMA чалуунун жөндөөлөрү"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"CDMA менен гана чалуунун кошумча жөндөөлөрү"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Тармак кызматынын жөндөөлөрү"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"Номурду аныктоо"</string>
-    <string name="sum_loading_settings" msgid="1826692909391168620">"Тууралоолор жүктөлүүдө…"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"Чалуучуну аныктоо"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Жөндөөлөр жүктөлүүдө…"</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Чыгуучу чалууларда номер жашырылган"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Чыгуучу чалууларда көрсөтүлчү номер"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Номеримди чыгуучу чалууларда көрсөтүү үчүн демейки оператор жөндөөлөрү колдонулсун"</string>
-    <string name="labelCW" msgid="6120513814915920200">"Чалууну кармоо"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Чалуу учурунда мага кирүүчү чалуулар жөнүндө эскертилсин"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Чалуу учурунда мага кирүүчү чалуулар жөнүндө эскертилсин"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Чалууну багыттоонун жөндөөлөрү"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Чалууну кармап туруу"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Бирөө менен сүйлөшүп жатканда мага келген чалуулар жөнүндө эскертилсин"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Бирөө менен сүйлөшүп жатканда мага келген чалуулар жөнүндө эскертилсин"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Чалууну багыттоо жөндөөлөрү"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Чалууну багыттоо жөндөөлөрү (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Чалууну багыттоо"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Ар дайым багыттоо"</string>
@@ -114,17 +118,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Жеткиликтүү эмес болсо"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Жеткиликтүү эмес болсо багытталчу номер"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> номерине багытталууда"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Өчүрүлгөн"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Өчүк"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Сиздин операторуңуз, телефон жеткиликсиз болгондо чалууну багыттоону токтотууну колдобойт."</string>
     <string name="updating_title" msgid="6146755386174019046">"Чалуу жөндөөлөрү"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Чалуу жөндөөлөрүн алгачкы колдонуучу гана өзгөртө алат."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Чалуу жөндөөлөрүн администратор гана өзгөртө алат."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Жөндөөлөр (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Чалуу жөндөөлөрүндөгү ката"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Чалуу жөндөөлөрүндө ката кетти"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Жөндөөлөр окулууда…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"Жөндөөлөр жаңыртылууда…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Жөндөөлөр артка кайтарылууда…"</string>
     <string name="response_error" msgid="6674110501330139405">"Тармактан күтүлбөгөн жооп алынды."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Тармак же SIM-карта катасы."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Тармак же SIM карта катасы."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS сурамы DIAL сурамына өзгөртүлдү."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS сурамы USSD сурамына өзгөртүлдү."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS сурамы жаңы SS сурамына өзгөртүлдү."</string>
@@ -146,7 +150,19 @@
     <string name="no_change" msgid="3186040086622435212">"Эч өзгөртүү киргизилген жок."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Үн почтасынын кызматын тандаңыз"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Операторуңуз"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Уюктук тармак жөндөөлөрү"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Эски PIN код"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Жаңы PIN код"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Күтө туруңуз."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Жаңы PIN код өтө эле кыска."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Жаңы PIN код өтө эле узун."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Жаңы PIN код өтө эле жөнөкөй. Сырсөз күчтүү болушу үчүн анда сандар үзгүлтүксүз катардан турбашы же сандар кайталанбашы керек."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Эски PIN код дал келген жок."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Жаңы PIN коддо жараксыз белгилер бар."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN код өзгөртүлгөн жок"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Колдоого алынбаган билдирүү, угуу үчүн <xliff:g id="NUMBER">%s</xliff:g> чалыңыз."</string>
+    <!-- no translation found for mobile_networks (5540397602919106177) -->
+    <skip />
+    <string name="network_settings_title" msgid="514120489499925574">"Мобилдик тармак"</string>
     <string name="label_available" msgid="1181658289009300430">"Жеткиликтүү тармактар"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Изделүүдө…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Эч тармак табылган жок."</string>
@@ -158,12 +174,12 @@
     <string name="registration_done" msgid="495135664535876612">"Тармакка катталды."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Оператор тандоо"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Бардык жеткиликтүү тармактарды издөө"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Автоматтык тандоо"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Артыкчылыктуу түйүндү автоматтык тандоо"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Тармакты автоматтык түрдө тандоо"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Тармак"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Автоматтык катталуу…"</string>
-    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Артыкчылыктуу желенин түрү"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Тармактын түрү"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Тармактын иштөө режимин өзгөртүңүз"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Артыкчылыктуу желенин түрү"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Тармактын түрү"</string>
     <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Тандалган тармак режими: WCDMA тандалган"</string>
     <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Тандалган тармак режими: GSM гана"</string>
     <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Тандалган тармак режими: WCDMA гана"</string>
@@ -176,15 +192,15 @@
     <string name="preferred_network_mode_lte_summary" msgid="574752287596469136">"Артыкчылыктуу желе тартиби: LTE"</string>
     <string name="preferred_network_mode_lte_gsm_wcdma_summary" msgid="8455358514068283935">"Артыкчылыктуу желе тартиби: GSM/WCDMA/LTE"</string>
     <string name="preferred_network_mode_lte_cdma_evdo_summary" msgid="228702246343742853">"Артыкчылыктуу желе тартиби: CDMA+LTE/EVDO"</string>
-    <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Артыкчылыктуу желе тартиби: Глобалдуу"</string>
+    <string name="preferred_network_mode_global_summary" msgid="1633134285545730364">"Тандалган тармак режими: Дүйнө жүзү"</string>
     <string name="preferred_network_mode_lte_wcdma_summary" msgid="9180775701594742750">"Артыкчылыктуу желе тартиби: LTE / WCDMA"</string>
-    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Жактырылган тармак режими: LTE / GSM / UMTS"</string>
+    <string name="preferred_network_mode_lte_gsm_umts_summary" msgid="633315028976225026">"Жактырылган режим: LTE / GSM / UMTS"</string>
     <string name="preferred_network_mode_lte_cdma_summary" msgid="3722647806454528426">"Тандалган тармак режими: LTE / CDMA"</string>
     <string name="preferred_network_mode_tdscdma_summary" msgid="8021016193718678775">"Тандалган тармак режими: TDSCDMA"</string>
   <string-array name="preferred_network_mode_choices">
     <item msgid="7886739962255042385">"LTE / WCDMA"</item>
     <item msgid="577652050447385699">"LTE"</item>
-    <item msgid="6813597571293773656">"Глобалдуу"</item>
+    <item msgid="6813597571293773656">"Дүйнө жүзү"</item>
     <item msgid="127064712132619032">"GSM/WCDMA/LTE"</item>
     <item msgid="1126767511633425977">"CDMA + LTE/EvDo"</item>
     <item msgid="6389676313771670660">"CDMA/EvDo/GSM/WCDMA"</item>
@@ -196,19 +212,31 @@
     <item msgid="1524224863879435516">"GSM гана"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA артыкчылыктуу"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Чалуулар"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Тармак"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Жакшыртылган 4G LTE режими"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Өркүндөтүлгөн чалуу"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Үн жана башка байлнштрд жакшыртуу үчүн LTE кызматтарын пайдаланыңыз (сунушталат)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Дайындар иштетилсин"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Дайындарды пайдаланууга уруксат берүү"</string>
-    <string name="roaming" msgid="8871412572928323707">"Интернет роуминг"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Роуминг учурунда мобилдик интернетке туташтырылсын"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Роуминг учурунда мобилдик интернетке туташтырылсын"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Көңүл буруңуз"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роуминг"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Роуминг учурунда мобилдик Интернетке туташат"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Роуминг учурунда мобилдик Интернетке туташат"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Мобилдик берүү байланышын жоготтуңуз, анткени сиз мобилдик интернет роумингин иштетпестен, өзүңүздүн түйүнүңүздөн сырткары чыгып кеттиңиз."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Бир кыйла төлөмдөргө учурашыңыз мүмкүн."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Интернет-роумингге жол берилсинби?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Дайындардын өткөрүлүшү"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> аралыгында <xliff:g id="ID_1">%1$s</xliff:g> мобилдик трафик колдонулду"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Байланыш оператору"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобилдик Интернет"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Мобилдик тармакты колдонуу менен дайындарга кошулуу мүмкүнчүлүгү"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi аркылуу чалуу"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Видео чалуулар"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS мүмкүнчүлүктөрү"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA мүмкүнчүлүктөрү"</string>
-    <string name="throttle_data_usage" msgid="3715677828160555808">"Дайындарды колдонуу"</string>
+    <string name="throttle_data_usage" msgid="3715677828160555808">"Дайындардын өткөрүлүшү"</string>
     <string name="throttle_current_usage" msgid="8762280193043815361">"Учурдагы периоддо колдонулган дайындар"</string>
     <string name="throttle_time_frame" msgid="1915198770363734685">"Дайындарды колдонуу периоду"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"Дайындардын ылдамдыгынын саясаты"</string>
@@ -218,7 +246,8 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> жогорку чегинен ашып кетти\nДайындардын ылдамдыгы <xliff:g id="USED_1">%2$d</xliff:g> кб/сек. болуп азайтылды"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Циклдин <xliff:g id="USED_0">%1$d</xliff:g>٪ аяктады\nКийинки период <xliff:g id="USED_1">%2$d</xliff:g> күндөн кийин башталат (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Эгер дайындарды колдонуу чегинен ашып кетсе, дайындардын ылдамдыгы <xliff:g id="USED">%1$d</xliff:g> кб/сек. болуп азайтылат"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Операторуңуздун уюктук тармак дайындарын пайдалануу саясаты тууралуу көбүрөөк маалымат"</string>
+    <!-- no translation found for throttle_help_subtext (5217706521499010816) -->
+    <skip />
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Уюлдук жөнөтүү SMS\'и"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Уюлдук жөнөтүү SMS\'и"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Уюлдук жөнөтүү SMS\'и иштетилген"</string>
@@ -308,7 +337,7 @@
     <string name="multi_category_disable" msgid="880104702904139505">"Мульти-категория өчүрүлгөн"</string>
     <string name="network_lte" msgid="7702681952521375754">"LTE (сунушталат)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (сунушталат)"</string>
-    <string name="network_global" msgid="1323190488685355309">"Глобалдуу"</string>
+    <string name="network_global" msgid="1323190488685355309">"Дүйнө жүзү"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"Тутум тандоо"</string>
     <string name="cdma_system_select_summary" msgid="60460043745797517">"CDMA роуминг тартибин алмаштыруу"</string>
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Тутум тандоо"</string>
@@ -330,21 +359,21 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Түзмөктү жандыруу"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Дайындар кызматын жөндөө"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Оператордун тууралоолору"</string>
-    <string name="fdn" msgid="7878832555095183202">"Туруктуу терүү номерлери"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"Туруктуу терүү номерлери (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"FDN тизмеси"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN тизмеси (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"FDN\'ди жандыруу"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"Туруктуу терүү номерлери иштетилген"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Туруктуу терүү номерлери өчүрүлгөн"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"FDN\'ди иштетүү"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"FDN\'ди өчүрүү"</string>
+    <string name="fdn" msgid="7878832555095183202">"Уруксат берилген номерлер"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Уруксат берилген номерлер (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Уруксат берилген номерлер"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Уруксат берилген номерлер тизмеси (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"Уруксат берилген номерлерди иштетүү"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Уруксат берилген номерлер иштетилген"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Уруксат берилген номерлер өчүрүлгөн"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Уруксат берилген номерлерди иштетүү"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Уруксат берлгн номерлрд өчр"</string>
     <string name="change_pin2" msgid="2153563695382176676">"PIN2 кодун өзгөртүү"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN\'ди өчүрүү"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN\'ди иштетүү"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Уруксат берлгн номерлрд өчр"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Уруксат берлгн номерлрд иштетүү"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Туруктуу терүү номерлерин башкаруу"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN мүмкүнчүлүгүнүн PIN кодун өзгөртүү"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Телефон номеринин тизмесин башкаруу"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Уруксат берилген номерлердин тизмесине кирүү үчүн PIN кодду өзгөртүү"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Уруксат берилген номерлердин тизмесин башкаруу"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Үн купуялуулугу"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Жакшыртылган купуялык режимин иштетүү"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Телетайп режими"</string>
@@ -355,6 +384,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Байланыш кошуу"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Байланышты түзөтүү"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Байланышты жок кылуу"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Байланышка чалуу"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 териңиз"</string>
     <string name="name" msgid="7329028332786872378">"Аталышы"</string>
     <string name="number" msgid="7905950798349903858">"Номер"</string>
@@ -369,11 +399,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Туруктуу терүү номери жок кылынууда…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Туруктуу терүү номери жок кылынды."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"БНТ жаңыртылган жок, анткени туура эмес PIN-код киргизилди."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"БНТ жаңыртылган жок, анткени номур 20 сандан ашпашы керек."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Уруксат берилген номер жаңыртылган эмес, себеби номер тилкеси бош же жазылган номердин саны 20дан ашпашы керек."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"БНТ жаңыртылган жок. PIN2 туура эмес, же телефон номуру жараксыз."</string>
     <string name="fdn_failed" msgid="540018079008319747">"БНТ иши кыйрады."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-картадан окулууда…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"SIM-картаңызда байланыштар жок."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"SIM картаңызда байланыштар жок."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Импорттоло турган байланыштарды тандаңыз"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM картадан байланыштарды импорттоо үчүн учак режимин өчүрүңүз."</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM-картанын PIN кодун иштетүү/өчүрүү"</string>
@@ -426,15 +456,17 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Үн почтасынын номери белгисиз"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Байланыш жок"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Тандалган тармак (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) жеткиликсиз"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Чалуу үчүн учак режимин өчүрүңүз."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Мобилдик тармакты күйгүзүңүз, чалуу үчүн \"Учакта\" режимин же \"Батареяны үнөмдөө\" режимин өчүрүңүз."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Чалуу үчүн учак режимин өчүрүңүз."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Чалуу үчүн учак режимин өчүрүңүз же зымсыз тармакка туташыңыз."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Кадимки шартта чалуу үчүн шашылыш кайра чалуу режиминен чыгыңыз."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Тармакта катталган эмес."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Уюктук тармак жеткиликтүү эмес."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Уюлдук тармак жеткиликтүү эмес. Чалуу үчүн зымсыз тармакка туташыңыз."</string>
+    <!-- no translation found for incall_error_out_of_service (8587993036435080418) -->
+    <skip />
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобилдик тармак жеткиликтүү эмес. Чалуу үчүн зымсыз тармакка туташыңыз."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Чалуу үчүн, жарактуу номер киргизиңиз."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Чалынбай жатат."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI кезеги башталууда…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Чалынбай калды."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Бул жолу чалууну кошуу мүмкүн эмес."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Кызмат колдоого алынбайт"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Чалуулар которуштурулбай жатат."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Чалуу бөлүнбөй жатат."</string>
@@ -442,12 +474,15 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Конференц-чалуу аткарылбай жатат."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Чалуу четке кагылбай жатат."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Чалуу(лар) бошотулбай жатат."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Чалууну кармап туруу мүмкүн эмес."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чалуу үчүн зымсыз тармакка туташыңыз."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Wi-Fi аркылуу чалыңыз."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Шашылыш чалуу"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радио күйгүзүлүүдө…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Кызмат жок. Кайра аракет кылууда…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Шашылыш чалуу учурунда учак режимине өтүүгө болбойт."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Чалынбай жатат. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> өзгөчө кырдаал номери эмес."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Чалынбай жатат. Өзгөчө кырдаал номерин териңиз."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Чалынбай жатат. Өзгөчө кырдаалдар кызматынын номерин териңиз."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Баскычтоп менен териңиз"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"Күттүрүү"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"Бүтүрүү"</string>
@@ -464,13 +499,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Баарын импорттоо"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM-картадагы байланыштардан импорттоо"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Байланыштардан импорттоо"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Байланыш импорттолду"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Байланыш импорттолбой калды"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Угуу аппараты"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Угуу аппаратына шайкештигин күйгүзүү"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Угуу аппаратын колдоого алуу"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"Телетайп түзмөгү өчүк"</item>
     <item msgid="3971695875449640648">"Телетайп түзмөгү толуп калды"</item>
-    <item msgid="1937509904407445684">"HCO Телетайп түзмөгү"</item>
-    <item msgid="5644925873488772224">"VCO Телетайп түзмөгү"</item>
+    <item msgid="1937509904407445684">"TTY HCO"</item>
+    <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF сигналдары"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF сигналдарынын узактыгын орнотуңуз"</string>
@@ -504,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Шашылыш кайра чалуу режими киргизилди"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Шашылыш кайра чалуу режими"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Мобилдик туташуу өчүрүлгөн"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> мүнөт бою маалыматтык туташуу болбойт</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> мүнөт бою маалыматтык туташуу болбойт</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> чейин мобилдик байланыш жок"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Телефон Шашылыш кайра чалуу режиминде <xliff:g id="COUNT_1">%s</xliff:g> мүнөт бою болот. Бул режим күйүп турганда маалыматтык туташууну пайдаланган эч бир колдонмо иштетилбейт. Азыр чыгып кеткиңиз келеби?</item>
       <item quantity="one">Телефон Шашылыш кайра чалуу режиминде <xliff:g id="COUNT_0">%s</xliff:g> мүнөт бою болот. Бул режим күйүп турганда маалыматтык туташууну пайдаланган эч бир колдонмо иштетилбейт. Азыр чыгып кеткиңиз келеби?</item>
@@ -522,7 +556,7 @@
     <string name="alert_dialog_no" msgid="1476091437797628703">"Жок"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Этибарга албоо"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Кызмат"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"Орнотуу"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Жөндөө"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Орнотулган эмес&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Башка чалуу жөндөөлөрү"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> аркылуу чалуу"</string>
@@ -531,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"байланыш тандоо"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Үн менен чалуу колдоого алынбайт"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"терүү"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Титиретүү"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Титиретүү"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуалдык үн почтасы"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Үнү"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN код коюу"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN кодду өзгөртүү"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон жана Титирөө"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Кыналган SIM карталар"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Видео чалууну күйгүзүү"</string>
@@ -544,10 +577,25 @@
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Шашылыш чалуулар"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Шашылыш чалуу гана"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, оюкча: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
-    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Жеткиликтүүлүк"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Кирүүчү Wi-Fi чалуу"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Атайын мүмкүнчүлүктөр"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi аркылуу чалуу:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi чалуу"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ачуу үчүн кайра тийиңиз"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ачуу үчүн кайра таптап коюңуз"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Билдирүү дешифрленип жатканда ката кеткен."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM-карта кызматыңызды жандырып, телефонуңуздун роуминг мүмкүнчүлүктөрүн жаңыртты."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Учурда жигердүү чалуулар өтө көп. Чалуу үчүн учурдагы чалууларды бүтүрүңүз же бириктириңиз."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Байланышуу мумкүн эмес. Жарактуу SIM-картаны салыңыз."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi туташуусу үзүлүп калды. Чалуу аяктады."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Үн почтасынын PIN кодун өзгөртүү"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Улантуу"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Жокко чыгаруу"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Жарайт"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Эски PIN кодуңузду ырастаңыз"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Улантуу үчүн үн почтаңыздын PIN кодун киргизиңиз."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Жаңы PIN коюңуз"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> сандан турушу керек."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN кодуңузду ырастаңыз"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN коддор дал келген жок"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Үн почтасынын PIN коду жаңыртылды"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN код коюлбайт"</string>
 </resources>
diff --git a/res/values-lo-rLA/arrays.xml b/res/values-lo/arrays.xml
similarity index 100%
rename from res/values-lo-rLA/arrays.xml
rename to res/values-lo/arrays.xml
diff --git a/res/values-lo/config.xml b/res/values-lo/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-lo/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo/strings.xml
similarity index 86%
rename from res/values-lo-rLA/strings.xml
rename to res/values-lo/strings.xml
index 8963a1a..aa9a0ff 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ຂໍ້​ມູນ​ເຊວ​ລູ​ລາ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ຂໍ້ມູນມືຖື"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ການ​ບໍ​ລິ​ການ​ໂທ​ລະ​ສັບ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"ໂປຣແກຣມໂທອອກສຸກເສີນ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ໂທລະສັບ"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"ບໍ່ມີເບີຂໍ້ຄວາມສຽງຖືກບັນທຶກໃນ SIM card."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"ເພີ່ມໝາຍເລກ"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ການຕັ້ງຄ່າຂໍ້ຄວາມສຽງສາມາດແກ້ໄຂໄດ້ໂດຍຜູ້ໃຊ້ຫຼັກເທົ່ານັ້ນ."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"ຍົກເລີກການປິດກັ້ນ SIM card ຂອງທ່ານແລ້ວ. ໂທລະສັບຂອງທ່ານກຳລັງຖືກປົດລັອກ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN ປົດລັອກເຄືອຂ່າຍ SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ປົດລັອກ"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ກຳລັງຮ້ອງຂໍການປົດລັອກເຄືອຂ່າຍ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ຄຳຂໍການປົດລັອກເຄືອຂ່າຍບໍ່ສຳເລັດ."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ການປົດລັອກເຄືອຂ່າຍບໍ່ສຳເລັດ."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"​ການ​ຕັ້ງ​ຄ່າ​ເຄືອ​ຂ່າຍ​ມ​ື​ຖືບໍ່​ສາ​ມາດ​ໃຊ້​ໄດ້​ກັບ​ຜູ່​ໃຊ້​ນີ້"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"​ການ​ຕັ້ງ​ຄ່າ​ເຄືອ​ຂ່າຍ​ມ​ື​ຖືບໍ່​ສາ​ມາດ​ໃຊ້​ໄດ້​ກັບ​ຜູ່​ໃຊ້​ນີ້"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"ການຕັ້ງຄ່າການໂທ GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"ການ​ຕັ້ງ​ຄ່າ GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"ການຕັ້ງຄ່າໂທ CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ໂທ​ດ້ວຍ"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ໂທ SIP ດ້ວຍ"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"​ຖາມ​ກ່ອນ"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ບໍ່ມີເຄືອຂ່າຍທີ່ສາມາດໃຊ້ໄດ້"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ການ​ຕັ້ງ​ຄ່າ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ເລືອກ​ບັນ​ຊີ"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ບັນ​ຊີ​ໂທລະ​ສັບ"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"ຂໍ້ຄວາມສຽງ"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ຂໍ້​ຄວາມ​ສຽງ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM​:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"ການແຈ້ງເຕືອນ"</string>
     <string name="networks" msgid="8873030692174541976">"ຜູ່ໃຫ້ບໍລິການເຄືອຂ່າຍ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"​ການ​ອອກອາກາດ​ສຸກ​ເສີນ"</string>
     <string name="call_settings" msgid="6112441768261754562">"ການຕັ້ງຄ່າການໂທ"</string>
@@ -90,8 +93,8 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"ໝາຍເລກທີ່ສະແດງໃນເວລາໂທອອກ"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"ໃຊ້ການຕັ້ງຄ່າເລີ່ມຕົ້ນຂອງຜູ່ໃຫ້ບໍລິການ ເພື່ອສະແດງໝາຍເລກຂອງຂ້ອຍໃນການໂທອອກ"</string>
     <string name="labelCW" msgid="6120513814915920200">"ສາຍຊ້ອນ"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"ແຈ້ງເຕືອນຂ້ອຍຫາກມີສາຍໂທເຂົ້າ ໃນລະຫວ່າງການໂທໃດນຶ່ງ"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"ແຈ້ງເຕືອນຂ້ອຍຫາກມີສາຍໂທເຂົ້າ ໃນລະຫວ່າງການໂທໃດນຶ່ງ"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"ແຈ້ງເຕືອນຂ້ອຍຫາກມີສາຍໂທເຂົ້າ ໃນລະຫວ່າງການໂທໃດໜຶ່ງ"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"ແຈ້ງເຕືອນຂ້ອຍຫາກມີສາຍໂທເຂົ້າ ໃນລະຫວ່າງການໂທໃດໜຶ່ງ"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"ການຕັ້ງຄ່າໂອນສາຍ"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ການ​ຕັ້ງ​ຄ່າ​ການ​ໂອນ​ສາຍ​ໂທ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"ການໂອນສາຍ"</string>
@@ -114,17 +117,17 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"ເມື່ອ​ບໍ່​ສາ​ມາດ​ຕິດ​ຕໍ່ໄດ້"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ເບີໂທເມື່ອຕິດຕໍ່ບໍ່ໄດ້"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"ໂອນສາຍໄປໃຫ້ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ປິດການນຳໃຊ້ແລ້ວ"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ປິດ"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ຜູ່ໃຫ້ບໍລິການຂອງທ່ານ ບໍ່ຮອງຮັບການປິດການໂອນສາຍ ເມື່ອໂທລະສັບຂອງທ່ານບໍ່ມີສັນຍານ."</string>
     <string name="updating_title" msgid="6146755386174019046">"ການຕັ້ງຄ່າການໂທ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ມີ​ແຕ່​ຜູ້​ໃຊ້​ຕົ້ນ​ຕໍ​ເທົ່າ​ນັ້ນ​ທີ່​ສາ​ມາດ​ປ່ຽນການ​ຕັ້ງ​ຄ່າ​ການ​ໂທ​ໄດ້."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ມີ​ແຕ່​ຜູ້​ໃຊ້​ທີ່​ເປັນ​ຜູ້ດູແລລະບົບ​ເທົ່າ​ນັ້ນ​ທີ່​ສາ​ມາດ​ປ່ຽນການ​ຕັ້ງ​ຄ່າ​ການ​ໂທ​ໄດ້."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ການ​ຕັ້ງ​ຄ່າ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"ການຕັ້ງຄ່າການໂທຜິດພາດ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ກຳລັງອ່ານການຕັ້ງຄ່າ..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"ກຳລັງອັບເດດການຕັ້ງຄ່າ..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"ກຳລັງຖອນຄືນການຕັ້ງຄ່າ..."</string>
     <string name="response_error" msgid="6674110501330139405">"ໄດ້ຮັບການຕອບກັບທີ່ບໍ່ຄາດຄິດຈາກເຄືອຂ່າຍ."</string>
-    <string name="exception_error" msgid="7027667130619518211">"ເຄືອຂ່າຍ ຫຼື SIM card ຜິດພາດ."</string>
+    <string name="exception_error" msgid="7027667130619518211">"ເຄືອຂ່າຍ ຫຼື ຊິມກາດຜິດພາດ."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"ການ​ຂໍ SS ຖືກ​ປ່ຽນ​ແປງ​ເປັນ​ການ​ຂໍ DIAL ແລ້ວ."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"ການ​ຂໍ SS ຖືກ​ປ່ຽນແປງ​ເປັນ​ການ​ຂໍ  USSD ແລ້ວ."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"ການ​ຂໍ SS ຖືກ​ປ່ຽນແປງ​ເປັນ​ການ​ຂໍ SS ໃໝ່​ແລ້ວ."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"ບໍ່ມີການປ່ຽນແປງເກີດຂຶ້ນ."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ເລືອກບໍລິການຂໍ້ຄວາມສຽງ"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"ຜູ້​ໃຫ້​ບໍ​ລິ​ການ​ຂອງ​ທ່ານ"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ການ​ຕັ້ງ​ຄ່າ​ເຄືອ​ຂ່າຍ​ມື​ຖື"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ລະຫັດ PIN ເກົ່າ"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ລະຫັດ PIN ໃໝ່"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"ກະລຸນາລໍຖ້າ."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ລະຫັດ PIN ໃໝ່ສັ້ນເກີນໄປ."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ລະຫັດ PIN ໃໝ່ຍາວເກີນໄປ."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ລະຫັດ PIN ໃໝ່ງ່າຍເກີນໄປ. ລະຫັດຜ່ານທີ່ຍາກບໍ່ຄວນຈະມີຕົວເລກຕໍ່ເນື່ອງ ຫຼື ຕົວເລກຊໍ້າໆກັນ."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"ລະຫັດ PIN ເກົ່າບໍ່ກົງກັນ."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"ລະຫັດ PIN ໃໝ່ມີຕົວອັກສອນທີ່ບໍ່ຖືກຕ້ອງ."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"ບໍ່ສາມາດປ່ຽນລະຫັດ PIN ໄດ້"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ປະເພດຂໍ້ຄວາມທີ່ບໍ່ຮອງຮັບ, ໂທ <xliff:g id="NUMBER">%s</xliff:g> ເພື່ອຟັງ."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"ການຕັ້ງຄ່າເຄືອຂ່າຍມືຖື"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"ເຄືອຂ່າຍມືຖື"</string>
     <string name="label_available" msgid="1181658289009300430">"ເຄືອຂ່າຍທີ່ມີ"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"ກຳລັງຊອກຫາ..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ບໍ່ພົບເຄືອຂ່າຍ."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"ລົງທະບຽນໃນເຄືອຂ່າຍແລ້ວ."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ເລືອກເຄືອຂ່າຍຜູ່ໃຫ້ບໍລິການ"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ຊອກຫາເຄືອຂ່າຍທີ່ມີທັງໝົດ"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ເລືອກອັດຕະໂນມັດ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ເລືອກເຄືອຂ່າຍທີ່ຕ້ອງການອັດຕະໂນມັດ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ເລືອກເຄືອຂ່າຍອັດຕະໂນມັດ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ເຄືອຂ່າຍ"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ກຳລັງລົງທະບຽນອັດຕະໂນມັດ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ປະ​ເພດ​ເຄືອ​ຂ່າຍທີ່ຕ້ອງການ"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ປ່ຽນຮູບແບບປະຕິບັດການຂອງເຄືອຂ່າຍ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM ເທົ່ານັ້ນ"</item>
     <item msgid="3817924849415716259">"ຕ້ອງການ GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"ກຳລັງໂທ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ເຄືອຂ່າຍ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"ໂໝດ Enhanced 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"ການໂທຂັ້ນສູງ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ໃຊ້​ການ​ບໍ​ລິ​ການ LTE ເພື່ອ​ປັບ​ປຸງ​ສຽງ ແລະ​ການ​ບໍ​ລິ​ການ​ອື່ນໆ (ແນະ​ນຳ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ເປີດໃຊ້ເດຕາ"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"​ອະ​ນຸ​ຍາດ​ໃຫ້​ໃຊ້​ຂໍ້​ມູນ"</string>
-    <string name="roaming" msgid="8871412572928323707">"ການໂຣມມິງຂໍ້ມູນ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ກະລຸນາຮັບຊາບ"</string>
+    <string name="roaming" msgid="7894878421600247140">"ໂຣມມິງ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ເຊື່ອມຕໍ່ບໍລິການຂໍ້ມູນເມື່ອໂຣມມິງ"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"ເຊື່ອມຕໍ່ບໍລິການຂໍ້ມູນເມື່ອໂຣມມິງ"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"ທ່ານໄດ້ຖືກຕັດການເຊື່ອມຕໍ່ຂໍ້ມູນ ເນື່ອງຈາກທ່ານອອກຈາກເຄືອຂ່າຍພາຍໃນ ໂດຍທີ່ປິດການໂຣມມິງໄວ້."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ທ່ານ​ອາດ​ຈະ​ເສຍ​ຄ່າ​ໃຊ້​ຈ່າຍ​ຫຼາຍ."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ອະນຸຍາດໃຫ້ໂຣມມິງຂໍ້ມູນບໍ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ການນຳໃຊ້ຂໍ້ມູນ"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"ການນຳໃຊ້ອິນເຕີເນັດ <xliff:g id="ID_1">%1$s</xliff:g> ລະຫວ່າງ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ຜູ່ໃຫ້ບໍລິການ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"ອິນເຕີເນັດມືຖື"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"ເຂົ້າເຖິງອິນເຕີເນັດຜ່ານເຄືອຂ່າຍມືຖື"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"ການໂທ Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ການໂທວິດີໂອເຄືອຂ່າຍ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"ໂຕເລືອກ GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"ໂຕເລືອກ CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ການນຳໃຊ້ຂໍ້ມູນ"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ເກີນຂີດຈຳກັດ\nອັດຕາຂໍ້ມູນຖືກຫຼຸດລົງເປັນ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ຂອງຮອບຜ່ານໄປ\nໄລຍະຕໍ່ໄປຈະເລີ່ມໃນອີກ <xliff:g id="USED_1">%2$d</xliff:g> ມື້ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ອັດຕາຂໍ້ມູນຖືກຫຼຸດລົງເປັນ <xliff:g id="USED">%1$d</xliff:g> Kb/s ຫາກໃຊ້ເກີນປະລິມານທີ່ຈຳກັດໄວ້"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ຂໍ້ມູນ​ເພີ່ມເຕີມກ່ຽວກັບ​ນະໂຍບາຍການ​ໃຊ້​ຂໍ້ມູນເຄືອຂ່າຍມືຖື​ຂອງຜູ່ໃຫ້​ບໍລິການ​ຂອງທ່ານ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ ນະໂຍບາຍການໃຊ້ຂໍ້ມູນເຄືອຂ່າຍມືຖື ຂອງຜູ່ໃຫ້ບໍລິການຂອງທ່ານ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"ຂໍ້ຄວາມ SMS ຈາກເຄືອຂ່າຍ"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"ຂໍ້ຄວາມ SMS ຈາກເຄືອຂ່າຍ"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"ເປີດຂໍ້ຄວາມ SMS ຈາກເຄືອຂ່າຍແລ້ວ"</string>
@@ -347,7 +373,7 @@
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ຈັດການລາຍຊື່ໝາຍເລກໂທລະສັບ"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"ຄວາມເປັນສ່ວນໂຕໃນການໂທດ້ວຍສຽງ"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"ເປີດໃຊ້ຮູບແບບຄວາມເປັນສ່ວນໂຕເພີ່ມເຕີມ"</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"ຮູບ​ແບບ TTY"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"ໂໝດ TTY"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"ຕັ້ງຮູບ​ແບບ TTY"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"ລອງໃໝ່ອັດຕະໂນມັດ"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"ເປີດໃຊ້ການລອງໃໝ່ອັດຕະໂນມັດ"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"ເພີ່ມລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
     <string name="menu_edit" msgid="7143003705504672374">"ແກ້ໄຂລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
     <string name="menu_delete" msgid="3977150783449642851">"ລຶບລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"ໂທຫາລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
     <string name="get_pin2" msgid="8204677063922225311">"ພິມລະຫັດ PIN2"</string>
     <string name="name" msgid="7329028332786872378">"ຊື່"</string>
     <string name="number" msgid="7905950798349903858">"ໝາຍເລກ"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ກຳລັງລຶບເບີໂທຈຳກັດການໂທອອກ..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ລຶບໝາຍເລກຈຳກັດການໂທອອກແລ້ວ."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN ບໍ່ໄດ້ອັບເດດເທື່ອ ເນື່ອງຈາກທ່ານໃສ່ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ບໍ່ໄດ້ອັບເດດເທື່ອ ເນື່ອງຈາກໂຕເລກບໍ່ສາມາດມີເກີນ 20​ ໂຕໄດ້."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"ບໍ່ໄດ້ອັບເດດ FDN ເນື່ອງຈາກຈຳນວນຫວ່າງເປົ່າ ຫຼື ເກີນ 20 ຕົວເລກ."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ບໍ່ໄດ້ອັບເດດເທື່ອ. ລະຫັດ PIN2 ບໍ່ຖືກຕ້ອງ ຫຼືເບີໂທລະສັບຖືກປະຕິເສດ."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ເຮັດວຽກລົ້ມເຫຼວ!"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"ກຳລັງອ່ານຈາກ SIM card..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"ບໍ່ມີລາຍຊື່ຜູ່ຕິດຕໍ່ໃນ SIM card ຂອງທ່ານ."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"ບໍ່ມີລາຍຊື່ຜູ້ຕິດຕໍ່ໃນຊິມກາດຂອງທ່ານ."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"ເລືອກລາຍຊື່ເພື່ອນຳເຂົ້າ"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"ປິດໂໝດເຄື່ອງບິນເພື່ອນໍາເຂົ້າລາຍຊື່ຈາກແຜ່ນ SIM."</string>
     <string name="enable_pin" msgid="5422767284133234860">"ປິດ/ເປີດ ການນຳໃຊ້ PIN ຂອງ SIM"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ບໍ່ຮູ້ຈັກເບີຂໍ້ຄວາມສຽງ"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ບໍ່ມີບໍລິການ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ບໍ່ສາມາດໃຊ້ເຄືອຂ່າຍທີ່ເລືອກ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ໄດ້"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ປິດໂໝດເຄື່ອງບິນເພື່ອເຮັດການໂທ."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ເປີດໃຊ້ເຄືອຂ່າຍມືຖື, ປິດໂໝດຢູ່ໃນຍົນ ຫຼື ປິດໂໝດຕົວປະຢັດແບັດເຕີຣີເພື່ອໂທ."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ປິດໂໝດເຄື່ອງບິນເພື່ອເຮັດການໂທ."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ປິດໂໝດເຄື່ອງບິນ ຫຼືເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"ອອກ​ຈາກໂໝດ​ໂທ​ກັບ​ສຸກ​ເສີນ ເພື່ອ​ເຮັດ​ການ​ໂທ​ປົກກະຕິ."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ບໍ່​ມີ​ເຄືອ​ຂ່າຍ​ມື​ຖື​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ເຄືອຂ່າຍເຊລລູລາບໍ່ພ້ອມໃຊ້ງານ. ໃຫ້ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"ເຄືອຂ່າຍມືຖືບໍ່ສາມາດໃຊ້ໄດ້."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"ບໍ່ສາມາດໃຊ້ອິນເຕີເນັດມືຖືໄດ້. ກະລຸນາເຊື່ອມຕໍ່ຫາ Wi-Fi ເພື່ອໂທ."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ເພື່ອ​ທີ່​ຈະ​ໂທ, ປ້ອນ​ເບີ​ໂທ​ທີ່​ໃຊ້​ໄດ້​ເຂົ້າ​ໄປ."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"ບໍ່​ສາ​ມາດ​ໂທ​ໄດ້."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"ກຳລັງເລີ່ມຕົ້ນລຳດັບ MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ໂທບໍ່ສຳເລັດ."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ບໍ່ສາມາດເພີ່ມການໂທໄດ້ໃນເວລານີ້."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ການ​ບໍ​ລິ​ການ​ບໍ່​ຮອງ​ຮັບ"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ບໍ່​ສາ​ມາດ​ສະ​ຫຼັບ​ສາ​ຍ​ໂທ​ໄດ້."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ບໍ່​ສາ​ມາດ​ແຍກ​ສາຍ​ໂທ​ໄດ້."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ບໍ່ສາມາດປະຊຸມສາຍໄດ້."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ບໍ່​ສາ​ມາດ​ປະ​ຕິ​ເສດ​ສາຍ​ໂທ​ໄດ້."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ບໍ່​ສາ​ມາດ​ປ່ອຍ​ສາຍ​ໂທ​ໄດ້."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ບໍ່ສາມາດພັກສາຍໄດ້."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍໄຮ້ສາຍເພື່ອເຮັດການໂທ."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ກະລຸນາເປີດໃຊ້ການໂທ Wi-Fi ເພື່ອໂທ."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ໂທສຸກເສີນ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ກຳລັງເປີດໃຊ້ວິທະຍຸ..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ບໍ່​ມີ​ການ​ບໍ​ລິ​ການ. ກຳ​ລັງ​ລອງ​ໃໝ່​ອີກ…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ບໍ່ສາມາດເຂົ້າໃຊ້ໂໝດຢູ່ໃນຍົນໄດ້ໃນລະຫວ່າງການໂທສຸກເສີນ."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ບໍ່​ສາ​ມາດ​ໂທ​ໄດ້. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ບໍ່​ແມ່ນ​ເບີ​ໂທ​ສຸກ​ເສີນ."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ບໍ່​ສາ​ມາດ​ໂທ​ໄດ້. ກົດ​ເບີ​ໂທ​ສຸກ​ເສີນ."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ໃຊ້ແປ້ນພິມເພື່ອກົດໂທ"</string>
@@ -463,7 +494,9 @@
     <string name="importSimEntry" msgid="6614358325359736031">"ນຳເຂົ້າ"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"ນຳເຂົ້າທັງໝົດ"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"ກຳລັງນຳເຂົ້າລາຍຊື່ຜູ່ຕິດຕໍ່ຈາກ SIM"</string>
-    <string name="importToFDNfromContacts" msgid="2130620207013368580">"ນຳເຂົ້າຈາກລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
+    <string name="importToFDNfromContacts" msgid="2130620207013368580">"ນຳເຂົ້າຈາກລາຍຊື່ຜູ້ຕິດຕໍ່"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"ລາຍ​ຊື່​ຕິດ​ຕໍ່​ນຳ​ເຂົ້າ​ແລ້ວ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"ນຳ​ລາຍ​ຊື່​ຕິດ​ຕໍ່​ເຂົ້າ​ບໍ່​ສຳ​ເລັດ"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"ການຊ່ວຍໄດ້ຍິນ"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"ເປີດໃຊ້ການຊ່ວຍໄດ້ຍິນ"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"ເຂົ້າສູ່ໂໝດໂທກັບສຸກເສີນແລ້ວ"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ໂໝດໂທກັບສຸກເສີນ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ປິດການເຊື່ອມຕໍ່ຂໍ້ມູນແລ້ວ"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ນາ​ທີ</item>
-      <item quantity="one">ບໍ່​ມີ​ການ​ເຊື່ອມ​ຕໍ່​ຂໍ້​ມູນ​ເປັນ​ເວ​ລາ <xliff:g id="COUNT_0">%s</xliff:g> ນາ​ທີ</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"ບໍ່ມີການເຊື່ອມຕໍ່ອິນເຕີເນັດຈົນຮອດ <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">ໂທ​ລະ​ສັບ​ຈະ​ຢູ່​ໃນ​ໂໝດ​ການ​ໂທ​​ສຸກ​ເສີນ​ເປັນ​ເວ​ລາ <xliff:g id="COUNT_1">%s</xliff:g> ນາ​ທີ. ໃນ​ຂະ​ນະ​ທີ່​ຢູ່​ໃນ​ໂໝດ​ນີ້ ບໍ່​ມີ​ແອພ​ພ​ລິ​ເຄ​ຊັນທີ່​ໃຊ້​ການ​ເຊື່ອມ​ຕໍ່​ຂໍ້​ມູນ​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້. ທ່ານ​ຕ້ອງ​ການ​ອອກ​ດຽວ​ນີ້​ບໍ?</item>
       <item quantity="one">ໂທ​ລະ​ສັບ​ຈະ​ຢູ່​ໃນ​ໂໝດ​ການ​ໂທ​​ສຸກ​ເສີນ​ເປັນ​ເວ​ລາ <xliff:g id="COUNT_0">%s</xliff:g> ນາ​ທີ. ໃນ​ຂະ​ນະ​ທີ່​ຢູ່​ໃນ​ໂໝດ​ນີ້ ບໍ່​ມີ​ແອັບ​ທີ່​ໃຊ້​ການ​ເຊື່ອມ​ຕໍ່​ຂໍ້​ມູນ​ທີ່​ສາ​ມາດ​ໃຊ້​ໄດ້. ທ່ານ​ຕ້ອງ​ການ​ອອກ​ດຽວ​ນີ້​ບໍ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"ເລືອກລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ບໍ່ຮອງຮັບການໂທດ້ວຍສຽງ"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ປຸ່ມໂທ"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ສັ່ນເຕືອນ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ສັ່ນເຕືອນ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ຂໍ້​ຄວາມ​ສຽງ​ປະ​ກອບ​ພາບ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ສຽງ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"ຕັ້ງລະຫັດ PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"​ປ່ຽນ​ລະຫັດ PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ຣິງໂທນ &amp; ການສັ່ນເຕືອນ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM ກາດ​ທີ່​ມາ​ກັບ​ເຄື່ອງ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"​ເປີດ​ການ​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ການ​ໂທ​ສຸກ​ເສີນ​ເທົ່າ​ນັ້ນ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"ແຜ່ນ SIM, ຊ່ອງ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ສາຍໂທເຂົ້າ Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"ການໂທ Wi-Fi ຈາກ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ການ​ໂທ Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"​ແຕະ​ອີກ​ເທື່ອ​ນຶ່ງ​ເພື່ອ​ເປີດ"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ແຕະອີກຄັ້ງເພື່ອເປີດ"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"ມີຂໍ້ຜິດພາດໃນລະຫວ່າງຖອດລະຫັດຂໍ້ຄວາມດັ່ງກ່າວ."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ແຜ່ນ SIM ໄດ້ເປີດໃຊ້ງານການບໍລິການຂອງທ່ານ ແລະອັບເດດຄວາມສາມາດໃຊ້ງານຂ້າມເຂດຂອງໂທລະສັບຂອງທ່ານແລ້ວ."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ມີສາຍຫຼາຍເກີນໄປ. ກະລຸນາວາງສາຍ ຫຼື ຮວມສາຍທີ່ກຳລັງໂທກ່ອນໂທສາຍໃໝ່."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້, ກະລຸນາໃສ່ຊິມກາດທີ່ຖືກຕ້ອງ."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"ສູນເສຍການເຊື່ອມຕໍ່ Wi-Fi. ການໂທສິ້ນສຸດລົງແລ້ວ."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ປ່ຽນລະຫັດ PIN ຂໍ້ຄວາມສຽງ"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ດຳເນີນການຕໍ່"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ຍົກເລີກ"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ຕົກລົງ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"ຢືນຢັນລະຫັດ PIN ເກົ່າຂອງທ່ານ"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ໃສ່ລະຫັດ PIN ຂໍ້ຄວາມສຽງຂອງທ່ານເພື່ອດຳເນີນການຕໍ່."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"ຕັ້ງ​ເປັນ PIN ໃຫມ່"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ລະຫັດ PIN ຈະຕ້ອງມີ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> ຕົວເລກ."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ຢືນຢັນລະຫັດ PIN ຂອງທ່ານ"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"ລະຫັດ PIN ບໍ່ກົງກັນ"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ອັບເດດລະຫັດ PIN ຂໍ້ຄວາມສຽງແລ້ວ"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ບໍ່ສາມາດຕັ້ງລະຫັດ PIN ໄດ້"</string>
 </resources>
diff --git a/res/values-lt/config.xml b/res/values-lt/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-lt/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index da503ae..9b20ccd 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Korinio ryšio duomenys"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Duomenys mobiliesiems"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefono paslaugos"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Pagalbos numerio rinkiklis"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefonas"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Trūksta balso pašto numerio"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kortelėje nėra išsaugoto balso pašto numerio."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Pridėti numerį"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Balso pašto nustatymus gali keisti tik pagrindinis naudotojas."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Jūsų SIM kortelė buvo atblokuota. Atrakinamas telefonas..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM tinklo atrakinimo PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Atblokuoti"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Pateikiama užklausa atrakinti tinklą..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Nesėkminga tinklo atrakinimo užklausa."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Tinklas sėkmingai atrakintas."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Korinio tinklo nustatymai nepasiekiami šiam naudotojui"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobiliojo ryšio tinklo nustatymai nepasiekiami šiam naudotojui"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM skambinimo nustatymai"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM skambučių nustatymai (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA skambučio nustatymai"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Skambinti naudojant"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Atlikti SIP skambučius naudojant"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Pirmiausia paklausti"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nėra jokių pasiekiamų tinklų"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Nustatymai"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Pasirinkti paskyras"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefono paskyros"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Balso paštas"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Balso paštas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"BP:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Pranešimai"</string>
     <string name="networks" msgid="8873030692174541976">"Tinklo operatoriai"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Avarinės transliacijos"</string>
     <string name="call_settings" msgid="6112441768261754562">"Skambinimo nustatymai"</string>
@@ -90,8 +93,8 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Numeris pateikiamas išeinančiuose skambučiuose"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Naudoti numatytuosius nustatymus, kad išeinančiuose skambučiuose būtų pateikiamas mano numeris"</string>
     <string name="labelCW" msgid="6120513814915920200">"Laukiantis skambutis"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Skambučio metu praneškite man apie gaunamuosius skambučius"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Skambučio metu praneškite man apie gaunamuosius skambučius"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Skambučio metu pranešti man apie gaunamuosius skambučius"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Skambučio metu pranešti man apie gaunamuosius skambučius"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"Skambučio peradresavimo nustatymai"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Skambučių peradresavimo nustatymai (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Skambučio peradresavimas"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kai nepasiekiama"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numeris, kai nepasiekiama"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Peradresuojama į <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Išjungta"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Išjungta"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatorius nepalaiko skambučių peradresavimo išjungimo, kai telefonas nepasiekiamas."</string>
     <string name="updating_title" msgid="6146755386174019046">"Skambinimo nustatymai"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Skambučių nustatymus gali keisti tik pagrindinis naudotojas."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Skambučių nustatymus gali keisti tik administruojantis naudotojas."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Nustatymai (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Skambinimo nustatymų klaida"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Skaitomi nustatymai..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Neatlikta jokių pakeitimų."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Pasirinkti balso pašto paslaugą"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Jūsų operatorius"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Korinio tinklo nustatymai"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Senas PIN kodas"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Naujas PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Palaukite."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Naujas PIN kodas per trumpas."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Naujas PIN kodas per ilgas."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Naujas PIN kodas nepakankamai patikimas. Patikimame slaptažodyje neturėtų būti kelių vienodų simbolių iš eilės ar pasikartojančių skaitmenų."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Senas PIN kodas nesutampa."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Naujame PIN kode yra netinkamų simbolių."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Nepavyko pakeisti PIN kodo"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepalaikomas pranešimo tipas, paskambinkite numeriu <xliff:g id="NUMBER">%s</xliff:g> ir išklausykite."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobiliojo ryšio tinklo tipas"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobiliojo ryšio tinklas"</string>
     <string name="label_available" msgid="1181658289009300430">"Galimi tinklai"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Ieškoma…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nerasta tinklų."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registruota tinkle."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Pasirinkite tinklo operatorių"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Ieškoti galimų tinklų"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Pasirinkti automatiškai"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatiškai pasirinkti pageidaujamą tinklą"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatiškai pasirinkti tinklą"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Tinklas"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatinė registracija..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Pageidaujamas tinklo tipas"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Pakeisti tinklo veikimo režimą"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Tik GSM"</item>
     <item msgid="3817924849415716259">"Pageidaujama GSM / WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Skambinama"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Tinklas"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Patobulintas 4G LTE režimas"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Išplėstinės skambinimo parinktys"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Naudoti LTE paslaugas „Voice“ ir kitiems ryšiams patobulinti (rekomenduojama)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Duomenys įgalinti"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Leisti naudoti duomenis"</string>
-    <string name="roaming" msgid="8871412572928323707">"Tarptinklinis duomenų ryšys"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Dėmesio"</string>
+    <string name="roaming" msgid="7894878421600247140">"Tarptinklinis ryšys"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Veikiant tarptinkliniam ryšiui, prisijungti prie duomenų paslaugų"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Veikiant tarptinkliniam ryšiui, prisijungti prie duomenų paslaugų"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Ryšys su duomenimis nutrūko, nes iš pagrindinio tinklo išėjote neįjungę tarptinklinio ryšio."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Galite būti apmokestinti dideliais mokesčiais."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Leisti tarptinklinį duomenų ryšį?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Duomenų naudojimas"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> išnaudota mobiliojo ryšio duomenų: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatorius"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"„<xliff:g id="CARRIER_NAME">%1$s</xliff:g>“ – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiliojo ryšio duomenys"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Prieiga prie duomenų naudojant mobiliojo ryšio tinklą"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"„Wi-Fi“ skambinimas"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operatoriaus vaizdo skambučiai"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM / UMTS parinktys"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA parinktys"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Duomenų naudojimas"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Viršytas <xliff:g id="USED_0">%1$s</xliff:g> maksimumas\nDuomenų perdavimo sparta sumažinta iki <xliff:g id="USED_1">%2$d</xliff:g> Kb / sek."</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Praėjo <xliff:g id="USED_0">%1$d</xliff:g>٪ ciklo\nKitas laikotarpis prasidės po<xliff:g id="USED_1">%2$d</xliff:g> dienų (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Duomenų perdavimo sparta sumažinta iki <xliff:g id="USED">%1$d</xliff:g> kB / sek., jei pasiekiama duomenų naudojimo riba"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Daugiau informacijos apie operatoriaus korinio tinklo duomenų naudojimo politiką"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Daugiau informacijos apie operatoriaus mobiliojo ryšio duomenų naudojimo politiką"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS perdavimas į mobilųjį telefoną"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS perdavimas į mobilųjį telefoną"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Įgalintas SMS perdavimas į mobilųjį telefoną"</string>
@@ -352,9 +378,10 @@
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Automatinis bandymas iš naujo"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Įgalinti automatinio kartotinio bandymo režimą"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Vykstant vaizdo skambučiui negalima keisti TTY režimo"</string>
-    <string name="menu_add" msgid="1882023737425114762">"Pridėti adresatą"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Pridėti kontaktą"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Redaguoti adresatą"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Ištrinti adresatą"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Skambinti kontaktui"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Įveskite PIN2 kodą"</string>
     <string name="name" msgid="7329028332786872378">"Pavadinimas"</string>
     <string name="number" msgid="7905950798349903858">"Numeris"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Trinamas fiksuoto rinkimo numeris..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Ištrintas fiksuoto rinkimo numeris."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN neatnaujintas, nes įvedėte neteisingą PIN kodą."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN neatnaujintas, nes numerį gali sudaryti ne daugiau kaip 20 skaitmenų."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN neatnaujintas, nes numeris nenurodytas arba viršija 20 skaitmenų apribojimą."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN nebuvo atnaujintas. Įvestas PIN2 kodas buvo netinkamas arba telefono numeris buvo atmestas."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Nepavyko atlikti FDN operacijos."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Skaitoma iš SIM kortelės..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nežinomas balso pašto numeris"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nėra paslaugos"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Pasirinktas tinklas (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) negalimas"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Išjunkite lėktuvo režimą, kad galėtumėte skambinti."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Įjunkite mobiliojo ryšio tinklą, išjunkite lėktuvo arba akumuliatoriaus tausojimo priemonės režimą, kad galėtumėte skambinti."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Išjunkite lėktuvo režimą, kad galėtumėte skambinti."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Išjunkite lėktuvo režimą arba prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Jei norite skambinti ne pagalbos numeriu, išjunkite atgalinio skambinimo pagalbos numeriu režimą."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Neregistruota tinkle."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Korinis tinklas nepasiekiamas"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiliojo ryšio tinklas nepasiekiamas. Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilusis tinklas negalimas."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobiliojo ryšio tinklas nepasiekiamas. Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Kad galėtumėte paskambinti, įveskite tinkamą numerį."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nepavyko paskambinti."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Paleidžiama MMI seka..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Paskambinti nepavyko."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Šiuo metu skambučio atlikti negalima."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Paslauga nepalaikoma"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nepavyko perjungti skambučių."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nepavyko atskirti skambučio."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Neįmanoma atlikti konferencinių skambučių."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nepavyko atmesti skambučio."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nepavyko atjungti skamb."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Negalima sulaikyti skambučių."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Įgalinkite „Wi-Fi“ skambinimą, kad galėtumėte skambinti."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Skambutis pagalbos numeriu"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Įjungiamas radijas…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nėra ryšio. Bandoma dar kartą…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Neįmanoma įjungti lėktuvo režimo per skambutį pagalbos numeriu."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Nepavyko paskambinti. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nėra pagalbos numeris."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nepavyko paskambinti. Surinkite pagalbos numerį."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Naudokite klaviatūrą ir rinkite numerius"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importuoti viską"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importuojami SIM kortelės adresatai"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importuoti iš adresatų"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Importuotas kontaktas"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Nepavyko importuoti kontakto"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Klausos aparatai"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Įjungti klausos aparato suderinamumą"</string>
   <string-array name="tty_mode_entries">
@@ -487,7 +520,7 @@
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"Praleisti aktyvinimą?"</string>
     <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"Jei praleisite aktyvinimą, negalėsite skambinti ar prisijungti prie mobilių duomenų tinklų (nors ir galite prisijungti prie „Wi-Fi“ tinklų). Iki tol, kol suaktyvinsite telefoną, aktyvinkite jį kaskart jį įjungdami."</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"Praleisti"</string>
-    <string name="ota_activate" msgid="1368528132525626264">"Aktyvinti"</string>
+    <string name="ota_activate" msgid="1368528132525626264">"Suaktyvinti"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"Telefonas suaktyvintas."</string>
     <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"Aktyvinimo problema"</string>
     <string name="ota_listen" msgid="162923839877584937">"Vadovaukitės girdimomis instrukcijomis, kol išgirsite, kad aktyvinimas baigtas."</string>
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Įvestas atgalinio skambinimo pagalbos numeriu režimas"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Atgalinio skambinimo pagalbos numeriu režimas"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Duomenų ryšys išjungtas"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutę</item>
-      <item quantity="few">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutes</item>
-      <item quantity="many">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minutės</item>
-      <item quantity="other">Jokio duomenų ryšio <xliff:g id="COUNT_1">%s</xliff:g> minučių</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Duomenų ryšio nebus iki <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutę. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
       <item quantity="few">Telefonas veiks pagalbos tarnybos atskambinimo režimu <xliff:g id="COUNT_1">%s</xliff:g> minutes. Įgalinus šį režimą negalima naudoti jokių programų, kurioms reikalingas duomenų ryšys. Norite dabar išeiti iš šio režimo?</item>
@@ -527,7 +555,7 @@
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Taip"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Ne"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Atsisakyti"</string>
-    <string name="voicemail_provider" msgid="5135942703327136909">"Paslauga"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Paslaugos teikėjas"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Sąranka"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nenustatyta&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Kiti skambučio nustatymai"</string>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"pasirinkti kontaktą"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Skambinimas balsu nepalaikomas"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"rinkti numerį"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibruoti"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibruoti"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vaizdinis balso paštas"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Garsas"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN kodo nustatymas"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Keisti PIN kodą"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Skambėjimo tonas ir vibracija"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Įtaisytosios SIM kortelės"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Įjungti vaizdo skambutį"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tik skambučiai pagalbos numeriu"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kortelė, lizdas: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pritaikymas neįgaliesiems"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Gaunamasis „Wi-Fi“ skamb."</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"„Wi-Fi“ skambutis nuo"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"„Wi-Fi“ skambutis"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Palieskite dar kartą, kad atidarytumėte"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Palieskite dar kartą, kad atidarytumėte"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Iškoduojant pranešimą įvyko klaida."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kortelė suaktyvino paslaugą ir atnaujino telefono tarptinklinio duomenų ryšio funkcijas."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Yra per daug aktyvių skambučių. Prieš skambindami kitu numeriu, užbaikite ar sujunkite esamus skambučius."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nepavyko užmegzti ryšio. Įdėkite tinkamą SIM kortelę."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"„Wi-Fi“ ryšys prarastas. Skambutis baigėsi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Balso pašto PIN kodo keitimas"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Tęsti"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Atšaukti"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Gerai"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Seno PIN kodo patvirtinimas"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Jei norite tęsti, įveskite balso pašto PIN kodą."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Naujo PIN kodo nustatymas"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN kodas turi būti <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> skaitmenų."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN kodo patvirtinimas"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN kodai neatitinka"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Balso pašto PIN kodas atnaujintas"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nepavyksta nustatyti PIN kodo"</string>
 </resources>
diff --git a/res/values-lv/config.xml b/res/values-lv/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-lv/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index ff61395..1d4e622 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobilie dati"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilo ierīču dati"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Tālruņa pakalpojumi"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Ārkārtas numuru sastādītājs"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Tālrunis"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Trūkst balss pasta numura"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartē neviens balss pasta numurs nav saglabāts."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Pievienot numuru"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Tikai galvenais lietotājs var mainīt balss pasta iestatījumus."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM karte ir atbloķēta. Notiek tālruņa atbloķēšana..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM tīkla atbloķēšanas PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Atbloķēt"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Notiek tīkla atbloķēšanas pieprasīšana..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Tīkla atbloķēšanas pieprasījums nav veiksmīgs."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Tīkla atbloķēšana bija veiksmīga."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mobilā tīkla iestatījumi šim lietotājam nav pieejami."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mobilā tīkla iestatījumi šim lietotājam nav pieejami."</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM zvanu iestatījumi"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM zvanu iestatījumi (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA zvanu iestatījumi"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Zvaniem izmantot..."</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP zvaniem izmantot..."</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Vispirms jautāt"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nav pieejams neviens tīkls"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Iestatījumi"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Izvēlieties kontus"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Tālruņa konti"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Balss pasts"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Balss pasts (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"BP:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Paziņojumi"</string>
     <string name="networks" msgid="8873030692174541976">"Tīkla operatori"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Ārkārtas paziņojumi"</string>
     <string name="call_settings" msgid="6112441768261754562">"Zvanu iestatījumi"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kad nav sasniedzams"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numurs, ja nav sasniedzams"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Pāradresēšana uz: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Atspējots"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Izslēgts"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Jūsu mobilo sakaru operators neatbalsta zvanu pāradresācijas atspējošanu, ja tālrunis nav sasniedzams."</string>
     <string name="updating_title" msgid="6146755386174019046">"Zvanu iestatījumi"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Tikai galvenais lietotājs var mainīt zvanu iestatījumus."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Tikai lietotājs ar administratora tiesībām var mainīt zvanu iestatījumus."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Iestatījumi (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Zvanu iestatījumu kļūda"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Notiek iestatījumu lasīšana..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Izmaiņas netika veiktas."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Izvēlieties balss pasta pakalpojumu"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Jūsu operators"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobilā tīkla iestatījumi"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Iepriekšējais PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Jaunais PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Lūdzu, uzgaidiet!"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Jaunais PIN ir pārāk īss."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Jaunais PIN ir pārāk garš."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Jaunais PIN nav pietiekami drošs. Droša parole nedrīkst ietvert secīgus vai atkārtotus ciparus."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Vecais PIN neatbilst."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Jaunajā PIN ir ietvertas nederīgas rakstzīmes."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Neizdevās mainīt PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Neatbalstīts ziņojuma veids. Lai noklausītos, zvaniet uz numuru <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobilā tīkla iestatījumi"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilais tīkls"</string>
     <string name="label_available" msgid="1181658289009300430">"Pieejamie tīkli"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Notiek meklēšana…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Neviens tīkls nav atrasts."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Reģistrēts tīklā."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Izvēlēties tīkla operatoru"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Meklēt visus pieejamos tīklus"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Izvēlēties automātiski"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automātiski izvēlēties vajadzīgo tīklu"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automātiski atlasīt tīklu"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Tīkls"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automātiska reģistrācija..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Ieteicamais tīkla veids"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Mainiet tīkla darbības režīmu"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Tikai GSM"</item>
     <item msgid="3817924849415716259">"Ieteicams GSM/WCDMA režīms"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Zvanīšana"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Tīkls"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Uzlabota 4G LTE režīms"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Paplašināta zvanīšana"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Lietojiet LTE pakalpojumus, lai uzlabotu balss un cita veida saziņu (ieteicams)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dati ir iespējoti."</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Atļaut datu izmantošanu"</string>
-    <string name="roaming" msgid="8871412572928323707">"Datu viesabonēšana"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Uzmanību!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Viesabonēšana"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Viesabonēšanas laikā izveidot savienojumu ar datu pakalpojumiem"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Viesabonēšanas laikā izveidot savienojumu ar datu pakalpojumiem"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Datu savienojamība ir zaudēta, jo mājas tīkls ar datu viesabonēšanu ir izslēgts."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Var rasties ievērojamas izmaksas."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vai atļaut datu viesabonēšanu?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datu lietojums"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobilo datu izmantoti šādā laika periodā: <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Mobilo sakaru operators"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobilie dati"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Piekļuve datiem, izmantojot mobilo tīklu"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi zvani"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Mobilo sakaru operatora videozvani"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS opcijas"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA opcijas"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datu lietojums"</string>
@@ -220,7 +246,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datu ātrums tiek samazināts līdz <xliff:g id="USED">%1$d</xliff:g> Kb/s, ja ir pārsniegts datu lietojuma ierobežojums."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Plašāka informācija par mobilo sakaru operatora mobilā tīkla datu lietošanas politiku"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Papildinformācija par mobilo sakaru operatora mobilā tīkla datu lietošanas politiku"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Šūnu apraides īsziņa"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Šūnu apraides īsziņa"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Šūnu apraides īsziņas ir iespējotas."</string>
@@ -332,8 +358,8 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Ierīces aktivizēšana"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Datu pakalpojuma iestatīšana"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Operatora iestatījumi"</string>
-    <string name="fdn" msgid="7878832555095183202">"Fiksētie numuru sastādīšanas numuri"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"Fiksētie numuri (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn" msgid="7878832555095183202">"Atļautie numuri"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Atļautie numuri (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"IZSN saraksts"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"IZSN saraksts (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"IZSN aktivizācija"</string>
@@ -357,6 +383,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Pievienot kontaktpersonu"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Rediģēt kontaktpersonu"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Dzēst kontaktpersonu"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Sastādīt kontaktpersonas numuru"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Ievadiet PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Vārds"</string>
     <string name="number" msgid="7905950798349903858">"Numurs"</string>
@@ -371,7 +398,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Notiek fiksētā numuru sastādīšanas numura dzēšana…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Fiksētais numuru sastādīšanas numurs ir atspējots."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"IZSN nav atjaunināts, jo tika ievadīts nepareizs PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"IZSN netika atjaunināts, jo numurā nedrīkst būt vairāk par 20 cipariem."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"IZSN netika atjaunināts, jo numura lauks ir tukšs vai numurā ir vairāk par 20 cipariem."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"IZSN netika atjaunināts. Ievadītais PIN2 nebija pareizs, vai tālruņa numurs tika noraidīts."</string>
     <string name="fdn_failed" msgid="540018079008319747">"IZSN ievadīšana neizdevās."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Notiek lasīšana no SIM kartes..."</string>
@@ -428,15 +455,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Balss pasta numurs nav zināms."</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nav pakalpojuma"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Atlasītais tīkls (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nav pieejams"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Lai veiktu zvanu, izslēdziet lidojuma režīmu."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Lai veiktu zvanu, ieslēdziet mobilo tīklu, izslēdziet lidojuma režīmu vai izslēdziet akumulatora jaudas taupīšanas režīmu."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Lai veiktu zvanu, izslēdziet lidojuma režīmu."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Lai veiktu zvanu, izslēdziet lidojuma režīmu vai izveidojiet savienojumu ar bezvadu tīklu."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Lai veiktu parastu zvanu, izejiet no ārkārtas atzvana režīma."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tīklā nav reģistrēts."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilais tīkls nav pieejams."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilais tīkls nav pieejams. Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilais tīkls nav pieejams."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilais tīkls nav pieejams. Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Lai veiktu zvanu, ievadiet derīgu numuru."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nevar veikt zvanu."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Notiek MMI secības startēšana…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Zvans neizdevās."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Pašlaik nevar pievienot zvanu."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Pakalpojums netiek atbalstīts"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nevar pārslēgt zvanus."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nevar nošķirt zvanu."</string>
@@ -444,10 +472,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nevar veikt konferences zvanus."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nevar noraidīt zvanu."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nevar pārtraukt zvanu(-us)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nevar aizturēt zvanus."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Lai veiktu zvanu, iespējojiet Wi-Fi zvanus."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ārkārtas zvans"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Notiek radio ieslēgšana..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nav pakalpojuma. Notiek atkārtots mēģinājums…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Ārkārtas izsaukuma laikā nevar ieslēgt lidojuma režīmu."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Nevar veikt zvanu. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nav ārkārtas numurs."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nevar veikt zvanu. Zvaniet ārkārtas numuram."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Izmantojiet tastatūru, lai sastādītu numuru."</string>
@@ -466,6 +497,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importēt visu"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Notiek SIM kontaktpersonu importēšana"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importēt no kontaktpersonām"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontaktpersona ir importēta."</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Neizdevās importēt kontaktpersonu."</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Dzirdes aparāti"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Ieslēgt saderību ar dzirdes aparātiem"</string>
   <string-array name="tty_mode_entries">
@@ -506,11 +539,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ievadītais ārkārtas atzvana režīms"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Ārkārtas atzvana režīms"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datu savienojums ir atspējots."</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="zero"><xliff:g id="COUNT_1">%s</xliff:g> minūtes nav datu savienojuma</item>
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> minūti nav datu savienojuma</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> minūtes nav datu savienojuma</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Datu savienojums nebūs pieejams līdz plkst. <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="zero">Tālrunī <xliff:g id="COUNT_1">%s</xliff:g> minūtes būs aktivizēts ārkārtas atzvana režīms. Šajā režīmā nevar izmantot lietotnes, kurās tiek lietots datu savienojums. Vai vēlaties to aizvērt tūlīt?</item>
       <item quantity="one">Tālrunī <xliff:g id="COUNT_1">%s</xliff:g> minūti būs aktivizēts ārkārtas atzvana režīms. Šajā režīmā nevar izmantot lietotnes, kurās tiek lietots datu savienojums. Vai vēlaties to aizvērt tūlīt?</item>
@@ -536,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"atlasīt kontaktpersonu"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Balss zvani netiek atbalstīti"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"sastādīt numuru"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrozvans"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrozvans"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuālais balss pasts"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Signāls"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN koda iestatīšana"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Mainīt PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zvana signāls un vibrācija"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Iebūvētās SIM kartes"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Ieslēgt videozvanus"</string>
@@ -550,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tikai ārkārtas izsaukumi"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM karte, slots: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pieejamība"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Ienākošs Wi-Fi zvans"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi zvans no:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi zvans"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Lai atvērtu, pieskarieties vēlreiz."</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Pieskarieties vēlreiz, lai atvērtu."</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Atšifrējot ziņojumu, radās kļūda."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kartē ir aktivizēts jūsu pakalpojums un atjauninātas tālruņa viesabonēšanas iespējas."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ir pārāk daudz aktīvu zvanu. Pirms jauna zvana veikšanas pabeidziet vai apvienojiet esošos zvanus."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nevar izveidot savienojumu. Lūdzu, ievietojiet derīgu SIM karti."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi savienojums ir zaudēts. Zvans ir pārtraukts."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Balss pasta PIN koda mainīšana"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Turpināt"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Atcelt"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Labi"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Vecā PIN koda apstiprināšana"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Lai turpinātu, ievadiet sava balss pasta PIN kodu."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Jauna PIN koda iestatīšana"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN kodā ir jābūt <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> cipariem."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN koda apstiprināšana"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN kodi neatbilst."</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Balss pasta PIN kods atjaunināts"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nevar iestatīt PIN kodu."</string>
 </resources>
diff --git a/res/values-mcc208-mnc09-fr/strings.xml b/res/values-mcc208-mnc09-fr/strings.xml
new file mode 100644
index 0000000..ac5ef59
--- /dev/null
+++ b/res/values-mcc208-mnc09-fr/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="enhanced_4g_lte_mode_summary">Utiliser la fonction Voix 4G (HD) lorsqu\'elle est disponible</string>
+    <string name="enhanced_4g_lte_mode_title">Activer Voix 4G (HD)</string>
+</resources>
diff --git a/res/values-mcc208-mnc10-fr/strings.xml b/res/values-mcc208-mnc10-fr/strings.xml
new file mode 100644
index 0000000..ac5ef59
--- /dev/null
+++ b/res/values-mcc208-mnc10-fr/strings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="enhanced_4g_lte_mode_summary">Utiliser la fonction Voix 4G (HD) lorsqu\'elle est disponible</string>
+    <string name="enhanced_4g_lte_mode_title">Activer Voix 4G (HD)</string>
+</resources>
diff --git a/res/values-mcc262-mnc01/strings.xml b/res/values-mcc262-mnc01/strings.xml
new file mode 100644
index 0000000..0765a73
--- /dev/null
+++ b/res/values-mcc262-mnc01/strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Status hint label for an incoming call over a wifi network which has not been accepted yet.
+         DO NOT TRANSLATE. -->
+    <string name="status_hint_label_incoming_wifi_call">WLAN Call from</string>
+    <!-- Status hint label for a call being made over a wifi network. DO NOT TRANSLATE. -->
+    <string name="status_hint_label_wifi_call">WLAN Call</string>
+</resources>
diff --git a/res/values-mk-rMK/arrays.xml b/res/values-mk/arrays.xml
similarity index 100%
rename from res/values-mk-rMK/arrays.xml
rename to res/values-mk/arrays.xml
diff --git a/res/values-mk/config.xml b/res/values-mk/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-mk/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk/strings.xml
similarity index 77%
rename from res/values-mk-rMK/strings.xml
rename to res/values-mk/strings.xml
index 9eee415..fc99d16 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Мобилни податоци"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Мобилен интернет"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефонски услуги"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Бирач за итни случаи"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
@@ -43,30 +43,32 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"Не"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Замени резервен знак со"</string>
     <string name="no_vm_number" msgid="4164780423805688336">"Недостасува број на говорна пошта"</string>
-    <string name="no_vm_number_msg" msgid="1300729501030053828">"Нема мемориран број на говорна пошта на СИМ картичката."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Нема мемориран број на говорна пошта на SIM картичката."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Додај број"</string>
-    <string name="puk_unlocked" msgid="2284912838477558454">"Вашата СИМ картичка е одблокирана. Вашиот телефон се отклучува..."</string>
-    <string name="label_ndp" msgid="780479633159517250">"ПИН за отклучување мрежа на СИМ"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Поставките за говорна пошта може да ги измени само примарниот корисник."</string>
+    <string name="puk_unlocked" msgid="2284912838477558454">"Вашата SIM картичка е одблокирана. Вашиот телефон се отклучува..."</string>
+    <string name="label_ndp" msgid="780479633159517250">"PIN за отклучување мрежа на SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Отклучи"</string>
     <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Отфрли"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"Барање за отклучување мрежа..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Барањето за отклучување мрежа е неуспешно."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Отклучувањето мрежа е успешно."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Поставките за мобилна мрежа не се достапни за овој корисник"</string>
-    <string name="labelGSMMore" msgid="5930842194056092106">"GSM подесувања на повик"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Поставките на мобилната мрежа не се достапни за овој корисник"</string>
+    <string name="labelGSMMore" msgid="5930842194056092106">"GSM поставки на повик"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Поставки за повик преку GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA подесувања на повик"</string>
+    <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA поставки на повик"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Поставки за повик преку CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Имиња на точка на пристап"</string>
     <string name="settings_label" msgid="3876743539816984008">"Поставки на мрежа"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Сметки за повикување"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Повикувајте со"</string>
-    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Повикувајте со СИП со"</string>
+    <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Повикувајте со SIP со"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Прво прашај"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Нема достапна мрежа"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Поставки"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Изберете сметки"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Телефонски сметки"</string>
-    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Додајте сметка на СИП"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"Додајте сметка за SIP"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Конфигурирајте ги поставките на сметка"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"Сите сметки за повици"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Изберете кои сметки може да повикуваат"</string>
@@ -75,61 +77,62 @@
     <string name="voicemail" msgid="8693759337917898954">"Говорна пошта"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Говорна пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Известувања"</string>
     <string name="networks" msgid="8873030692174541976">"Оператори на мрежа"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Итни емитувања"</string>
     <string name="call_settings" msgid="6112441768261754562">"Поставки на повик"</string>
-    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Дополнителни подесувања"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Дополнителни поставки"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Дополнителни поставки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Дополнителни подесувања на повик само за GSM"</string>
-    <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Дополнителни CDMA подесувања на повик"</string>
-    <string name="sum_cdma_call_settings" msgid="284753265979035549">"Дополнителни подесувања на повик само за CDMA"</string>
+    <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Дополнителни поставки на повик само за GSM"</string>
+    <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Дополнителни CDMA поставки на повик"</string>
+    <string name="sum_cdma_call_settings" msgid="284753265979035549">"Дополнителни поставки на повик само за CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Поставки на мрежна услуга"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"ИД на повикувач"</string>
-    <string name="sum_loading_settings" msgid="1826692909391168620">"Вчитување на подесувањата..."</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"ID на повикувач"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Вчитување на поставките..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Број скриен при појдовни повици"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Број прикажан при појдовни повици"</string>
-    <string name="sum_default_caller_id" msgid="1954518825510901365">"Користи стандардни подесувања на оператор за да се прикаже мојот број при појдовни повици"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"Користи стандардни поставки на оператор за да се прикаже мојот број при појдовни повици"</string>
     <string name="labelCW" msgid="6120513814915920200">"Повик на чекање"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"За време на повик, извести ме за дојдовни повици"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"За време на повик, извести ме за дојдовни повици"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Поставки за проследување повик"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Проследување повик"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Поставки за проследување повик (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"Препраќање повик"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"Секогаш препраќај"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Проследување повик"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Секогаш проследувај"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Секогаш користи го овој број"</string>
-    <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Препраќање на сите повици"</string>
-    <string name="sum_cfu_enabled" msgid="2450052502198827927">"Препраќање на сите повици на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Проследување на сите повици"</string>
+    <string name="sum_cfu_enabled" msgid="2450052502198827927">"Проследување на сите повици на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Бројот е недостапен"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"Исклучено"</string>
     <string name="labelCFB" msgid="6139853033106283172">"Кога е зафатено"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Број кога е зафатено"</string>
-    <string name="sum_cfb_enabled" msgid="5984198104833116690">"Препраќање на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfb_enabled" msgid="5984198104833116690">"Проследување на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Исклучено"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Вашиот оператор не поддржува оневозможување проследување повик кога вашиот телефон е зафатен."</string>
     <string name="labelCFNRy" msgid="1736067178393744351">"Кога е неодговорено"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Број кога нема одговор"</string>
-    <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Препраќање на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Проследување на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Исклучено"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Вашиот оператор не поддржува оневозможување проследување повик кога нема да одговорите на вашиот телефон."</string>
     <string name="labelCFNRc" msgid="2614827454402079766">"Кога е недостапно"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Број кога е недостапно"</string>
-    <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Препраќање на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Оневозможено"</string>
+    <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Проследување на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Исклучено"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Вашиот оператор не поддржува оневозможување проследување повик кога вашиот телефон е недостапен."</string>
     <string name="updating_title" msgid="6146755386174019046">"Поставки на повик"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Поставките за повик може да ги промени само главниот корисник."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Поставките за повик може да ги измени само администраторскиот корисник."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Поставки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Грешка со подесување повици"</string>
-    <string name="reading_settings" msgid="1920291699287055284">"Подесувања за читање..."</string>
-    <string name="updating_settings" msgid="8171225533884883252">"Ажурирање подесувања..."</string>
-    <string name="reverting_settings" msgid="4752151682666912828">"Враќање подесувања..."</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Грешка со поставки на повици"</string>
+    <string name="reading_settings" msgid="1920291699287055284">"Поставки за читање..."</string>
+    <string name="updating_settings" msgid="8171225533884883252">"Ажурирање поставки..."</string>
+    <string name="reverting_settings" msgid="4752151682666912828">"Враќање поставки..."</string>
     <string name="response_error" msgid="6674110501330139405">"Неочекуван одговор од мрежата."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Грешка со мрежа или СИМ картичка."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Грешка со мрежа или SIM картичка."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"Барањето SS е изменето во барање DIAL."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"Барањето SS е изменето во барање USSD."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"Барањето SS е изменето во ново барање SS."</string>
     <string name="fdn_check_failure" msgid="18200614306525434">"Апликацијата на вашиот телефон за броеви на фиксно бирање е вклучена. Како резултат на тоа, некои функции поврзани со повици не работат."</string>
-    <string name="radio_off_error" msgid="2304459933248513376">"Вклучете го радиото пред да ги видите овие подесувања."</string>
+    <string name="radio_off_error" msgid="2304459933248513376">"Вклучете го радиото пред да ги гледате овие поставки."</string>
     <string name="close_dialog" msgid="2365884406356986917">"Во ред"</string>
     <string name="enable" msgid="7248657275000173526">"Вклучи"</string>
     <string name="disable" msgid="4678348128118573672">"Исклучи"</string>
@@ -142,24 +145,35 @@
     <string name="vm_changed" msgid="380744030726254139">"Бројот на говорна пошта е променет."</string>
     <string name="vm_change_failed" msgid="3352934863246208918">"Не може да се промени бројот на говорна пошта.\nКонтактирајте со вашиот оператор ако проблемот продолжи."</string>
     <string name="fw_change_failed" msgid="5298103228470214665">"Не може да се промени бројот на проследување.\nКонтактирајте со вашиот оператор ако проблемот продолжи."</string>
-    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Не може да се повратат и да се зачуваат моменталните подесувања на бројот на проследување.\nСепак сакате да се префрлите на новиот оператор?"</string>
+    <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"Не може да се повратат и да се зачуваат моменталните поставки на бројот за проследување.\nСепак сакате да се префрлите на новиот оператор?"</string>
     <string name="no_change" msgid="3186040086622435212">"Не беа направени промени."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Избери услуга на говорна пошта"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Вашиот оператор"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Поставки за мобилна мрежа"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стар PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нов PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Почекајте."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новиот PIN е премногу кус."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новиот PIN е премногу долг."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новиот PIN е премногу слаб. Силна лозинка не треба да содржи непрекината серија или цифри што се повторуваат."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Стариот PIN не се совпаѓа."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Новиот PIN содржи погрешни знаци."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN-кодот не може да се промени"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Неподдржан тип порака. Повикајте <xliff:g id="NUMBER">%s</xliff:g> за да слушате."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Поставки на мобилна мрежа"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобилна мрежа"</string>
     <string name="label_available" msgid="1181658289009300430">"Достапни мрежи"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Се пребарува..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Не се пронајдени мрежи."</string>
     <string name="search_networks" msgid="1601136049300882441">"Пребарај мрежи"</string>
     <string name="network_query_error" msgid="6828516148953325006">"Грешка при пребарување мрежи."</string>
     <string name="register_on_network" msgid="9055203954040805084">"Регистрирање на <xliff:g id="NETWORK">%s</xliff:g>..."</string>
-    <string name="not_allowed" msgid="5613353860205691579">"Вашата СИМ картичка не дозволува поврзување со оваа мрежа."</string>
+    <string name="not_allowed" msgid="5613353860205691579">"Вашата SIM картичка не дозволува поврзување со оваа мрежа."</string>
     <string name="connect_later" msgid="2308119155752343975">"Не може да се поврзе со оваа мрежа во моментов. Обидете се повторно подоцна."</string>
     <string name="registration_done" msgid="495135664535876612">"Регистрирање на мрежа."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Избери оператор на мрежа"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Пребарај ги сите достапни мрежи"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Избери автоматски"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Автоматски избери претпочитана мрежа"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Избери мрежа автоматски"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Мрежа"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Автоматска регистрација..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Претпочитан тип мрежа"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Промени го режимот на работа на мрежата"</string>
@@ -196,21 +210,33 @@
     <item msgid="1524224863879435516">"Само GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA претпочитана"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Повикување"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Мрежа"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Режим на подобрени 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Напредно повикување"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Користете ги услугите на LTE за да ја подобрите гласовната и другите видови комуникација (препорачано)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Податоците се овозможени"</string>
-    <string name="data_enable_summary" msgid="2382798156640007971">"Дозволи користење податоци"</string>
-    <string name="roaming" msgid="8871412572928323707">"Роаминг на податоци"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Поврзи се со податочни услуги во роаминг"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Поврзи се со податочни услуги во роаминг"</string>
+    <string name="data_enable_summary" msgid="2382798156640007971">"Дозволи користење интернет"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Внимание"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роаминг"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Поврзи се со интернет услуги во роаминг"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Поврзи се со интернет услуги во роаминг"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Изгубивте поврзување податоци зашто на вашата домашна мрежа исклучивте роаминг на податоци."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Може да направите големи трошоци."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Дозволи роаминг на податоци?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Потрошен сообраќај"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> потрошен мобилен интернет во периодот <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобилен интернет"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Пристапете до податоците преку мобилна мрежа"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Повикување преку Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Видеоповикување преку оператор"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Опции за GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Опции на CDMA"</string>
-    <string name="throttle_data_usage" msgid="3715677828160555808">"Користење податоци"</string>
+    <string name="throttle_data_usage" msgid="3715677828160555808">"Потрошен интернет"</string>
     <string name="throttle_current_usage" msgid="8762280193043815361">"Податоци кои се користат во тековниот период"</string>
-    <string name="throttle_time_frame" msgid="1915198770363734685">"Период на користење податоци"</string>
+    <string name="throttle_time_frame" msgid="1915198770363734685">"Период на потрошен интернет"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"Политика на стапка на податоци"</string>
     <string name="throttle_help" msgid="243651091785169900">"Дознај повеќе"</string>
     <!-- String.format failed for translation -->
@@ -223,13 +249,13 @@
     <!-- String.format failed for translation -->
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
-    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Стапката на податоци се сведува на <xliff:g id="USED">%1$d</xliff:g> кб/с ако се надмине границата на користење податоци"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Повеќе информации за политиката на користање податоци на мобилната мрежа на вашиот оператор"</string>
-    <string name="cell_broadcast_sms" msgid="5584192824053625842">"СМС за емитување од мобилен"</string>
-    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"СМС за емитување од мобилен"</string>
-    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"СМС за емитување од мобилен е овозможено"</string>
-    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"СМС за емитување од мобилен е оневозможено"</string>
-    <string name="cb_sms_settings" msgid="651715019785107312">"Подесувања на СМС за емитување од мобилен"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Преносот на податоци се сведува на <xliff:g id="USED">%1$d</xliff:g> кб/с ако се надмине границата на потрошен интернет"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Повеќе информации за политиката на користање податоци на мобилната мрежа на вашиот оператор"</string>
+    <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS за емитување од мобилен"</string>
+    <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS за емитување од мобилен"</string>
+    <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS за емитување од мобилен е овозможено"</string>
+    <string name="cell_bc_sms_disable" msgid="3398365088309408749">"SMS за емитување од мобилен е оневозможено"</string>
+    <string name="cb_sms_settings" msgid="651715019785107312">"Поставки на SMS за емитување од мобилен"</string>
     <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Итно објавување"</string>
     <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Итното објавување е овозможено"</string>
     <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Итното објавување е оневозможено"</string>
@@ -323,10 +349,10 @@
     <item msgid="1205664026446156265">"Автоматски"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA претплата"</string>
-    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Промена помеѓу RUIM/СМС и NV"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"Промена помеѓу RUIM/SMS и NV"</string>
     <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"претплата"</string>
   <string-array name="cdma_subscription_choices">
-    <item msgid="2258014151300708431">"RUIM/СИМ"</item>
+    <item msgid="2258014151300708431">"RUIM/SIM"</item>
     <item msgid="5127722015571873880">"NV"</item>
   </string-array>
   <string-array name="cdma_subscription_values">
@@ -334,7 +360,7 @@
     <item msgid="6043847456049107742">"1"</item>
   </string-array>
     <string name="cdma_activate_device" msgid="3793805892364814518">"Активирај уред"</string>
-    <string name="cdma_lte_data_service" msgid="4255018217292548962">"Подеси услуга на податоци"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"Постави услуга на податоци"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Поставки на оператор"</string>
     <string name="fdn" msgid="7878832555095183202">"Броеви на фиксно бирање"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Броеви за фиксно бирање (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -345,77 +371,78 @@
     <string name="fdn_disabled" msgid="4700049736675368279">"Броевите на фиксно бирање се оневозможени"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Овозможи FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Оневозможи FDN"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"Промени ПИН2"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"Промени PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Оневозможи FDN"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Овозможи FDN"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Управувај со броеви за фиксно бирање"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Смени ПИН за FDN пристап"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Смени PIN за FDN пристап"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Управувај со список на телефонски броеви"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Приватност на глас"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Овозможи подобрен режим на приватност"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Режим TTY"</string>
-    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Подеси режим TTY"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Постави режим TTY"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоматски повторен обид"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Овозможи режим на автоматски повторен обид"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Промена на режим TTY не е дозволена за време на видеоповик"</string>
     <string name="menu_add" msgid="1882023737425114762">"Додај контакт"</string>
-    <string name="menu_edit" msgid="7143003705504672374">"Уреди контакт"</string>
+    <string name="menu_edit" msgid="7143003705504672374">"Измени контакт"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Избриши контакт"</string>
-    <string name="get_pin2" msgid="8204677063922225311">"Впише ПИН2"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Повикај контакт"</string>
+    <string name="get_pin2" msgid="8204677063922225311">"Внеси PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Име"</string>
     <string name="number" msgid="7905950798349903858">"Број"</string>
     <string name="save" msgid="4094274636321939086">"Зачувај"</string>
     <string name="add_fdn_contact" msgid="2481915899633353976">"Додај број на фиксно бирање"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"Се додава број на фиксно бирање..."</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"Бројот на фиксно бирање е додаден."</string>
-    <string name="edit_fdn_contact" msgid="7976936035587081480">"Уреди број на фиксно бирање"</string>
+    <string name="edit_fdn_contact" msgid="7976936035587081480">"Измени број на фиксно бирање"</string>
     <string name="updating_fdn_contact" msgid="8370929876849803600">"Ажурирање број за фиксно бирање..."</string>
     <string name="fdn_contact_updated" msgid="5497828782609005017">"Бројот на фиксно бирање е ажуриран."</string>
     <string name="delete_fdn_contact" msgid="6668958073074151717">"Избриши број на фиксно бирање"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Бришење број на фиксно бирање..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Бројот на фиксно бирање е избришан."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"FDN не се ажурираше зашто внесовте погрешен ПИН."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN не е ажуриран зашто бројот не може да надмине 20 цифри."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN не се ажурираше. ПИН2 кодот беше неточен или телефонски број беше одбиен."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"FDN не се ажурираше зашто внесовте погрешен PIN."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN не е ажуриран затоа што бројот е празен или содржи повеќе од 20 цифри."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN не се ажурираше. PIN2 кодот е неточен или телефонскиот број е одбиен."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Операцијата со FDN не успеа."</string>
-    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Се чита од СИМ картичка..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Нема контакти на вашата СИМ картичка."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Се чита од SIM картичка..."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Нема контакти на вашата SIM картичка."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Избери контакти за увоз"</string>
-    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Исклучете го авионскиот режим за да ги увезете контактите од СИМ-картичката."</string>
-    <string name="enable_pin" msgid="5422767284133234860">"Овозможи/оневозможи ПИН на СИМ"</string>
-    <string name="change_pin" msgid="9174186126330785343">"Промени ПИН на СИМ"</string>
-    <string name="enter_pin_text" msgid="8532615714751931951">"ПИН на СИМ:"</string>
-    <string name="oldPinLabel" msgid="5287773661246368314">"Стар ПИН"</string>
-    <string name="newPinLabel" msgid="207488227285336897">"Нов ПИН"</string>
-    <string name="confirmPinLabel" msgid="257597715098070206">"Потврди нов ПИН"</string>
-    <string name="badPin" msgid="8955102849303984935">"Стариот ПИН што го впишавте не е точен. Обидете се повторно."</string>
-    <string name="mismatchPin" msgid="5923253370683071889">"ПИН кодовите што ги внесовте не се совпаѓаат. Обидете се повторно."</string>
-    <string name="invalidPin" msgid="5981171102258684792">"Внеси ПИН од 4 до 8 броеви."</string>
-    <string name="disable_sim_pin" msgid="3419351358300716472">"Исчисти ПИН на СИМ"</string>
-    <string name="enable_sim_pin" msgid="4845145659651484248">"Поставете ПИН на СИМ"</string>
-    <string name="enable_in_progress" msgid="3417917024688497010">"ПИН-кодот се поставува…"</string>
-    <string name="enable_pin_ok" msgid="2918545971413270063">"ПИН-кодот е поставен"</string>
-    <string name="disable_pin_ok" msgid="2109571368635883688">"ПИН-кодот е исчистен"</string>
-    <string name="pin_failed" msgid="5644377896213584760">"ПИН-кодот е неточен"</string>
-    <string name="pin_changed" msgid="4455736268023261662">"ПИН-кодот е ажуриран"</string>
-    <string name="puk_requested" msgid="5921393215789090200">"Лозинката е неточна. ПИН-кодот е сега блокиран. Се бара ПУК."</string>
-    <string name="enter_pin2_text" msgid="8339444124477720345">"ПИН2"</string>
-    <string name="oldPin2Label" msgid="8559146795026261502">"Стар ПИН2"</string>
-    <string name="newPin2Label" msgid="4573956902204349054">"Нов ПИН2"</string>
-    <string name="confirmPin2Label" msgid="8100319484454787708">"Потврди нов ПИН2"</string>
+    <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Исклучете го авионскиот режим за да ги увезете контактите од SIM-картичката."</string>
+    <string name="enable_pin" msgid="5422767284133234860">"Овозможи/оневозможи PIN на SIM"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Промени PIN на SIM"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"PIN на SIM:"</string>
+    <string name="oldPinLabel" msgid="5287773661246368314">"Стар PIN"</string>
+    <string name="newPinLabel" msgid="207488227285336897">"Нов PIN"</string>
+    <string name="confirmPinLabel" msgid="257597715098070206">"Потврди нов PIN"</string>
+    <string name="badPin" msgid="8955102849303984935">"Стариот PIN што го впишавте не е точен. Обидете се повторно."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"PIN кодовите што ги внесовте не се совпаѓаат. Обидете се повторно."</string>
+    <string name="invalidPin" msgid="5981171102258684792">"Внеси PIN од 4 до 8 броеви."</string>
+    <string name="disable_sim_pin" msgid="3419351358300716472">"Исчисти PIN на SIM"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"Поставете PIN на SIM"</string>
+    <string name="enable_in_progress" msgid="3417917024688497010">"PIN-кодот се поставува…"</string>
+    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN-кодот е поставен"</string>
+    <string name="disable_pin_ok" msgid="2109571368635883688">"PIN-кодот е исчистен"</string>
+    <string name="pin_failed" msgid="5644377896213584760">"PIN-кодот е неточен"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"PIN-кодот е ажуриран"</string>
+    <string name="puk_requested" msgid="5921393215789090200">"Лозинката е неточна. PIN-кодот е сега блокиран. Се бара ПУК."</string>
+    <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"Стар PIN2"</string>
+    <string name="newPin2Label" msgid="4573956902204349054">"Нов PIN2"</string>
+    <string name="confirmPin2Label" msgid="8100319484454787708">"Потврди нов PIN2"</string>
     <string name="badPuk2" msgid="7910064009531541708">"ПУК2 е неточен. Обидете се повторно."</string>
-    <string name="badPin2" msgid="6646896629970023109">"Стариот ПИН2 е неточен. Обидете се повторно."</string>
+    <string name="badPin2" msgid="6646896629970023109">"Стариот PIN2 е неточен. Обидете се повторно."</string>
     <string name="mismatchPin2" msgid="4177967478551851117">"ПУК2-кодовите не се совпаѓаат. Обидете се повторно."</string>
-    <string name="invalidPin2" msgid="1757045131429105595">"Внесете ПИН2 кој содржи од 4 до 8 броеви."</string>
+    <string name="invalidPin2" msgid="1757045131429105595">"Внесете PIN2 кој содржи од 4 до 8 цифри."</string>
     <string name="invalidPuk2" msgid="7059081153334815973">"Внесете ПУК2 кој содржи 8 броеви."</string>
-    <string name="pin2_changed" msgid="3724522579945610956">"ПИН2-кодот е ажуриран"</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"PIN2-кодот е ажуриран"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"Внесете го ПУК2-кодот"</string>
-    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Лозинката е неточна. ПИН2-кодот е сега блокиран. За да се обидете повторно, променете го ПИН2-кодот."</string>
-    <string name="puk2_requested" msgid="5831015200030161434">"Лозинката е неточна. СИМ-картичката е сега заклучена. Внесете го ПУК2-кодот."</string>
+    <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"Лозинката е неточна. PIN2-кодот сега е блокиран. За да се обидете повторно, променете го PIN2-кодот."</string>
+    <string name="puk2_requested" msgid="5831015200030161434">"Лозинката е неточна. SIM-картичката е сега заклучена. Внесете го ПУК2-кодот."</string>
     <string name="puk2_blocked" msgid="3150263853077280049">"ПУК2 кодот е трајно блокиран."</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"Имате уште <xliff:g id="NUMBER">%d</xliff:g> обиди."</string>
-    <string name="pin2_unblocked" msgid="7791600368153469078">"ПИН2-кодот веќе не е блокиран"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"Грешка со мрежа или СИМ картичка"</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2-кодот веќе не е блокиран"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Грешка со мрежа или SIM картичка"</string>
     <string name="doneButton" msgid="2859593360997984240">"Готово"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Број на говорна пошта"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Бирање"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Бројот на говорна пошта е непознат"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Нема услуга"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Одбраната мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) е недостапна"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Исклучете го авионскиот режим за да повикате."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Вклучете мобилна мрежа, исклучете го авионскиот режим или пак, штедачот на батеријата за да воспоставите повик."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Исклучете го авионскиот режим за да повикате."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Исклучете го авионскиот режим или поврзете се на безжична мрежа за да повикате."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Излезете од режимот на итен повратен повик за да направите обичен повик."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Не е регистриран на мрежа."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Не е достапна мобилна мрежа."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Не е достапна мобилна мрежа. Поврзете се на безжична мрежа за да повикате."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Не е достапна мобилна мрежа."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Не е достапна мобилна мрежа. Поврзете се на безжична мрежа за да повикате."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"За да повикате, внесете важечки број."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Не може да повика."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Започнува MMI низа..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Повикот не успеа."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Повикот не може да се додаде во моментов."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Услугата не е поддржана"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Не може да префрли повици."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Не може да оддели повик."</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не може да оствари конференциски повици."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Не може да отфрли повик."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не може да реализира повик(ци)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не може да се задржат повици."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Поврзете се на безжична мрежа за да повикате."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Овозможете повикување преку Wi-Fi за воспоставување повик."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Повик за итни случаи"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Вклучување радио..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема услуга. Се обидува повторно…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Не може да се постави авионски режим во текот на итен повик."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Не може да повика. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> не е број за итни повици."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Не може да повика. Бирајте го бројот за итни повици."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Користи тастатурата за бирање"</string>
@@ -468,8 +499,10 @@
     <string name="onscreenVideoCallText" msgid="4800924186056115442">"Видео повик"</string>
     <string name="importSimEntry" msgid="6614358325359736031">"Увези"</string>
     <string name="importAllSimEntries" msgid="1503181169636198673">"Увези ги сите"</string>
-    <string name="importingSimContacts" msgid="7374056215462575769">"Увезување контакти од СИМ"</string>
+    <string name="importingSimContacts" msgid="7374056215462575769">"Увезување контакти од SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Увези од контакти"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Увезен е контакт"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Не успеа да увезе контакт"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Слушни помагала"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Вклучи компатибилност на слушни помагала"</string>
   <string-array name="tty_mode_entries">
@@ -479,7 +512,7 @@
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF тонови"</string>
-    <string name="dtmf_tones_summary" msgid="3351820372864020331">"Подеси ја должината на DTMF тоновите"</string>
+    <string name="dtmf_tones_summary" msgid="3351820372864020331">"Постави ја должината на DTMF тоновите"</string>
   <string-array name="dtmf_tone_entries">
     <item msgid="899650777817315681">"Нормални"</item>
     <item msgid="2883365539347850535">"Долги"</item>
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Влезе во режим на повратни повици во итни случаи"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим на повратни повици во итни случаи"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Врската со податоците е оневозможена"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Нема врска на податоци <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
-      <item quantity="other">Нема врска на податоци  <xliff:g id="COUNT_1">%s</xliff:g> минути</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Нема интернет-врска до <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минута. Кога е во овој режим, не може да се користат апликации што користат врска со податоци. Дали сакате да излезете сега?</item>
       <item quantity="other">Телефонот ќе биде во режим на итен повик <xliff:g id="COUNT_1">%s</xliff:g> минути. Кога е во овој режим, не може да се користат апликации што користат врска со податоци. Дали сакате да излезете сега?</item>
@@ -528,32 +558,46 @@
     <string name="alert_dialog_no" msgid="1476091437797628703">"Не"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Отфрли"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Услуга"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"Подесување"</string>
-    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Не е подесен&gt;"</string>
-    <string name="other_settings" msgid="3672912580359716394">"Други подесувања на повик"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Поставување"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Нема поставка&gt;"</string>
+    <string name="other_settings" msgid="3672912580359716394">"Други поставки на повици"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"Повикување преку <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"фотографија за контакт"</string>
     <string name="goPrivate" msgid="865837794424530980">"префли на приватно"</string>
     <string name="selectContact" msgid="781975788478987237">"избери контакт"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Гласовното повикување не е поддржано"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"бирај"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибрирање"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибрирање"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуелна говорна пошта"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Поставете PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Променете PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија и вибрации"</string>
-    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени СИМ-картички"</string>
+    <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вградени SIM-картички"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Вклучи видеоповикување"</string>
     <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"За да вклучите видеоповикување, треба да овозможите Режим на подобрени 4G LTE во поставките за мрежа."</string>
     <string name="enable_video_calling_dialog_settings" msgid="576528473599603249">"Мрежни поставки"</string>
     <string name="enable_video_calling_dialog_close" msgid="7411471282167927991">"Затвори"</string>
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"Итни повици"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само итни повикувања"</string>
-    <string name="sim_description_default" msgid="4778679519938775515">"СИМ-картичка, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
+    <string name="sim_description_default" msgid="4778679519938775515">"SIM-картичка, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Пристапност"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Дојдовен повик преку Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Повик преку Wi-Fi од"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Повик преку Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Допрете повторно за да отворите"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Допрете повторно за да се отвори"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Настана грешка при дешифрирање на пораката."</string>
-    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Вашата СИМ-картичка ја активираше услугата и ги ажурираше способностите за роаминг на вашиот телефон."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Вашата SIM-картичка ја активираше услугата и ги ажурираше способностите за роаминг на вашиот телефон."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Има премногу активни повици. Завршете или спојте ги постоечките повици пред да започнете нов."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Не може да се поврзе. Внесете важечка SIM-картичка."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi-врската е прекината. Повикот заврши."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Променете PIN на говорната пошта"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Продолжи"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Откажи"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Во ред"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Потврдете го стариот PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Внесете го PIN-кодот на говорната пошта за да продолжите."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Поставете нов PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN мора да содржи најмалку <xliff:g id="MIN">%1$d</xliff:g>, а најмногу <xliff:g id="MAX">%2$d</xliff:g> цифри."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Потврдете PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-кодовите не се совпаѓаат"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-кодот на говорната пошта е ажуриран"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN не може да се постави"</string>
 </resources>
diff --git a/res/values-ml-rIN/arrays.xml b/res/values-ml/arrays.xml
similarity index 100%
rename from res/values-ml-rIN/arrays.xml
rename to res/values-ml/arrays.xml
diff --git a/res/values-ml/config.xml b/res/values-ml/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ml/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml/strings.xml
similarity index 84%
rename from res/values-ml-rIN/strings.xml
rename to res/values-ml/strings.xml
index e1cb94e..e6a90eb 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"സെല്ലുലാർ ഡാറ്റ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"മൊബൈൽ ഡാറ്റ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ഫോൺ സേവനങ്ങൾ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"അടിയന്തര ഡയലർ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ഫോണ്‍"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"വോയ്‌സ്മെയിൽ നമ്പർ കാണുന്നില്ല"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"സിം കാർഡിൽ വോയ്‌സ്‌മെയിൽ നമ്പറൊന്നും സംഭരിച്ചിട്ടില്ല."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"നമ്പർ ചേർക്കുക"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"പ്രാഥമിക ഉപയോക്താവിന് മാത്രമേ വോയ്‌സ്‌മെയിൽ ക്രമീകരണം പരിഷ്‌ക്കരിക്കാനാവൂ."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"സിം കാർഡ് തടഞ്ഞത് മാറ്റി. നിങ്ങളുടെ ഫോൺ അൺലോക്കുചെയ്യുന്നു…"</string>
     <string name="label_ndp" msgid="780479633159517250">"സിം നെറ്റ്‌വർക്ക് അൺലോക്ക് പിൻ"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"അൺലോക്കുചെയ്യുക"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"നെറ്റ്‌വർക്ക് അൺലോക്ക് അഭ്യർത്ഥിക്കുന്നു…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"നെറ്റ്‌വർക്ക് അൺലോക്ക് അഭ്യർത്ഥന പരാജയപ്പെട്ടു."</string>
     <string name="unlock_success" msgid="6770085622238180152">"നെറ്റ്‌വർക്ക് അൺലോക്ക് വിജയിച്ചു."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ഈ ഉപയോക്താവിന് സെല്ലുലാർ നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ ലഭ്യമല്ല"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ഈ ഉപയോക്താവിന് മൊബൈൽ നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ ലഭ്യമല്ല"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM കോൾ ക്രമീകരണങ്ങൾ"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM കോൾ ക്രമീകരണം (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA കോൾ ക്രമീകരണങ്ങൾ"</string>
@@ -63,7 +64,8 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ഇത് ഉപയോഗിച്ച് കോളുചെയ്യുക"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ഇതുപയോഗിച്ച് SIP കോളുചെയ്യുക"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ആദ്യതവണ ചോദിക്കുക"</string>
-    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ക്രമീകരണങ്ങൾ"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"നെറ്റ്‌വർക്കൊന്നും ലഭ്യമല്ല"</string>
+    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ക്രമീകരണം"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"അക്കൗണ്ടുകൾ തിരഞ്ഞെടുക്കുക"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ഫോൺ അക്കൗണ്ടുകൾ"</string>
     <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP അക്കൗണ്ട് ചേർക്കുക"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"വോയ്സ് മെയില്‍"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ശബ്ദമെയിൽ(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"അറിയിപ്പുകൾ"</string>
     <string name="networks" msgid="8873030692174541976">"നെറ്റ്‌വർക്ക് ഓപ്പറേറ്റർമാർ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"അടിയന്തര പ്രക്ഷേപണങ്ങൾ"</string>
     <string name="call_settings" msgid="6112441768261754562">"കോൾ ക്രമീകരണങ്ങൾ"</string>
@@ -92,9 +95,9 @@
     <string name="labelCW" msgid="6120513814915920200">"കോൾ വെയ്‌റ്റിംഗ്"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"ഒരു കോളിനിടയിൽ, ഇൻകമിംഗ് കോളുകളെക്കുറിച്ച് എന്നെ അറിയിക്കുക"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"ഒരു കോളിനിടയിൽ, ഇൻകമിംഗ് കോളുകളെക്കുറിച്ച് എന്നെ അറിയിക്കുക"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"കോൾകൈമാറൽ ക്രമീകരണം"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"കോൾകൈമാറൽ ക്രമീകരണം (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"കോൾ കൈമാറൽ"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"കോൾഫോർവേഡിംഗ് ക്രമീകരണം"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"കോൾഫോർവേഡിംഗ് ക്രമീകരണം (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"കോൾ ഫോർവേഡിംഗ്"</string>
     <string name="labelCFU" msgid="8147177368148660600">"എല്ലായ്പ്പോഴും കൈമാറുക"</string>
     <string name="messageCFU" msgid="3560082430662923687">"എല്ലായ്പ്പോഴും ഈ നമ്പർ ഉപയോഗിക്കുക"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"എല്ലാ കോളുകളും കൈമാറുന്നു"</string>
@@ -105,19 +108,19 @@
     <string name="messageCFB" msgid="3711089705936187129">"തിരക്കിലായിരിക്കുമ്പോഴുള്ള നമ്പർ"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> എന്നതിലേക്ക് കൈമാറുന്നു"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"ഓഫാണ്"</string>
-    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"നിങ്ങളുടെ ഫോൺ തിരക്കിലായിരിക്കുമ്പോൾ കോൾ കൈമാറൽ പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
+    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"നിങ്ങളുടെ ഫോൺ തിരക്കിലായിരിക്കുമ്പോൾ കോൾ ഫോർവേഡിംഗ്  പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
     <string name="labelCFNRy" msgid="1736067178393744351">"മറുപടിയില്ലാത്തപ്പോൾ"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"മറുപടിനൽകാത്തപ്പോഴുള്ള നമ്പർ"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> എന്നതിലേക്ക് കൈമാറുന്നു"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"ഓഫാണ്"</string>
-    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"നിങ്ങളുടെ ഫോൺ മറുപടി നൽകാതിരിക്കുമ്പോൾ കോൾ കൈമാറൽ പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
+    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"നിങ്ങളുടെ ഫോൺ മറുപടി നൽകാതിരിക്കുമ്പോൾ കോൾ ഫോർവേഡിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
     <string name="labelCFNRc" msgid="2614827454402079766">"ലഭ്യമല്ലാതിരിക്കുമ്പോൾ"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"പരിധിയ്‌ക്ക് പുറത്തായിരിക്കുമ്പോൾ"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> എന്നതിലേക്ക് കൈമാറുന്നു"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"പ്രവർത്തനരഹിതമാക്കി"</string>
-    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"നിങ്ങളുടെ ഫോൺ പരിധിയ്ക്ക് പുറത്തായിരിക്കുമ്പോൾ കോൾ കൈമാറൽ പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ഓഫ്"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"നിങ്ങളുടെ ഫോൺ പരിധിയ്ക്ക് പുറത്തായിരിക്കുമ്പോൾ കോൾ ഫോർവേഡിംഗ്  പ്രവർത്തനരഹിതമാക്കുന്നതിനെ നിങ്ങളുടെ ഓപ്പറേറ്റർ പിന്തുണയ്‌ക്കുന്നില്ല."</string>
     <string name="updating_title" msgid="6146755386174019046">"കോൾ ക്രമീകരണങ്ങൾ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"കോൾ ക്രമീകരണങ്ങൾ, പ്രാഥമിക ഉപയോക്താവിന് മാത്രമെ മാറ്റാനാവൂ."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"അഡ്മിൻ ഉപയോക്താവിന് മാത്രമേ കോൾ ക്രമീകരണം മാറ്റാൻ കഴിയൂ."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ക്രമീകരണം (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"കോൾ ക്രമീകരണ പിശക്"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ക്രമീകരണങ്ങൾ റീഡുചെയ്യുന്നു.…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"മാറ്റങ്ങളൊന്നും വരുത്തിയിട്ടില്ല."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"വോയ്‌സ്‌മെയിൽ സേവനങ്ങൾ തിരഞ്ഞെടുക്കുക"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"നിങ്ങളുടെ കാരിയർ"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"സെല്ലുലാർ നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"പഴയ പിൻ"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"പുതിയ പിൻ"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"ദയവായി കാത്തിരിക്കുക."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"പുതിയ പിൻ വളരെ ചെറുതാണ്."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"പുതിയ പിൻ വളരെ ദൈർഘ്യമേറിയതാണ്."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"പുതിയ പിൻ വളരെ ദുർബലമാണ്. ഒരു ദൃഢമായ പാസ്‌വേഡിൽ തുടർച്ചയായി വരുന്നതോ ആവർത്തിച്ച് വരുന്നതോ ആയ അക്കങ്ങൾ ഉണ്ടാവരുത്."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"പഴയ പിന്നുമായി യോജിക്കുന്നില്ല."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"പുതിയ പിന്നിൽ അസാധുവായ പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കുന്നു."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"പിൻ മാറ്റാനായില്ല"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"സന്ദേശ തരം പിന്തുണയ്‌ക്കുന്നില്ല, കേൾക്കാൻ <xliff:g id="NUMBER">%s</xliff:g> നമ്പറിൽ വിളിക്കുക."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"മൊബൈൽ നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"മൊബൈൽ നെറ്റ്‌വർക്ക്"</string>
     <string name="label_available" msgid="1181658289009300430">"ലഭ്യമായ നെറ്റ്‌വർക്കുകൾ"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"തിരയുന്നു…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"നെറ്റ്‌വർക്കുകളൊന്നും കണ്ടെത്തിയില്ല."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"ഒരു നെറ്റ്‌വർക്കിൽ രജിസ്റ്റർ ചെയ്‌തു."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ഒരു നെ‌റ്റ്‌വർക്ക് ഓപ്പറേറ്ററെ തിരഞ്ഞെടുക്കുക"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ലഭ്യമായ എല്ലാ നെറ്റ്‌വർക്കുകൾക്കായും തിരയുക"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"സ്വയമേവ തിരഞ്ഞെടുക്കൂ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"താൽപ്പര്യമുള്ള നെറ്റ്‌വർക്ക് സ്വയമേവ തിരഞ്ഞെടുക്കൂ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"സ്വയമേവ നെറ്റ്‌വർക്ക് തിരഞ്ഞെടുക്കുക"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"നെറ്റ്‌വർക്ക്"</string>
     <string name="register_automatically" msgid="6017849844573519637">"യാന്ത്രിക രജിസ്‌ട്രേഷൻ…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് തരം"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"നെറ്റ്‌വർക്ക് ഓപ്പറേറ്റുചെയ്യൽ മോഡ് മാറ്റുക"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM മാത്രം"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA തിരഞ്ഞെടുത്തത്"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"കോൾചെയ്യുന്നു"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"നെറ്റ്‌വർക്ക്"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"മെച്ചപ്പെടുത്തിയ 4G LTE മോഡ്"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"വിപുലമായ കോളിംഗ്"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"വോയ്‌സ്, മറ്റ് ആശയവിനിമയങ്ങൾ (ശുപാർശിതം) എന്നിവ മികച്ചതാക്കുന്നതിന് LTE സേവനങ്ങൾ ഉപയോഗിക്കുക"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ഡാറ്റ പ്രവർത്തനക്ഷമമാക്കി"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ഡാറ്റ ഉപയോഗം അനുവദിക്കുക"</string>
-    <string name="roaming" msgid="8871412572928323707">"ഡാറ്റ റോമിംഗ്"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ശ്രദ്ധിക്കുക"</string>
+    <string name="roaming" msgid="7894878421600247140">"റോമിംഗ്"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"റോമിംഗിലാകുമ്പോൾ ഡാറ്റ സേവനങ്ങളുമായി കണ‌ക്റ്റുചെയ്യുക"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"റോമിംഗിലാകുമ്പോൾ ഡാറ്റ സേവനങ്ങളുമായി കണ‌ക്റ്റുചെയ്യുക"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"നിങ്ങൾ ഡാറ്റ റോമിംഗ് ഓഫുചെയ്‌തതിനൊപ്പം നിങ്ങളുടെ ഹോം നെ‌റ്റ്‌വർക്കും വിട്ടതിനാൽ നിങ്ങൾക്ക് ഡാറ്റ കണക്റ്റിവിറ്റി നഷ്‌ടപ്പെട്ടു."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"നിങ്ങളിൽ നിന്ന് നിർദ്ദിഷ്‌ട നിരക്കുകൾ ഈടാക്കിയേക്കാം."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ഡാറ്റ റോമിംഗ് അനുവദിക്കണോ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ഡാറ്റ ഉപയോഗം"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> തീയതിയ്‌ക്കിടയിൽ <xliff:g id="ID_1">%1$s</xliff:g> മൊബൈൽ ഡാറ്റ ഉപയോഗിച്ചു"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"കാരിയര്‍"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"മൊബൈൽ ഡാറ്റ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"മൊബൈൽ നെറ്റ്‌വർക്ക് ഉപയോഗിച്ച് ഡാറ്റ ആക്‌സസ് ചെയ്യുക"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"വൈഫൈ കോളിംഗ്"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"സേവനദായക വീഡിയോ കോളിംഗ്"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ഓപ്‌ഷനുകൾ"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ഓപ്‌ഷനുകൾ"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ഡാറ്റ ഉപയോഗം"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"പരമാവധി <xliff:g id="USED_0">%1$s</xliff:g> കവിഞ്ഞു\nഡാറ്റ നിരക്ക് സെക്കൻഡിൽ <xliff:g id="USED_1">%2$d</xliff:g> Kb ആയി കുറച്ചു"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ സൈക്കിൾ കഴിഞ്ഞു\nഅടുത്ത കാലയളവ് <xliff:g id="USED_1">%2$d</xliff:g> ദിവസത്തിനകം ആരംഭിക്കും (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ഡാറ്റാ ഉപയോഗ പരിധി കവിയുകയാണെങ്കിൽ, ഡാറ്റ നിരക്ക് സെക്കൻഡിൽ <xliff:g id="USED">%1$d</xliff:g> Kb ആയി കുറയ്‌ക്കുന്നു"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"നിങ്ങളുടെ കാരിയറിന്റെ സെല്ലുലാർ നെറ്റ്‌വർക്ക് ഡാറ്റ ഉപയോഗ നയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"നിങ്ങളുടെ കാരിയറിന്റെ മൊബൈൽ നെറ്റ്‌വർക്ക് ഡാറ്റ ഉപയോഗ നയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"സെൽ പ്രക്ഷേപണ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"സെൽ പ്രക്ഷേപണ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"സെൽ പ്രക്ഷേപണ SMS പ്രവർത്തനക്ഷമമാക്കി"</string>
@@ -269,7 +295,7 @@
     <item msgid="5884448729274543324">"6"</item>
     <item msgid="5511864807618312598">"7"</item>
   </string-array>
-    <string name="list_language_dtitle" msgid="5442908726538951934">"ഭാഷകള്‍‌"</string>
+    <string name="list_language_dtitle" msgid="5442908726538951934">"ഭാഷകൾ"</string>
     <string name="enable_disable_local_weather" msgid="986967454867219114">"പ്രാദേശിക കാലാവസ്ഥ"</string>
     <string name="local_weather_enable" msgid="6199315114382448922">"പ്രാദേശിക കാലാവസ്ഥ പ്രവർത്തനക്ഷമമാക്കി"</string>
     <string name="local_weather_disable" msgid="2510158089142626480">"പ്രാദേശിക കാലാവസ്ഥ പ്രവർത്തനരഹിതമാക്കി"</string>
@@ -314,7 +340,7 @@
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"സിസ്റ്റം സെലക്‌ട്"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="176474317493999285">"സേവനദാതാവിന്റെ മാത്രം"</item>
-    <item msgid="1205664026446156265">"യാന്ത്രികമായി"</item>
+    <item msgid="1205664026446156265">"സ്വയമേവ"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA സബ്‌സ്‌ക്രിപ്‌ഷൻ"</string>
     <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/സിം-നും NV-യ്‌ക്കും ഇടയിലുള്ള മാറ്റം"</string>
@@ -349,16 +375,17 @@
     <string name="voice_privacy_summary" msgid="3159383389833516214">"മെച്ചപ്പെടുത്തിയ സ്വകാര്യതാ മോഡ് പ്രവർത്തനക്ഷമമാക്കി"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY മോഡ്"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY മോഡ് സജ്ജമാക്കുക"</string>
-    <string name="auto_retry_mode_title" msgid="4073265511427813322">"യാന്ത്രികമായി വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="auto_retry_mode_summary" msgid="4973886004067532288">"യാന്ത്രികമായി വീണ്ടും ശ്രമിക്കൽ മോഡ് പ്രവർത്തനക്ഷമമാക്കുക"</string>
+    <string name="auto_retry_mode_title" msgid="4073265511427813322">"സ്വയമേവ വീണ്ടും ശ്രമിക്കുക"</string>
+    <string name="auto_retry_mode_summary" msgid="4973886004067532288">"സ്വയമേവ വീണ്ടും ശ്രമിക്കൽ മോഡ് പ്രവർത്തനക്ഷമമാക്കുക"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"വീഡിയോ കോൾ സമയത്ത് TTY മോഡ് മാറ്റം അനുവദനീയമല്ല"</string>
     <string name="menu_add" msgid="1882023737425114762">"കോൺടാക്റ്റ് ചേർക്കുക"</string>
     <string name="menu_edit" msgid="7143003705504672374">"കോൺടാ‌ക്‌റ്റ് തിരുത്തുക"</string>
     <string name="menu_delete" msgid="3977150783449642851">"കോണ്‍‌ടാക്റ്റ് ഇല്ലാതാക്കുക"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"കോൺടാക്റ്റിനെ ഡയൽ ചെയ്യുക"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 ടൈപ്പുചെയ്യുക"</string>
     <string name="name" msgid="7329028332786872378">"പേര്"</string>
     <string name="number" msgid="7905950798349903858">"അക്കം"</string>
-    <string name="save" msgid="4094274636321939086">"സംരക്ഷിക്കുക"</string>
+    <string name="save" msgid="4094274636321939086">"സംരക്ഷിക്കൂ"</string>
     <string name="add_fdn_contact" msgid="2481915899633353976">"സ്ഥിര ഡയലിംഗ് നമ്പർ ചേർക്കുക"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"സ്ഥിര ഡയലിംഗ് നമ്പർ ചേർക്കുന്നു…"</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"സ്ഥിര ഡയലിംഗ് നമ്പർ ചേർത്തു."</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"സ്ഥിര ഡയലിംഗ് നമ്പർ ഇല്ലാതാക്കുന്നു…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"സ്ഥിര ഡയലിംഗ് നമ്പർ ഇല്ലാതാക്കി."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"നിങ്ങൾ തെറ്റായ പിൻ നൽകിയതിനാൽ FDN അപ്‌ഡേറ്റുചെയ്‌തില്ല."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN അപ്‌ഡേറ്റുചെയ്‌തില്ല, നമ്പർ 20 അക്കങ്ങൾ കവിയരുത്."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"നമ്പറില്ലാത്തതിനാലോ അത് 20 അക്കങ്ങളിൽ കൂടുതൽ ഉള്ളതിനാലോ, FDN അപ്‌ഡേറ്റുചെയ്‌തില്ല."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN അപ്‌ഡേറ്റുചെയ്‌തില്ല. PIN2 തെറ്റായിരുന്നു, അല്ലെങ്കിൽ ഫോൺ നമ്പർ നിരസിച്ചു."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN പ്രവർത്തനം പരാജയപ്പെട്ടു."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"സിം കാർഡിൽ നിന്നും റീഡുചെയ്യുന്നു…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"വോയ്‌സ്‌മെയിൽ നമ്പർ അജ്ഞാതമാണ്"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"സേവനമില്ല"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ലഭ്യമല്ല"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ഒരു കോൾ വിളിക്കാൻ മൊബൈൽ നെറ്റ്‌വർക്ക് ഓണാക്കുകയോ ഫ്ലൈറ്റ് മോഡ് അല്ലെങ്കിൽ ബാറ്ററി സേവർ മോഡ് ഓഫാക്കുകയോ ചെയ്യുക."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ഒരു കോൾ വിളിക്കാൻ വിമാന മോഡ് ഓഫാക്കുക അല്ലെങ്കിൽ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"അടിയന്തിരമല്ലാത്ത കോൾ ചെയ്യാൻ അടിയന്തിര കോൾബാക്ക് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"നെറ്റ്‌വർക്കിൽ രജിസ്റ്റർ ചെയ്‌തിട്ടില്ല."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"സെല്ലുലാർ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"സെല്ലുലാർ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല. കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"മൊബൈൽ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"മൊബൈൽ നെറ്റ്‌വർക്ക് ലഭ്യമല്ല. കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"കോൾ ചെയ്യാനായില്ല."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI സീക്വൻസ് ആരംഭിക്കുന്നു…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"കോൾ ചെയ്യാനായില്ല."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"കോൾ ഇപ്പോൾ ചേർക്കാനാകില്ല."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"സേവനം പിന്തുണയ്‌ക്കുന്നില്ല"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"കോളുകൾ മാറാനാവില്ല."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"കോൾ വേർതിരിക്കാനാവില്ല."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"കോൺഫറൻസ് കോളുകൾ ചെയ്യാനായില്ല."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"കോൾ നിരസിക്കാനാവില്ല."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"കോൾ (കോളുകൾ) വിളിക്കാനാവില്ല."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"കോളുകൾ ഹോൾഡുചെയ്യാൻ കഴിയില്ല."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ഒരു കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"കോൾ ചെയ്യാൻ Wi-Fi കോളിംഗ് പ്രവർത്തനക്ഷമമാക്കുക."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"അടിയന്തര കോൾ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"റേഡിയോ ഓൺ ചെയ്യുന്നു…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"സേവനമൊന്നുമില്ല. വീണ്ടും ശ്രമിക്കുന്നു…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"അടിയന്തര കോളിലായിരിക്കുമ്പോൾ, ഫ്ലൈറ്റ് മോഡ് ഓണാക്കാനാകില്ല."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"കോൾ ചെയ്യാനാവില്ല. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> എന്നത് ഒരു അടിയന്തിര നമ്പരല്ല."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"കോൾ ചെയ്യാനാവില്ല. ഒരു അടിയന്തിര കോൾ നമ്പർ ഡയൽചെയ്യുക."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ഡയൽ ചെയ്യാൻ കീബോർഡ് ഉപയോഗിക്കുക"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"എല്ലാം ഇമ്പോർട്ടുചെയ്യുക"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"സിം കോൺടാക്റ്റുകൾ ഇമ്പോർട്ടുചെയ്യുന്നു"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"കോൺടാക്റ്റുകളിൽ നിന്ന് ഇമ്പോർട്ടുചെയ്യുക"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"കോൺടാക്റ്റ് ഇമ്പോർട്ടുചെയ്തു"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"കോൺടാക്റ്റ് ഇമ്പോർട്ടുചെയ്യുന്നത് പരാജയപ്പെട്ടു"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"ശ്രവണ സഹായികൾ"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"ശ്രവണസഹായി അനുയോജ്യത ഓൺ ചെയ്യുക"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"അടിയന്തര കോൾബാക്ക് മോഡിൽ പ്രവേശിച്ചു"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"അടിയന്തര കോൾബാക്ക് മോഡ്"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ഡാറ്റ കണക്ഷൻ പ്രവർത്തനരഹിതമാക്കി"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> മിനിറ്റ് നേരത്തേക്ക് ഡാറ്റ കണക്ഷൻ ലഭ്യമല്ല</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> വരെ ഡാറ്റാ കണക്ഷൻ ലഭ്യമല്ല"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ അടിയന്തര കോൾബാക്ക് മോഡിലാകും. ഈ മോഡിലാകുമ്പോൾ ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാവില്ല. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
       <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> മിനിറ്റിനുള്ളിൽ ഫോൺ അടിയന്തര കോൾബാക്ക് മോഡിലാകും. ഈ മോഡിലാകുമ്പോൾ ഡാറ്റ കണക്ഷൻ ഉപയോഗിക്കുന്ന അപ്ലിക്കേഷനുകളൊന്നും ഉപയോഗിക്കാനാവില്ല. നിങ്ങൾക്കിപ്പോൾ പുറത്തുപോകണോ?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"കോൺടാക്റ്റ് തിരഞ്ഞെടുക്കുക"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"വോയ്‌സ് കോൾ ചെയ്യുന്നതിനെ പിന്തുണയ്‌ക്കുന്നില്ല"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ഡയൽ ചെയ്യുക"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"വൈബ്രേറ്റുചെയ്യുക"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"വൈബ്രേറ്റുചെയ്യുക"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"വിഷ്വൽ വോയ്‌സ്‌മെയിൽ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ശബ്‌ദം"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"പിൻ സജ്ജമാക്കുക"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"പിൻ മാറ്റുക"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"റിംഗ്ടോണും വൈബ്രേറ്റുചെയ്യലും"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"അന്തർ നിർമ്മിത സിം കാർഡുകൾ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"വീഡിയോ കോളുചെയ്യൽ ഓണാക്കുക"</string>
@@ -544,10 +573,25 @@
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"അടിയന്തിര കോളുകൾ"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"അടിയന്തിര കോൾചെയ്യൽ മാത്രം"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM കാർഡ്, സ്ലോട്ട്: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
-    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"പ്രവേശനക്ഷമത"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ഇൻകമിംഗ് വൈഫൈ കോൾ"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ഉപയോഗസഹായി"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"ഈ വ്യക്തിയിൽ നിന്നുള്ള Wi-Fi കോൾ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"വൈഫൈ കോൾ"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"തുറക്കുന്നതിന് വീണ്ടും സ്‌പർശിക്കുക"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"തുറക്കുന്നതിന് വീണ്ടും ടാപ്പുചെയ്യുക"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"സന്ദേശം ഡീകോഡുചെയ്യുമ്പോൾ ഒരു പിശകുണ്ടായി."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ഒരു SIM കാർഡ് നിങ്ങളുടെ സേവനം സജീവമാക്കി, ഫോണിന്റെ റോമിംഗ് ശേഷികൾ അപ്‌ഡേറ്റ് ചെയ്തു."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"നിരവധി കോളുകൾ നിലവിൽ സജീവമായുണ്ട്. പുതിയ കോൾ വിളിക്കുന്നതിനുമുമ്പ് നിലവിലുള്ള കോളുകൾ അവസാനിപ്പിക്കുകയോ ലയിപ്പിക്കുകയോ ചെയ്യുക."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"കണക്റ്റുചെയ്യാനാകുന്നില്ല, ഉപയോഗിക്കാനാകുന്ന ഒരു സിം കാർഡ് ഇടുക."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi കണക്ഷൻ പോയതിനാൽ കോൾ അവസാനിച്ചു."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"വോയ്‌സ്മെയിൽ പിൻ മാറ്റുക"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"തുടരുക"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"റദ്ദാക്കുക"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ശരി"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"നിങ്ങളുടെ പഴയ പിൻ സ്ഥിരീകരിക്കുക"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"തുടരാൻ നിങ്ങളുടെ വോയ്‌സ്മെയിൽ പിൻ നൽകുക."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"പുതിയ PIN സജ്ജമാക്കുക"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"പിന്നിൽ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> അക്കങ്ങൾ ഉണ്ടായിരിക്കണം."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"നിങ്ങളുടെ പിൻ സ്ഥിരീകരിക്കുക"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-കൾ പൊരുത്തപ്പെടുന്നില്ല"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"വോയ്‌സ്‌മെയിൽ പിൻ അപ്‌ഡേറ്റുചെയ്‌തു"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"പിൻ സജ്ജമാക്കാൻ കഴിയുന്നില്ല"</string>
 </resources>
diff --git a/res/values-mn-rMN/arrays.xml b/res/values-mn/arrays.xml
similarity index 100%
rename from res/values-mn-rMN/arrays.xml
rename to res/values-mn/arrays.xml
diff --git a/res/values-mn/config.xml b/res/values-mn/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-mn/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn/strings.xml
similarity index 85%
rename from res/values-mn-rMN/strings.xml
rename to res/values-mn/strings.xml
index 429ecc1..cd11bd3 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Үүрэн мэдээлэл"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Мобайл дата"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Гар утасны Үйлчилгээ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Ослын дуудлага хийгч"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Утас"</string>
@@ -31,7 +31,7 @@
     <string name="cancel" msgid="5044513931633602634">"Цуцлах"</string>
     <string name="enter_input" msgid="1810529547726803893">"USSD зурвасын үсгийн тоо <xliff:g id="MIN_LEN">%d</xliff:g> болон <xliff:g id="MAX_LEN">%d</xliff:g> хооронд байх шаардлагатай. Дахин оролдоно уу."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Утсан хурлыг удирдах"</string>
-    <string name="ok" msgid="3811371167865772377">"Тийм"</string>
+    <string name="ok" msgid="3811371167865772377">"OK"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Чанга яригч"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Утасны чихэвч"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Утастай чихэвч"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Дуут шуудангийн дугаар байхгүй"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM карт дээр дуут шуудангийн дугаар хадгалагдаагүй байна."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Дугаар нэмэх"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Дуут шуудангийн тохиргоог зөвхөн Үндсэн хэрэглэгч өөрчлөх боломжтой."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Таны SIM карт тайлагдлаа. Таны утас тайлагдаж байна…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM сүлжээ тайлах PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Тайлах"</string>
@@ -52,21 +53,22 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Сүлжээг тайлах хүсэлтийг илгээж байна…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Сүлжээг тайлах хүсэлт амжилтгүй боллоо."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Сүлжээг амжилттай тайллаа."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Энэ хэрэглэгчийн хувьд үүрэн сүлжээний тохиргоо ашиглах боломжгүй"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Энэ хэрэглэгч мобайл сүлжээний тохиргоог ашиглах боломжгүй"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM дуудлагын тохиргоо"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM дуудлагын тохиргоо (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA дуудлагын тохиргоо"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"CDMA дуудлагын тохиргоо (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Хандалтын Цэгийн Нэрс"</string>
     <string name="settings_label" msgid="3876743539816984008">"Сүлжээний тохиргоо"</string>
-    <string name="phone_accounts" msgid="6376603393888116364">"Дуудах акаунт"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Дуудах бүртгэл"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Дараахаар дуудлага хийх"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Дараахаар SIP дуудлага хийх"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Эхлэж хандах"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Сүлжээ байхгүй байна"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Тохиргоонууд"</string>
-    <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Акаунт сонгох"</string>
-    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Гар утасны акаунт"</string>
-    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP акаунт нэмэх"</string>
+    <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Бүртгэл сонгох"</string>
+    <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Гар утасны бүртгэл"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP бүртгэл нэмэх"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"Акаунтын тохиргоог хийх"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"Дуудлагын эрхтэй бүх бүртгэл"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Дуудлага хийх боломжтой бүртгэлээ сонгоно уу"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Дуут шуудан"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Дуут шуудан ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ДШ:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Мэдэгдэл"</string>
     <string name="networks" msgid="8873030692174541976">"Сүлжээний операторууд"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Онцгой байдлын нэвтрүүлэг"</string>
     <string name="call_settings" msgid="6112441768261754562">"Дуудлагын тохиргоо"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Холбогдох боломжгүй бол"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Холбогдохгүй үед дугаар"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> руу дамжуулж байна"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Идэвхгүйжүүлсэн"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Идэвхгүй"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Таны үүрэн холбоо үзүүлэгчээс утас завгүй байхад дуудлагыг дамжуулахыг зогсоох үйлчилгээг дэмждэггүй."</string>
     <string name="updating_title" msgid="6146755386174019046">"Дуудлагын тохиргоо"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Дуудлагын тохиргоог зөвхөн үндсэн хэрэглэгч өөрчлөх боломжтой."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Дуудлагын тохиргоог зөвхөн админ хэрэглэгч солих боломжтой."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Тохиргоо (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Дуудлагын тохиргооны алдаа"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Тохиргоог уншиж байна…"</string>
@@ -130,7 +133,7 @@
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS хүсэлтийг шинэ SS хүсэлт болгон өөрчилсөн."</string>
     <string name="fdn_check_failure" msgid="18200614306525434">"Таны Phone апп-н FDN тохиргоо асаалттай байна. Тус шалтгаанаар дуудлагатай холбоотой зарим функц ажиллахгүй."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"Эдгээр тохиргоог харахын өмнө радиог асаана уу."</string>
-    <string name="close_dialog" msgid="2365884406356986917">"Тийм"</string>
+    <string name="close_dialog" msgid="2365884406356986917">"OK"</string>
     <string name="enable" msgid="7248657275000173526">"Асаах"</string>
     <string name="disable" msgid="4678348128118573672">"Унтраах"</string>
     <string name="change_num" msgid="239476305819844391">"Шинэчлэх"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Ямар ч өөрчлөлт хийгдсэнгүй."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Дуут шуудангийн үйлчилгээг сонгох"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Таны оператор компани"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Үүрэн сүлжээний тохиргоо"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Хуучин PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Шинэ PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Түр хүлээнэ үү."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Шинэ PIN хэт богино байна."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Шинэ PIN хэт урт байна."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Шинэ PIN хэт амархан байна. Сайн нууц үгэнд үргэлжилсэн дараалал буюу давтагдсан цифр ордоггүй."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Хуучин PIN таарахгүй байна."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Шинэ PIN-д буруу тэмдэгт агуулагдаж байна."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN-г өөрчлөх боломжгүй"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Дэмжигдээгүй зурвасын төрөл, сонсохын тулд <xliff:g id="NUMBER">%s</xliff:g> руу залгана уу."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Мобайль сүлжээний тохиргоо"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобайл сүлжээ"</string>
     <string name="label_available" msgid="1181658289009300430">"Боломжтой сүлжээнүүд"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Хайж байна..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Сүлжээ олдсонгүй."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Сүлжээнд бүртгэгдсэн."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Сүлжээний операторыг сонгоно уу"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Боломжит бүх сүлжээг хайх"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Автоматаар сонгох"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Давуу сүлжээг автоматаар сонгох"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Сүлжээг автоматаар сонгох"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Сүлжээ"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Автомат бүртгэл…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Сүлжээний үндсэн төрөл"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Сүлжээний ажиллах төлвийг өөрчлөх"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Зөвхөн GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA эхэнд нь"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Залгаж байна"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Сүлжээ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Сайжруулсан 4G LTE горим"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Сайжруулсан дуудлага"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTE-г ашиглан дуут болон бусад төрлийн харилцаа холбооны хэрэгслийг сайжруул (зөвлөхүйц)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Өгөгдөл идэвхжсэн"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Дата ашиглалтыг зөвшөөрөх"</string>
-    <string name="roaming" msgid="8871412572928323707">"Дата роуминг"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Анхааруулга"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роуминг"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Роумингтэй үед дата үйлчилгээнд холбогдох"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Роумингтэй үед дата үйлчилгээнд холбогдох"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Та төрөлх сүлжээнээс дата роумингыг унтраагаад гарсан тул дата холболтоо алдлаа."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Таны төлбөр өндөр гарах магадлалтайг анхааруулж байна."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Дата роуминг үйлчилгээг идэвхжүүлэх үү?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Дата ашиглалт"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> мобайл дата ашиглагдсан <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор компани"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобайл дата"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Мобайл сүлжээг ашиглан датанд хандах"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi дуудлага"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Үүрэн компанийн видео дуудлага"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Тохиргоо"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Тохиргоо"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Дата ашиглалт"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> Хэтэрсэн дээд\nДатаны хувийг <xliff:g id="USED_1">%2$d</xliff:g> Kb/s хүртэл бууруулсан"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Циклийн <xliff:g id="USED_0">%1$d</xliff:g>٪ өнгөрсөн\nДараагийн үе <xliff:g id="USED_1">%2$d</xliff:g> өдрийн дотор эхэлнэ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Хэрэв дата ашиглалтын хязгаараас хэтэрвэл дата хувийг <xliff:g id="USED">%1$d</xliff:g> Kb/s хүртэл бууруулах"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Таны үүрэн холбооны компанийн үүрэн сүлжээний дата ашиглалтын бодлогын талаар дэлгэрэнгүй мэдээлэл"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Таны үүрэн холбооны компанийн мобайль сүлжээний дата ашиглалтын бодлогын талаар дэлгэрэнгүй мэдээлэл"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Үүрэн нэвтрүүлгийн SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Үүрэн нэвтрүүлгийн SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Үүрэн нэвтрүүлгийн SMS идэвхжүүлсэн"</string>
@@ -303,9 +329,9 @@
     <string name="enable_disable_technology_news" msgid="3517184627114999149">"Технологийн мэдээ"</string>
     <string name="technology_news_enable" msgid="7995209394210455181">"Технологийн мэдээг идэвхжүүлсэн"</string>
     <string name="technology_news_disable" msgid="5483490380561851946">"Технологийн мэдээг идэвхгүйжүүлсэн"</string>
-    <string name="enable_disable_multi_category" msgid="626771003122899280">"Олон категори"</string>
-    <string name="multi_category_enable" msgid="1179299804641721768">"Олон-категори идэвхжсэн"</string>
-    <string name="multi_category_disable" msgid="880104702904139505">"Олон-категори идэвхгүйжсэн"</string>
+    <string name="enable_disable_multi_category" msgid="626771003122899280">"Олон ангилал"</string>
+    <string name="multi_category_enable" msgid="1179299804641721768">"Олон-ангилал идэвхжсэн"</string>
+    <string name="multi_category_disable" msgid="880104702904139505">"Олон-ангилал идэвхгүйжсэн"</string>
     <string name="network_lte" msgid="7702681952521375754">"LTE (зөвлөмж болгосон)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (зөвлөмж болгосон)"</string>
     <string name="network_global" msgid="1323190488685355309">"Глобал"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Харилцагч нэмэх"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Харилцагчийг засварлах"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Харилцагч устгах"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Харилцагч руу залгах"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2-г оруулна уу"</string>
     <string name="name" msgid="7329028332786872378">"Нэр"</string>
     <string name="number" msgid="7905950798349903858">"Дугаар"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Тогтвортой залгах дугаарыг устгаж байна…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Тогтвортой залгах дугаарыг устгав."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Та буруу PIN оруулсан учир FDN шинэчлэгдсэнгүй."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Дугаар 20 цифрээс хэтрэх боломжгүй учир FDN шинэчлэгдээгүй."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Дугаар хоосон, эсвэл 20 цифрээс хэтэрсэн учир FDN шинэчлэгдээгүй."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN шинэчлэгдсэнгүй. PIN2 буруу байсан, эсхүл утасны дугаар зөвшөөрөгдсөнгүй."</string>
     <string name="fdn_failed" msgid="540018079008319747">"ФДН ажиллуулах амжилтгүй."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM картаас уншиж байна…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Дуут шуудангийн дугаар тодорхойгүй"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Үйлчилгээ байхгүй"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Сонгосон сүлжээ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ашиглах боломжгүй"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Дуудлага хийхийн тулд онгоцны горимыг унтраа."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Дуудлага хийхийн тулд мобайл сүлжээг асаах, нислэгийн горим буюу батерей хэмнэх горимыг идэвхгүй болгоно уу."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Дуудлага хийхийн тулд онгоцны горимыг унтраа."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Дуудлага хийхийн тулд онгоцны горимыг унтраа эсвэл утасгүй интернетэд холбогдоно уу."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Яаралтай түргэн тусламжийн бус дуудлага хийхийн тулд яаралтай түргэн тусламжийн callback горимоос гарна уу."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Сүлжээнд бүртгэгдээгүй."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Үүрэн сүлжээ байхгүй."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Үүрэн сүлжээнд холбогдох боломжгүй байна. Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Мобайль сүлжээ байхгүй."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобайл сүлжээнд холбогдох боломжгүй байна. Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Дуудлага хийх боломжгүй байна."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI дарааллыг эхлүүлж байна…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Дуудлага амжилтгүй болсон."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Одоо дуудлага нэмэх боломжгүй."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Үйлчилгээг дэмждэггүй байна"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Дуудлагыг солих боломжгүй байна."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Дуудлагыг салгаж чадахгүй байна."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Утсан хурал хийх боломжгүй."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Дуудлага татгалзах боломжгүй байна."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Дуудлага чөлөөлөх боломжгүй байна."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Дуудлагыг хадгалах боломжгүй байна."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Дуудлага хийхийн тулд Wi-Fi дуудлагыг идэвхжүүлнэ үү."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ослын дуудлага"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Радиог асааж байна…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ажиллагаагүй байна. Дахин оролдоно уу..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Яаралтай дуудлагын дундуур нислэгийн горимд шилжих боломжгүй."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Дуудлага хийх боломжгүй. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> нь түргэн тусламжийн дугаар биш байна."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Дуудлага хийх боломжгүй. Түргэн тусламжийн дугаар луу залга."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Залгахдаа гар ашиглах"</string>
@@ -464,10 +495,12 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Бүгдийг оруулах"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM харилцагчдыг оруулж байна"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Харилцагчдаас оруулах"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Импортолсон харилцагчийн жагсаалт"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Харилцагчийн жагсаалтыг импортолж чадсангүй"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Сонсголын төхөөрөмж"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Сонсголын төхөөрөмж тааруулагчийг асаана уу"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY Үгүй"</item>
+    <item msgid="512950011423868021">"TTY Унтраасан"</item>
     <item msgid="3971695875449640648">"TTY Дүүрэн"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ослын Дуудлага хүлээн авах төлөвт орлоо"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Ослын Дуудлага хүлээн авах Төлөв"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Дата холболтыг идэвхгүйжүүлсэн"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Интернет <xliff:g id="COUNT_1">%s</xliff:g> минут тасарсан байна</item>
-      <item quantity="one">Интернет <xliff:g id="COUNT_0">%s</xliff:g> минут тасарсан байна</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> болтол дата холболт байхгүй"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Таны гар утас яаралтай түргэн тусламжийн дуудлагын хэлбэрт<xliff:g id="COUNT_1">%s</xliff:g> минут байна. Энэ горимд байгаа тохиолдолд интернет холболт ашигладаг ямар ч програмыг ашиглаж үл болно. Та гарахыг хүсэж байна уу?</item>
       <item quantity="one">Таны гар утас яаралтай түргэн тусламжийн дуудлагын хэлбэрт <xliff:g id="COUNT_0">%s</xliff:g> минут байна. Энэ горимд байгаа тохиолдолд интернет холболт ашигладаг ямар ч програмыг ашиглаж үл болно. Та гарахыг хүсэж байна уу?</item>
@@ -522,7 +552,7 @@
     <string name="alert_dialog_no" msgid="1476091437797628703">"Үгүй"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Алгасах"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Үйлчилгээ"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"Суулгах"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Тохиргоо"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Тохируулаагүй&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Бусад дуудлагын тохиргоо"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g>-р залгаж байна"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"харилцагч сонгох"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Дуугаар залгахыг дэмждэггүй"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"залгах"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Чичиргээ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Чичиргээ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Уншиж болохуйц дуут шуудан"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Дуу"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN тохируулах"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN өөрчлөх"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Хонхны ая &amp; Чичиргээ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Суурилагдсан SIM карт"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Видео дуудлагыг идэвхжүүлэх"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Зөвхөн яаралтай дуудлага"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM карт, оролт: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Хандалт"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Орж ирсэн Wi-Fi дуудлага"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi дуудлага"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi дуудлага"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Нээхийн тулд дахин хүрнэ үү"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Нээхийн тулд дахин дарна уу"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Зурвасын кодыг тайлах явцад алдаа гарсан."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM карт таны үйлчилгээг идэвхжүүлж, утасны роаминг багтаамжийг шинэчиллээ."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Хэт олон идэвхтэй дуудлага байна. Шинэ дуудлага хийхийн өмнө одоогийн дуудлагуудыг таслах буюу нэгтгэнэ үү."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Холбох боломжгүй, хүчинтэй SIM карт оруулна уу."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi холболт тасарсан. Дуудлага дууссан."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Дуут шуудангийн PIN-г өөрчлөх"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Үргэлжлүүлэх"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Цуцлах"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Хуучин PIN-ээ баталгаажуулна уу"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Үргэлжлүүлэхийн тулд дуут шуудангийн PIN оруулна уу."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Шинэ PIN тохируулах"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN <xliff:g id="MIN">%1$d</xliff:g> - <xliff:g id="MAX">%2$d</xliff:g> цифртэй байх ёстой."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN кодоо баталгаажуулна уу"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN код таарахгүй байна"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Дуут шуудангийн PIN шинэчлэгдсэн"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN тохируулах боломжгүй"</string>
 </resources>
diff --git a/res/values-mr-rIN/arrays.xml b/res/values-mr/arrays.xml
similarity index 100%
rename from res/values-mr-rIN/arrays.xml
rename to res/values-mr/arrays.xml
diff --git a/res/values-mr/config.xml b/res/values-mr/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-mr/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr/strings.xml
similarity index 85%
rename from res/values-mr-rIN/strings.xml
rename to res/values-mr/strings.xml
index 3f94340..2dffd9e 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"सेल्‍युलर डेटा"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"मोबाईल डेटा"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"फोन सेवा"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"आणीबाणी डायलर"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"फोन"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"व्हॉइसमेल नंबर गहाळ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"सिम कार्डवर कोणताही व्हॉइसमेल नंबर संचयित केला नाही."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"नंबर जोडा"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"केवळ प्राथमिक वापरकर्ता व्हॉइसमेल सेटिंग्ज बदलू शकतो."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"आपले सिम कार्ड अवरोधित करणे रद्द केले गेले आहे. आपला फोन अनलॉक होत आहे…"</string>
     <string name="label_ndp" msgid="780479633159517250">"सिम नेटवर्क अनलॉक पिन"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"अनलॉक करा"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"नेटवर्क अनलॉकची विनंती करत आहे..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"नेटवर्क अनलॉक विनंती अयशस्वी."</string>
     <string name="unlock_success" msgid="6770085622238180152">"नेटवर्क अनलॉक यशस्वी."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"या वापरकर्त्यासाठी सेल्युलर नेटवर्क सेटिंग्ज उपलब्ध नाहीत"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"या वापरकर्त्यासाठी मोबाईल नेटवर्क सेटिंग्ज उपलब्ध नाहीत"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM कॉल सेटिंग्ज"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM कॉल सेटिंग्ज (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA कॉल सेटिंग्ज"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"यासह कॉल करा"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"यासह SIP कॉल करा"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"प्रथम विचारा"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"कोणतेही नेटवर्क उपलब्ध नाही"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"सेटिंग्ज"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"खाती निवडा"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"फोन खाती"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"व्हॉइसमेल"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"व्हॉइसमेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"सूचना"</string>
     <string name="networks" msgid="8873030692174541976">"नेटवर्क ऑपरेटर"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"आणीबाणी प्रसारणे"</string>
     <string name="call_settings" msgid="6112441768261754562">"कॉल सेटिंग्ज"</string>
@@ -84,7 +87,7 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"अतिरिक्‍त CDMA कॉल सेटिंग्‍ज"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"अतिरिक्त CDMA केवळ कॉल सेटिंग्‍ज"</string>
     <string name="labelNwService" msgid="4699970172021870983">"नेटवर्क सेवा सेटिंग्ज"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"कॉलर ID"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"कॉलर आयडी"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"सेटिंग्ज लोड करीत आहे..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"केल्‍या जाणार्‍या कॉलमध्‍ये नंबर लपविला"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"केल्‍या जाणार्‍या कॉलमध्‍ये नंबर प्रदर्शित केला"</string>
@@ -106,7 +109,7 @@
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करीत आहे"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"बंद"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"आपला फोन व्‍यस्‍त असताना आपला ऑपरेटर कॉल अग्रेषण करणे अक्षम करण्‍यास समर्थन करीत नाही."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"अनुत्तरीत असताना"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"उत्तर न दिल्यास"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"नंबर अनुत्तरित असताना"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करीत आहे"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"बंद"</string>
@@ -114,14 +117,14 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"पोहचण्‍यायोग्‍य नसताना"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"नंबर पोहचण्‍यायोग्‍य नसताना"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> वर अग्रेषित करीत आहे"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"अक्षम केले"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"बंद"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"आपला फोन पोहचण्‍यायोग्‍य नसताना आपला वाहक कॉल अग्रेषण करणे अक्षम करण्‍यास समर्थन करीत नाही."</string>
     <string name="updating_title" msgid="6146755386174019046">"कॉल सेटिंग्ज"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"कॉल सेटिंग्ज केवळ प्राथमिक वापरकर्त्याद्वारे बदलल्‍या जाउ शकतात."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"कॉल सेटिंग्ज केवळ प्रशासक वापरकर्त्याद्वारे बदलल्‍या जाऊ शकतात."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"सेटिंग्ज (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"कॉल सेटिंग्ज त्रुटी"</string>
     <string name="reading_settings" msgid="1920291699287055284">"सेटिंग्‍ज वाचत आहे…"</string>
-    <string name="updating_settings" msgid="8171225533884883252">"सेटिंग्ज अद्यतनित करीत आहे..."</string>
+    <string name="updating_settings" msgid="8171225533884883252">"सेटिंग्ज अपडेट करीत आहे..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"सेटिंग्‍ज परत करत आहे…"</string>
     <string name="response_error" msgid="6674110501330139405">"नेटवर्क वरून अनपेक्षित प्रतिसाद."</string>
     <string name="exception_error" msgid="7027667130619518211">"नेटवर्क किंवा सिम कार्ड त्रुटी."</string>
@@ -133,7 +136,7 @@
     <string name="close_dialog" msgid="2365884406356986917">"ठीक"</string>
     <string name="enable" msgid="7248657275000173526">"चालू करा"</string>
     <string name="disable" msgid="4678348128118573672">"बंद करा"</string>
-    <string name="change_num" msgid="239476305819844391">"अद्यतनित करा"</string>
+    <string name="change_num" msgid="239476305819844391">"अपडेट करा"</string>
   <string-array name="clir_display_values">
     <item msgid="5560134294467334594">"नेटवर्क डीफॉल्ट"</item>
     <item msgid="7876195870037833661">"नंबर लपवा"</item>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"कोणतेही बदल केले नाहीत."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"व्हॉइसमेल सेवा निवडा"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"आपला वाहक"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"सेल्युलर नेटवर्क सेटिंग्ज"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"जुना पिन"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नवीन पिन"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"कृपया प्रतीक्षा करा."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नवीन पिन खूप लहान आहे."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नवीन पिन खूप दीर्घ आहे."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नवीन पिन खूप कमकुवत आहे. सशक्त संकेतशब्दामध्ये अखंड क्रमवारी किंवा पुनरावृत्ती केलेले अंक नसावेत."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"जुना पिन जुळत नाही."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"नवीन पिन मध्ये अवैध वर्ण आहेत."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"पिन बदलण्यात अक्षम"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"असमर्थित संदेश प्रकार, ऐकण्यासाठी <xliff:g id="NUMBER">%s</xliff:g> वर कॉल करा."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"मोबाईल नेटवर्क सेटिंग्ज"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"मोबाइल नेटवर्क"</string>
     <string name="label_available" msgid="1181658289009300430">"उपलब्ध नेटवर्क"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"शोधत आहे..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"कोणतीही नेटवर्क आढळली नाहीत."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"नेटवर्कवर नोंदणी केली."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"नेटवर्क ऑपरेटर निवडा"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"सर्व उपलब्ध नेटवर्क शोधा"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"स्‍वयंचलितपणे निवडा"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"स्‍वयंचलितपणे प्राधान्‍यकृत नेटवर्क निवडा"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"स्वयंचलितपणे नेटवर्क निवडा"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"नेटवर्क"</string>
     <string name="register_automatically" msgid="6017849844573519637">"स्‍वयंचलित नोंदणी…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"प्राधान्‍यकृत नेटवर्क प्रकार"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"नेटवर्क कार्य करण्‍याचा मोड बदला"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"केवळ GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA प्राधान्‍यकृत"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"कॉलिंग"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"नेटवर्क"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"वर्धित 4G LTE मोड"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"प्रगत कॉलिंग"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"व्‍हॉइस आणि इतर संप्रेषणे (शिफारस केलेली) सुधारित करण्‍यासाठी LTE सेवांचा वापर करा"</string>
     <string name="data_enabled" msgid="5972538663568715366">"डेटा सक्षम केला"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"डेटा वापरास अनुमती द्या"</string>
-    <string name="roaming" msgid="8871412572928323707">"डेटा रोमिंग"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"लक्ष द्या"</string>
+    <string name="roaming" msgid="7894878421600247140">"रोमिंग"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"रोमिंग असताना डेटा सेवांना कनेक्ट करा"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"रोमिंग असताना डेटा सेवांना कनेक्ट करा"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"आपण डेटा रोमिंग बंद करून आपले होम नेटवर्क सोडल्यामुळे आपण डेटा कनेक्टिव्हिटी गमावली आहे."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"आपल्‍याला लक्षणीय रोमिंग शुल्‍क लागू शकते."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिंगला अनुमती द्यायची?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"डेटा वापर"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> दरम्यान <xliff:g id="ID_1">%1$s</xliff:g> मोबाइल डेटा वापरला गेला"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"वाहक"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"मोबाइल डेटा"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"मोबाइल नेटवर्क वापरून डेटा मध्‍ये प्रवेश करा"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"वाय-फाय कॉलिंग"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"वाहक व्हिडिओ कॉलिंग"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS पर्याय"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA पर्याय"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"डेटा वापर"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> कमाल ओलांडले\nडेटा रेट <xliff:g id="USED_1">%2$d</xliff:g> Kb/s इतका कमी झाला"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"कालचक्राचा <xliff:g id="USED_0">%1$d</xliff:g>٪ काळ लोटला\nपुढील कालावधी <xliff:g id="USED_1">%2$d</xliff:g> दिवसांमध्‍ये (<xliff:g id="USED_2">%3$s</xliff:g>) प्रारंभ होतो"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"डेटा वापर मर्यादा ओलांडल्‍यास डेटा रेट <xliff:g id="USED">%1$d</xliff:g> Kb/s इतका कमी केला"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"आपल्‍या वाहकाच्‍या सेल्युलर नेटवर्क डेटा वापर धोरणाविषयी अधिक माहिती"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"आपल्‍या वाहकाच्‍या मोबाइल नेटवर्क डेटा वापर धोरणाविषयी अधिक माहिती"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"सेल प्रसारण SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"सेल प्रसारण SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"सेल प्रसारण SMS सक्षम केले"</string>
@@ -327,7 +353,7 @@
     <item msgid="7494167883478914080">"0"</item>
     <item msgid="6043847456049107742">"1"</item>
   </string-array>
-    <string name="cdma_activate_device" msgid="3793805892364814518">"डिव्हाइस सक्रिय करा"</string>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"डीव्हाइस सक्रिय करा"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"डेटा सेवा सेट अप करा"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"वाहक सेटिंग्ज"</string>
     <string name="fdn" msgid="7878832555095183202">"निश्चित डायलिंग नंबर"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"संपर्क जोडा"</string>
     <string name="menu_edit" msgid="7143003705504672374">"संपर्क संपादित करा"</string>
     <string name="menu_delete" msgid="3977150783449642851">"संपर्क हटवा"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"संपर्क डायल करा"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 टाईप करा"</string>
     <string name="name" msgid="7329028332786872378">"नाव"</string>
     <string name="number" msgid="7905950798349903858">"नंबर"</string>
@@ -363,14 +390,14 @@
     <string name="adding_fdn_contact" msgid="7627379633721940991">"निश्चित डायलिंग नंबर जोडत आहे..."</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"निश्चित डायलिंग नंबर जोडला."</string>
     <string name="edit_fdn_contact" msgid="7976936035587081480">"निश्चित डायलिंग नंबर संपादित करीत आहे..."</string>
-    <string name="updating_fdn_contact" msgid="8370929876849803600">"निश्चित डायलिंग नंबर अद्यतनित करीत आहे..."</string>
-    <string name="fdn_contact_updated" msgid="5497828782609005017">"निश्चित डायलिंग नंबर अद्यतनित केला."</string>
+    <string name="updating_fdn_contact" msgid="8370929876849803600">"निश्चित डायलिंग नंबर अपडेट करीत आहे..."</string>
+    <string name="fdn_contact_updated" msgid="5497828782609005017">"निश्चित डायलिंग नंबर अपडेट केला."</string>
     <string name="delete_fdn_contact" msgid="6668958073074151717">"निश्चित डायलिंग नंबर हटवा"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"निश्चित डायलिंग नंबर हटवित आहे..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"निश्चित डायलिंग नंबर हटविला."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"आपण चुकीचा पिन टाईप केल्‍याने FDN अद्यतनित केले नव्‍हते."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN अद्यतनित केले नव्‍हते कारण नंबर 20 अंकांपेक्षा जास्‍त असू शकत नाही."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN अद्यतनित केले नव्‍हते. PIN2 चुकीचा होता किंवा फोन नंबरला नकार दिला."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"आपण चुकीचा पिन टाईप केल्‍याने FDN अपडेट केले नव्‍हते."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN अपडेट झाले नाही कारण नंबर रिक्त आहे किंवा 20 अंकांपेक्षा मोठा आहे."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN अपडेट केले नव्‍हते. PIN2 चुकीचा होता किंवा फोन नंबरला नकार दिला."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN कार्य अयशस्‍वी झाले."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"सिक कार्डमधून वाचत आहे..."</string>
     <string name="simContacts_empty" msgid="5270660846489561932">"आपल्‍या सिम कार्डवर कोणतेही संपर्क नाहीत."</string>
@@ -391,7 +418,7 @@
     <string name="enable_pin_ok" msgid="2918545971413270063">"पिन सेट केला"</string>
     <string name="disable_pin_ok" msgid="2109571368635883688">"पिन साफ केला"</string>
     <string name="pin_failed" msgid="5644377896213584760">"पिन चुकीचा आहे"</string>
-    <string name="pin_changed" msgid="4455736268023261662">"पिन अद्यतनित केला"</string>
+    <string name="pin_changed" msgid="4455736268023261662">"पिन अपडेट केला"</string>
     <string name="puk_requested" msgid="5921393215789090200">"संकेतशब्द चुकीचा आहे. पिन आता अवरोधित केला. PUK ची विनंती केली."</string>
     <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
     <string name="oldPin2Label" msgid="8559146795026261502">"जुना PIN2"</string>
@@ -402,7 +429,7 @@
     <string name="mismatchPin2" msgid="4177967478551851117">"पिन2 जुळत नाहीत. पुन्हा प्रयत्न करा."</string>
     <string name="invalidPin2" msgid="1757045131429105595">"4 ते 8 अंक असलेला एक पिन2 प्रविष्‍ट करा."</string>
     <string name="invalidPuk2" msgid="7059081153334815973">"8 अंक असलेला एक PUK2 प्रविष्‍ट करा."</string>
-    <string name="pin2_changed" msgid="3724522579945610956">"पिन2 अद्यतनित केला"</string>
+    <string name="pin2_changed" msgid="3724522579945610956">"पिन2 अपडेट केला"</string>
     <string name="label_puk2_code" msgid="4688069961795341948">"PUK2 कोड प्रविष्‍ट करा"</string>
     <string name="fdn_enable_puk2_requested" msgid="4991074891459554705">"संकेतशब्द चुकीचा आहे. पिन2 आता अवरोधित केला. पुन्हा प्रयत्न करण्‍यासाठी, पिन 2 बदला."</string>
     <string name="puk2_requested" msgid="5831015200030161434">"संकेतशब्द चुकीचा आहे. सिम आता लॉक केले आहे. PUK2 प्रविष्‍ट करा."</string>
@@ -426,26 +453,30 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"व्हॉइसमेल नंबर अज्ञात"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"सेवा नाही"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"निवडलेले नेटवर्क (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) अनुपलब्‍ध"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"कॉल करण्‍यासाठी विमान मोड बंद करा."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"कॉल करण्‍यासाठी मोबाइल नेटवर्क चालू करा, विमान मोड बंद करा किंवा बॅटरी बचकर्ता मोड बंद करा."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"कॉल करण्‍यासाठी विमान मोड बंद करा."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"कॉल करण्‍यासाठी विमान मोड बंद करा किंवा वायरलेस नेटवर्कशी कनेक्‍ट करा."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"आणीबाणी नसलेला कॉल करण्‍यासाठी आणीबाणी कॉलबॅक मोडमधून बाहेर पडा."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्कवर नोंदणीकृत नाही."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"सेल्युलर नेटवर्क उपलब्ध नाही."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेल्युलर नेटवर्क उपलब्‍ध नाही. कॉल करण्‍यासाठी वायरलेस नेटवर्कशी कनेक्‍ट करा."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"मोबाइल नेटवर्क उपलब्ध नाही."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"मोबाइल नेटवर्क उपलब्‍ध नाही. कॉल करण्‍यासाठी वायरलेस नेटवर्कशी कनेक्‍ट करा."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"कॉल करण्यासाठी, एक वैध नंबर प्रविष्ट करा."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"कॉल करू शकत नाही."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI क्रम प्रारंभ करीत आहे..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"कॉल अयशस्वी झाला."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"यावेळी कॉल जोडला जाऊ शकत नाही."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"सेवा समर्थित नाही"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"कॉल स्विच करू शकत नाही."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"कॉल विभक्त करू शकत नाही."</string>
     <string name="incall_error_supp_service_transfer" msgid="7235952238189391438">"हस्तांतर करू शकत नाही."</string>
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"परिषद कॉल करण्‍यात अक्षम."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कॉल नाकारू शकत नाही."</string>
-    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीझ करू शकत नाही."</string>
+    <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कॉल रिलीज करू शकत नाही."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कॉल सुरु ठेवू शकत नाही."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"कॉल करण्‍यासाठी वायरलेस नेटवर्कशी कनेक्‍ट करा."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"कॉल करण्यासाठी वाय-फाय कॉलिंग सक्षम करा."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आणीबाणीचा कॉल"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडिओ चालू करीत आहे..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"सेवा नाही. पुन्हा प्रयत्न करत आहे…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"आणीबाणी कॉलदरम्यान विमान मोडमध्ये प्रवेश करू शकत नाही."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"कॉल करू शकत नाही. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> हा आणीबाणी नंबर नाहीये."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"कॉल करू शकत नाही. आणीबाणी नंबर डायल करा."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"डायल करण्‍यासाठी कीबोर्डचा वापर करा"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"सर्व आयात करा"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"सिम संपर्क आयात करीत आहे"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"संपर्कांमधून आयात करा"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"आयात केलेला संपर्क"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"संपर्क आयात करण्यात अयशस्वी"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"श्रवणयंत्रे"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"श्रवणयंत्र सुसंगतता चालू करा"</string>
   <string-array name="tty_mode_entries">
@@ -504,13 +537,10 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"आणीबाणी कॉलबॅक मोड प्रविष्‍ट केला"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आणीबाणी कॉलबॅक मोड"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा कनेक्शन अक्षम केले"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"><xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी कोणतेही डेटा कनेक्‍शन नाही</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी कोणतेही डेटा कनेक्‍शन नाही</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> पर्यंत कोणतेही डेटा कनेक्‍शन नाही"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
-      <item quantity="one">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अनुप्रयोग वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
-      <item quantity="other">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अनुप्रयोग वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
+      <item quantity="one">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अॅप्लिकेशन वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
+      <item quantity="other">फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटांसाठी आणीबाणी कॉलबॅक मोडमध्ये राहील. या मोडमध्ये असताना डेटा कनेक्शन वापरणारे कोणतेही अॅप्लिकेशन वापरले जाऊ शकत नाहीत. आपण आता बाहेर पडू इच्छिता?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
       <item quantity="one">आणीबाणी कॉलबॅक मोडमध्ये असताना निवडलेली क्रिया उपलब्ध नसते. फोन <xliff:g id="COUNT_1">%s</xliff:g> मिनिटासाठी या मोडमध्ये राहील. आपण आता बाहेर पडू इच्छिता?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"संपर्क निवडा"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"व्‍हॉइस कॉलिंंग समर्थित नाही"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"डायल करा"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"कंपन होणे"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"कंपन होणे"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"दृश्‍यमान व्हॉइसमेल"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ध्वनी"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"पिन सेट करा"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"पिन बदला"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिंगटोन आणि कंपन"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"अंगभूत सिम कार्डे"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"व्हिडिओ कॉलिंग चालू करा"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"केवळ आणीबाणी कॉल करणे"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"सिम कार्ड, स्लॉट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"प्रवेशयोग्यता"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"येणारा वाय-फाय कॉल"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"कडून Wi-Fi कॉल"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"वाय-फाय कॉल"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"उघडण्यासाठी पुन्हा स्पर्श करा"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"उघडण्यासाठी पुन्हा टॅप करा"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"संदेश डीकोड करताना एक त्रुटी आली."</string>
-    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"सिम कार्डने आपली सेवा सक्रिय केली आहे आणि आपल्या फोनच्या रोमिंग क्षमता अद्यतनित केल्या."</string>
+    <string name="callFailed_cdma_activation" msgid="2307989779233262164">"सिम कार्डने आपली सेवा सक्रिय केली आहे आणि आपल्या फोनच्या रोमिंग क्षमता अपडेट केल्या."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"बरेच सक्रिय कॉल आहेत. कृपया नवीन एक कॉल करण्यापूर्वी विद्यमान कॉल समाप्त करा किंवा विलीन करा."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"कनेक्ट करण्यात अक्षम, कृपया एक वैध सिम कार्ड घाला."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"वाय-फाय कनेक्शन गमावले. कॉल समाप्त झाला."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"व्हॉइसमेल पिन बदला"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"सुरू ठेवा"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"रद्द करा"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ठीक आहे"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"आपल्या जुन्या पिनची पुष्टी करा"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"सुरु ठेवण्‍यासाठी आपला व्हॉइसमेल पिन प्रविष्‍ट करा."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"नवीन पिन सेट करा"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"पिन <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> अंकी असणे आवश्‍यक आहे."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"आपल्या पिनची पुष्टी करा"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"पिन जुळत नाहीत"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"व्हॉइसमेल पिन अपडेट केला"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"पिन सेट करण्यात अक्षम"</string>
 </resources>
diff --git a/res/values-ms-rMY/arrays.xml b/res/values-ms/arrays.xml
similarity index 100%
rename from res/values-ms-rMY/arrays.xml
rename to res/values-ms/arrays.xml
diff --git a/res/values-ms/config.xml b/res/values-ms/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ms/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms/strings.xml
similarity index 86%
rename from res/values-ms-rMY/strings.xml
rename to res/values-ms/strings.xml
index 2f7cf5b..064d104 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Data Selular"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Data Mudah Alih"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Perkhidmatan Telefon"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Pendail Kecemasan"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nombor mel suara tiada"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Tidak ada nombor mel suara disimpan pada kad SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Tambah nombor"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Tetapan Mel Suara hanya boleh diubah suai oleh Pengguna Utama."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Kad SIM anda telah dinyahsekat. Telefon anda dibuka kunci..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN buka kunci rangkaian SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Buka kunci"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Meminta dibukakan kunci rangkaian..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Permintaan dibukakan kunci rangkaian tidak berjaya."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Berjaya membuka kunci rangkaian."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Tetapan rangkaian selular tidak tersedia untuk pengguna ini"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Tetapan rangkaian mudah alih tidak tersedia untuk pengguna ini"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Tetapan panggilan GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Tetapan panggilan GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Tetapan panggilan CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Buat panggilan dengan"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Buat panggilan SIP dengan"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Tanya dahulu"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Tiada rangkaian yang tersedia"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Tetapan"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Pilih akaun"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akaun telefon"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Mel suara"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mel suara (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Pemberitahuan"</string>
     <string name="networks" msgid="8873030692174541976">"Pengendali rangkaian"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Siaran kecemasan"</string>
     <string name="call_settings" msgid="6112441768261754562">"Tetapan panggilan"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Jika tidak dapat dihubungi"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nombor apabila tidak dapat dihubungi"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Memajukan ke <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Dilumpuhkan"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Mati"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Pembawa anda tidak menyokong pelumpuhan pemajuan panggilan semasa telefon anda tidak boleh dihubungi."</string>
     <string name="updating_title" msgid="6146755386174019046">"Tetapan panggilan"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Tetapan panggilan hanya boleh diubah oleh pengguna utama."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Tetapan panggilan hanya boleh diubah oleh pengguna pentadbir."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Tetapan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Ralat tetapan panggilan"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Membaca tetapan..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Tiada perubahan dibuat."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Pilih perkhidmatan mel suara"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Pembawa anda"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Tetapan rangkaian selular"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN lama"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN baharu"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Sila tunggu."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN baharu terlalu pendek."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN baharu terlalu panjang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN baharu terlalu lemah. Kata laluan yang kukuh tidak seharusnya mempunyai digit yang berturutan atau berulangan."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"PIN lama tidak sepadan."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"PIN baharu mengandungi aksara yang tidak sah."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Tidak dapat menukar PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Jenis mesej tidak disokong, hubungi <xliff:g id="NUMBER">%s</xliff:g> untuk mendengar."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Tetapan rangkaian mudah alih"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rangkaian mudah alih"</string>
     <string name="label_available" msgid="1181658289009300430">"Rangkaian sedia ada"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Mencari..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Tiada rangkaian ditemui."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Didaftarkan pada rangkaian."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Pilih pengendali rangkaian"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Cari semua rangkaian tersedia"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Pilih secara automatik"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Pilih rangkaian keutamaan secara automatik"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Pilih rangkaian secara automatik"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rangkaian"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Pendaftaran automatik..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Jenis rangkaian pilihan"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Tukar mod pengendalian rangkaian"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM sahaja"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA diutamakan"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Memanggil"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rangkaian"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mod 4G LTE Dipertingkat"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Panggilan Ke Hadapan"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Gunakan perkhidmatan LTE untuk memperbaik suara dan komunikasi lain (disyorkan)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data didayakan"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Benarkan penggunaan data"</string>
-    <string name="roaming" msgid="8871412572928323707">"Perayauan data"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Perhatian"</string>
+    <string name="roaming" msgid="7894878421600247140">"Perayauan"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Sambung ke perkhidmatan data semasa perayauan"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Sambung ke perkhidmatan data semasa perayauan"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Anda telah kehilangan kesambungan data kerana anda meninggalkan rangkaian rumah anda dengan data perayauan dimatikan."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Anda mungkin dikenakan caj yang tinggi."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Benarkan perayauan data?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Penggunaan data"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> data mudah alih digunakan antara <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Pembawa"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Data Mudah Alih"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Akses data menggunakan rangkaian mudah alih"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Panggilan Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Panggilan video pembawa"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Pilihan GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Pilihan CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Penggunaan data"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Melebihi maksimum <xliff:g id="USED_0">%1$s</xliff:g>\nKadar data dikurangkan kepada <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ daripada kitaran telah berlalu\nTempoh berikutnya bermula dalam <xliff:g id="USED_1">%2$d</xliff:g> hari (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Kadar data dikurangkan kepada <xliff:g id="USED">%1$d</xliff:g> Kb/s jika melebihi had penggunaan data"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Lagi maklumat mengenai dasar penggunaan data rangkaian selular pembawa anda"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Lagi maklumat mengenai dasar penggunaan data rangkaian mudah alih pembawa anda"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS Siaran Sel"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS Siaran Sel"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS Siaran Sel didayakan"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Tambah kenalan"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edit kenalan"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Padamkan kenalan"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Dail kenalan"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Jenis PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nama"</string>
     <string name="number" msgid="7905950798349903858">"Nombor"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Memadamkan nombor dailan tetap..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Nombor dailan tetap dipadamkan."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN tidak dikemaskini kerana anda telah menaip PIN yang salah."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN tidak dikemas kini kerana nombor tidak boleh melebihi 20 digit."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN tidak dikemas kini kerana nombor kosong atau melebihi 20 digit."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN tidak dikemaskini. PIN2 salah atau nombor telefon telah ditolak."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operasi FDN gagal."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Membaca daripada kad SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nombor mel suara tidak dikenali"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Tiada perkhidmatan"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rangkaian pilihan (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) tidak tersedia"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Matikan mod pesawat untuk membuat panggilan."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Hidupkan rangkaian mudah alih, matikan mod pesawat atau matikan mod penjimat bateri untuk membuat panggilan."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Matikan mod pesawat untuk membuat panggilan."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Matikan mod pesawat atau sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Keluar daripada mod panggil balik kecemasan untuk membuat panggilan bukan kecemasan."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tidak didaftarkan pada rangkaian."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rangkaian selular tidak tersedia."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rangkaian selular tidak tersedia. Sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rangkaian mudah alih tidak tersedia."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Rangkaian selular tidak tersedia. Sambung ke rangkaian wayarles untuk membuat panggilan."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Untuk membuat panggilan, masukkan nombor yang sah."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Tidak dapat memanggil."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Memulakan jujukan MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Panggilan gagal."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Panggilan tidak boleh ditambahkan pada masa ini."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Perkhidmatan tidak disokong"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Tidak dapat menukar panggilan."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Tidak dapat mengasingkan panggilan."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Tidak boleh membuat panggilan sidang."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Tidak dapat menolak panggilan."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Tidak dapat melepaskan panggilan."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Tidak dapat menunda panggilan."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Sambungkan ke rangkaian wayarles untuk membuat panggilan."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Dayakan panggilan Wi-Fi untuk membuat panggilan."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Panggilan kecemasan"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Menghidupkan radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Tiada perkhidmatan. Mencuba lagi..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Tidak dapat memasuki mod pesawat semasa panggilan kecemasan."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Tidak dapat memanggil. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> bukan nombor kecemasan."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Tidak dapat memanggil. Dail nombor kecemasan."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Gunakan papan kekunci untuk mendail"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Import semua"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Mengimport Kenalan SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import daripada kenalan"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kenalan yang diimport"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Gagal mengimport kenalan"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Alat pendengaran"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Hidupkan keserasian alat pendengaran"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Telah Memasuki Mod Panggil Balik Kecemasan"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mod Paggil Balik Kecemasan"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Sambungan data dilumpuhkan"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Tiada sambungan data selama <xliff:g id="COUNT_1">%s</xliff:g> minit</item>
-      <item quantity="one">Tiada sambungan data selama <xliff:g id="COUNT_0">%s</xliff:g> minit</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Tiada sambungan data hingga <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefon akan berada dalam mod Panggilan Balik Kecemasan selama <xliff:g id="COUNT_1">%s</xliff:g> minit. Semasa berada dalam mod ini tiada aplikasi yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?</item>
       <item quantity="one">Telefon akan berada dalam mod Panggilan Balik Kecemasan selama <xliff:g id="COUNT_0">%s</xliff:g> seminit. Semasa berada dalam mod ini tiada apl yang menggunakan sambungan data boleh digunakan. Adakah anda mahu keluar sekarang?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"pilih kenalan"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Panggilan suara tidak disokong"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"dail"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Getar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Getar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Mel Suara Visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Bunyi"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Tetapkan PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Tukar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nada dering &amp; Bergetar"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Kad SIM terbina dalam"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Hidupkan panggilan video"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Panggilan kecemasan sahaja"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Kad SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Kebolehaksesan"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Panggilan Wi-Fi masuk"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Panggilan Wi-Fi daripada"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Panggilan Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Sentuh lagi untuk membuka"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ketik lagi untuk membuka"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Terdapat ralat semasa menyahkodkan mesej."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kad SIM telah mengaktifkan perkhidmatan anda dan mengemas kini keupayaan perayauan telefon anda."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Terlalu banyak panggilan aktif. Sila tamatkan atau gabungkan panggilan yang sedia ada sebelum membuat panggilan baharu."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Tidak dapat bersambung, sila masukkan kad SIM yang sah."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Sambungan Wi-Fi terputus. Panggilan ditamatkan."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Tukar PIN Mel Suara"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Teruskan"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Batal"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Ok"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Sahkan PIN lama anda"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Masukkan PIN mel suara anda untuk meneruskan."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Tetapkan PIN baharu"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN mestilah <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> digit."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Sahkan PIN anda"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN tidak sepadan"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN mel suara dikemas kini"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Tidak dapat menetapkan PIN"</string>
 </resources>
diff --git a/res/values-my-rMM/arrays.xml b/res/values-my/arrays.xml
similarity index 100%
rename from res/values-my-rMM/arrays.xml
rename to res/values-my/arrays.xml
diff --git a/res/values-my/config.xml b/res/values-my/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-my/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my/strings.xml
similarity index 83%
rename from res/values-my-rMM/strings.xml
rename to res/values-my/strings.xml
index 5cac4d8..9c05ad9 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ဆဲလ်လူလာ ဒေတာ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"မိုဘိုင်းဒေတာ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ဖုန်းဝန်ဆောင်မှုများ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"အရေးပေါ်နံပါတ်ခေါ်ဆိုနံပါတ်ကွက်"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ဖုန်း"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"FDN အမှတ်စဉ်"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"FDN စာရင်း"</string>
     <string name="unknown" msgid="6878797917991465859">"အကြောင်းအရာ မသိရှိ"</string>
     <string name="private_num" msgid="6713286113000232309">"လျို့ဝှက် နံပါတ်"</string>
     <string name="payphone" msgid="4793877574636445118">"ငွေပေးရသည့်ဖုန်း"</string>
@@ -28,10 +28,10 @@
     <string name="mmiStarted" msgid="6347869857061147003">"MMIကုတ်နံပါတ်ကို စတင်ပြီးပါပြီ"</string>
     <string name="ussdRunning" msgid="485588686340541690">"USSD ကုဒ် လုပ်ဆောင်နေပါသည်…"</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"MMIကုတ်နံပါတ်ကို ပယ်ဖျက်ပြီးပါပြီ"</string>
-    <string name="cancel" msgid="5044513931633602634">"ထားတော့"</string>
+    <string name="cancel" msgid="5044513931633602634">"မလုပ်တော့"</string>
     <string name="enter_input" msgid="1810529547726803893">"USSD စာများဟာ စာလုံးရေ <xliff:g id="MIN_LEN">%d</xliff:g> မှ<xliff:g id="MAX_LEN">%d</xliff:g> အတွင်း ဖြစ်ရပါမည်။ နောက်တစ်ခေါက်ကြိုးစားပါ"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"ကွန်းဖရင့် ခေါ်ဆိုမှုကို ထိန်းချုပ်သည်"</string>
-    <string name="ok" msgid="3811371167865772377">"ကောင်းပြီ"</string>
+    <string name="ok" msgid="3811371167865772377">"အိုကေ"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"စပီကာ"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"လက်ကိုင်တယ်လီဖုန်းနားခွက်"</string>
     <string name="audio_mode_wired_headset" msgid="1465350758489175975">"ကြိုးတပ် မိုက်ခွက်ပါနားကြပ်"</string>
@@ -39,20 +39,21 @@
     <string name="wait_prompt_str" msgid="7601815427707856238">"အောက်ပါ တီးလုံးများကို ပို့မလား?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"အသံ ပို့နေစဉ်\n"</string>
     <string name="send_button" msgid="4106860097497818751">"ပို့ခြင်း"</string>
-    <string name="pause_prompt_yes" msgid="3564467212025151797">"ဟုတ်ကဲ့"</string>
-    <string name="pause_prompt_no" msgid="6686238803236884877">"မဟုတ်ပါ"</string>
+    <string name="pause_prompt_yes" msgid="3564467212025151797">"Yes"</string>
+    <string name="pause_prompt_no" msgid="6686238803236884877">"No"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"wildစာလုံးကို အစားထိုးရန်မှာ"</string>
     <string name="no_vm_number" msgid="4164780423805688336">"အသံစာပို့စနစ် နံပါတ် ပျောက်နေပါသည်"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"ဆင်းမ်ကဒ်ပေါ်တွင် အသံစာပို့စနစ် နံပါတ် သိမ်းဆည်ထားခြင်း မရှိပါ"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"နံပါတ်ထပ်ထည့်ရန်"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"အသံမေးလ်ဆက်တင်များကို အဓိကအသုံးပြုသူသာ ပြင်ဆင်နိုင်ပါသည်။"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"သင့် ဆင်းမ်ကဒ်အား ပိတ်ဆို့မှုကို ဖယ်ရှားပြီးပါပြီ။ သင့်ဖုန်းဟာ သော့ဖွင့်နေပါသည်…"</string>
     <string name="label_ndp" msgid="780479633159517250">"ဆင်းမ်ကဒ် ကွန်ရက် သော့ဖွင့်သော ပင်နံပါတ်"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ဖွင့်ရန်"</string>
-    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"လွှတ်လိုက်သည်"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"ပယ်ရန်"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"ကွန်ယက်သော့ဖွင့်ခြင်း တောင်းဆိုနေပါသည်…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ကွန်ယက်ဖွင့်ရန် တောင်းဆိုမှု မအောင်မြင်ပါ"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ကွန်ယက်ဖွင့်ခြင်း မအောင်မြင်ပါ"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ဒီအသုံးပြုသူ အတွက် မိုဘိုင်း ကွန်ရက် ဆက်တင်များ မရှိ"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ဒီအသုံးပြုသူ အတွက် မိုဘိုင်း ကွန်ရက် ဆက်တင်များ မရှိ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"ဂျီအက်စ်အမ် ခေါ်ဆိုမှု ဆက်တင်"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM ခေါ်ဆိုမှု ဆက်တင်များ ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ဖုန်းခေါ်ဆိုမှု ဆက်တင်"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ဖြင့် ခေါ်ဆိုမှုများပြုလုပ်မည်"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ဖြင့် SIP ခေါ်ဆိုမှုများ ပြုလုပ်မည်"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"အရင်မေးပါ"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ကွန်ရက်မရှိပါ"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ဆက်တင်များ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"အကောင့်များ ရွေးချယ်မည်။"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ဖုန်းအကောင့်များ"</string>
@@ -70,15 +72,16 @@
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"အကောင့် ချိန်ညှိချက်များ ပြုပြင်မည်"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"ခေါ်ဆိုနေသော အကောင့်များ အားလုံး"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"ဖုန်းခေါ်ဆိုနိုင်သည့် အကောင့်များအား ရွေးရန်"</string>
-    <string name="wifi_calling" msgid="739018212480165598">"ဝိုင်ဖိုင် ခေါ်ဆိုမှု"</string>
+    <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi  ခေါ်ဆိုမှု"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"တပ်ဆင်ပြီး ချိတ်ဆက်ရေး ဝန်ဆောင်မှု"</string>
     <string name="voicemail" msgid="8693759337917898954">"အသံစာပို့စနစ်"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"အသံစာပို့စနစ် ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"အသံစာပို့နစ်အမှတ် -"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"အကြောင်းကြားချက်များ"</string>
     <string name="networks" msgid="8873030692174541976">"ကွန်ရက် အော်ပရေတာများ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"အရေးပေါ် ထုတ်လွှင့်မှုများ"</string>
-    <string name="call_settings" msgid="6112441768261754562">"ခေါ်ဆိုခြင်း အဆင်အပြင်များ"</string>
-    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"ပိုမိုသော အပြင်အဆင်များ"</string>
+    <string name="call_settings" msgid="6112441768261754562">"ဖုန်းခေါ်ဆိုခြင်း ဆက်တင်များ"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"နောက်ထပ်ဆက်တင်များ"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"နောက်ထပ် ချိန်ညှိချက်များ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"GSM ခေါ်ဆိုမှုအတွက်သာ ဖြည့်စွက်အပြင်အဆင်"</string>
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"ပိုမိုသော CDMA ခေါ်ဆိုမှု အပြင်အဆင်"</string>
@@ -92,8 +95,8 @@
     <string name="labelCW" msgid="6120513814915920200">"ခေါ်ဆိုမှု စောင့်ဆိုင်းခြင်း"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"ဖုန်းပြောနေစဉ် အဝင်ခေါ်ဆိုမှုရှိပါက အသိပေးပါ"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"ဖုန်းပြောနေစဉ် အဝင်ခေါ်ဆိုမှုရှိပါက အသိပေးပါ"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"ဖုန်းခေါ်ဆိုမှု ထပ်မံလွှဲပြောင်းခြင်း အပြင်အဆင်"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ခေါ်ဆိုမှု ထပ်ဆင့်ပို့ခြင်း ချိန်ညှိချက်များ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"ခေါ်ဆိုမှုထပ်ဆင့်ပို့ခြင်း ဆက်တင်များ"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ခေါ်ဆိုမှု ထပ်ဆင့်ပို့ခြင်း ဆက်တင်များ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"အဝင်ခေါ်ဆိုမှုအား ထပ်ဆင့်ပို့ခြင်း"</string>
     <string name="labelCFU" msgid="8147177368148660600">"အမြဲတမ်း ထပ်ဆင့်ပို့ပါ"</string>
     <string name="messageCFU" msgid="3560082430662923687">"ဤနံပါတ်ကို အမြဲသုံးပါ"</string>
@@ -114,12 +117,12 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"ဆက်သွယ်၍ မရချိန်"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ဖုန်းခေါ်မရလျှင် ပို့ရန် နံပါတ်"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> သို့ခေါ်ဆိုမှုအား တဆင့်ထပ်ပို့နေသည်"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"သုံးမရအောင် ပိတ်ထားခြင်း"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ပိတ်ထားရန်"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"သင့် ဖုန်း ဆက်သွယ်မှု လုပ်လို့မရစဉ် call forwarding ပြုလုပ်မှု ပယ်ဖျက်ရန် သင့် အော်ပရေတာမှ ခွင့်မပြုပါ"</string>
-    <string name="updating_title" msgid="6146755386174019046">"ခေါ်ဆိုခြင်း အဆင်အပြင်များ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"အဓိက အသုံးပြုသူသာလျှင် ခေါ်ဆိုမှု ချိန်ညှိချက်များကို ပြောင်းလဲနိုင်ပါသည်။"</string>
+    <string name="updating_title" msgid="6146755386174019046">"ဖုန်းခေါ်ဆိုခြင်း ဆက်တင်များ"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ခေါ်ဆိုမှုကြိုတင်ပြင်ဆင်ချက်များကို ကြီးကြပ်သူသာလျှင် ပြောင်းလဲနိုင်သည်။"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ဆက်တင်များ ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"ခေါ်ဆိုမှု အပြင်အဆင်အမှား"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"ခေါ်ဆိုမှုဆက်တင်အမှား"</string>
     <string name="reading_settings" msgid="1920291699287055284">"အပြင်အဆင်များကို ဖတ်နေပါသည်…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"ဆက်တင်များအား ပြင်နေသည်…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"ဆက်တင်များကို ပြန်ပြောင်းနေစဉ်…"</string>
@@ -130,7 +133,7 @@
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS တောင်းဆိုချက်ကို SS တောင်းဆိုချက် အသစ် အဖြစ် ပြောင်းပေးခဲ့။"</string>
     <string name="fdn_check_failure" msgid="18200614306525434">"သင့်ဖုန်းအပ်ပလီကေးရှင်း ၏ ပုံသေ ခေါ်ဆိုမှု နံပါတ်များ ဖွင့်ထားပါသည်။ ထို့ကြောင့် တချို့ ဖုန်းခေါ်မှု စွမ်းဆောင်ရည်များ အလုပ်မလုပ်ပါ"</string>
     <string name="radio_off_error" msgid="2304459933248513376">"ဤအပြင်အဆင်များကို မကြည့်ခင် ရေဒီယိုကို ဖွင့်ပါ"</string>
-    <string name="close_dialog" msgid="2365884406356986917">"ကောင်းပြီ"</string>
+    <string name="close_dialog" msgid="2365884406356986917">"အိုကေ"</string>
     <string name="enable" msgid="7248657275000173526">"ဖွင့်ထားရန်"</string>
     <string name="disable" msgid="4678348128118573672">"ပိတ်မည်"</string>
     <string name="change_num" msgid="239476305819844391">"အဆင်မြှင့်ခြင်း"</string>
@@ -145,8 +148,19 @@
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"လက်ရှိ forwarding နံပါတ် အပြင်အဆင်အား ရယူခြင်းနှင့် သိမ်းဆည်းခြင်း ပြုလုပ်မရပါ\nဘယ်လိုဖြစ်ဖြစ် ဝန်ဆောင်မှု ပေးသူ အသစ်ပြောင်းပါမလား။"</string>
     <string name="no_change" msgid="3186040086622435212">"အပြောင်းအလဲများ မပြုလုပ်ထားပါ"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"အသံစာပို့စနစ် ဝန်ဆောင်မှု ရွေးပါ"</string>
-    <string name="voicemail_default" msgid="2001233554889016880">"သင့် မိုဘိုင်းဆက်သွယ်ရေး ဝန်ဆောင်မှုဌာန"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ဆယ်လူလာ ကွန်ရက် ဆက်တင်များ"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"သင့် မိုဘိုင်းဝန်ဆောင်မှုပေးသူ"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ပင်နံပါတ်အဟောင်း"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ပင်နံပါတ်အသစ်"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"ခဏစောင့်ပါ။"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ပင်နံပါတ်အသစ်မှာ တိုလွန်းနေသည်။"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ပင်နံပါတ်အသစ်မှာ ရှည်လွန်းနေသည်။"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ပင်နံပါတ်အသစ်မှာ အားနည်းလွန်းနေသည်။ အားကောင်းသောစကားဝှက်တစ်ခုတွင် အစဉ်လိုက်စာလုံးများ (သို့) ထပ်တလဲလဲသုံးထားသောကိန်းဂဏန်းများ မပါသင့်ပါ။"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"ပင်နံပါတ်အဟောင်းမှာ မကိုက်ညီပါ။"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"ပင်နံပါတ်အသစ်တွင် အသုံးပြု၍မရသောစာလုံးများ ပါဝင်နေပါသည်။"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"ပင်နံပါတ်ကို ပြောင်း၍မရပါ"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ပံ့ပိုးမထားသော မက်ဆေ့ဂျ်အမျိုးအစားဖြစ်၍ နားထောင်ရန် <xliff:g id="NUMBER">%s</xliff:g> ကို ခေါ်ဆိုပါ။"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"မိုဘိုင်းကွန်ယက် ဆက်တင်များ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"မိုဘိုင်းကွန်ရက်"</string>
     <string name="label_available" msgid="1181658289009300430">"ရရှိနိုင်သော ကွန်ယက်များ"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"ရှာဖွေနေသည်…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ကွန်ယက်များ မတွေ့ပါ"</string>
@@ -158,12 +172,12 @@
     <string name="registration_done" msgid="495135664535876612">"ကွန်ယက်ပေါ်တွင် မှတ်ပုံတင်ထားခြင်း"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ကွန်ယက်ဝန်ဆောင်မှုကို ရွေးချယ်ပါ"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ရရှိုနိုင်သောကွန်ယက်အားလုံးကို ရှာပါ"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"အလိုအလျောက်ရွေးခြင်း"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ပိုမိုနှစ်သက်သော ကွန်ယက်ကို အလိုအလျောက် ရွေးပါ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ကွန်ရက်ကို အလိုအလျောက် ရွေးချယ်ရန်"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ကွန်ရက်"</string>
     <string name="register_automatically" msgid="6017849844573519637">"အလိုအလျောက် မှတ်ပုံတင်ခြင်း…"</string>
-    <string name="preferred_network_mode_title" msgid="2336624679902659306">"ပိုမိုနှစ်သက်သော ကွန်ယက်အမျိုးအစား"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"ပိုနှစ်သက်သော ကွန်ရက်အမျိုးအစား"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ကွန်ရက် လုပ်ဆောင်မှုစနစ်အား ပြောင်းပါ"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"ပိုမိုကြိုက်သော ကွန်ယက်အမျိုးအစား"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"ပိုနှစ်သက်သော ကွန်ရက်အမျိုးအစား"</string>
     <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"ပိုမိုကြိုက်သော ကွန်ယက်စနစ်-WCDMA"</string>
     <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"ပိုမိုကြိုက်သော ကွန်ယက်စနစ်-GSM သာ"</string>
     <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"ပိုမိုကြိုက်သော ကွန်ယက်စနစ်- WCDMA သာ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM သာ"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferred"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"ခေါ်ဆိုခြင်း"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ကွန်ရက်"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"မြှင့်တင်ထား 4G LTE မုဒ်"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"အဆင့်မြင့်ဖုန်းခေါ်ဆိုခြင်း"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"အသံခေါ်ဆိုမှုနှင့် အခြားဆက်သွယ်ရေးများ တိုးတက်စေရန် LTE ဝန်ဆောင်မှုများ ကိုအသုံးပြုမည် (အကြံပြုထား)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ဒေတာ ဖွင့်ထားပြီး"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ဒေတာ သုံးစွဲမှု ခွင့်ပြုရန်"</string>
-    <string name="roaming" msgid="8871412572928323707">"ဒေတာရုန်းမင်း"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"ရုန်းမင်းပြုလုပ်နေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"ရုန်းမင်းပြုလုပ်နေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"သတိပြုရန်"</string>
+    <string name="roaming" msgid="7894878421600247140">"ပြင်ပကွန်ရက်နှင့် ချိတ်ဆက်ခြင်း"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"ကွန်ရက်ပြင်ပဒေတာကို သုံးနေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"ကွန်ရက်ပြင်ပဒေတာကို သုံးနေစဉ် ဒေတာဝန်ဆောင်မှုများကို ဆက်သွယ်ခြင်း"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"ဒေတာဆက်သွယ်မှုပြတ်တောက်သွားပါသည် အဘယ်ကြောင့်ဆိုသော် သင့်အိမ်၏ကွန်ယက်မှထွက်ကာ ဒေတာရုန်းမင်းကွန်ယက်ကိုလဲပိတ်ထားသောကြောင့်ဖြစ်သည်"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"သိသာသည့် ငွေနူန်းထားသင့်အား ကျသင့်နိုင်ပါသည်။"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ကွန်ရက်ပြင်ပဒေတာအသုံးပြုခြင်း ခွင့်​ပြုမည်လား?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ဒေတာအသုံးပြုမှု"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> အကြား မိုဘိုင်းဒေတာ <xliff:g id="ID_1">%1$s</xliff:g> ကို အသုံးပြုထားပါသည်"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ဝန်ဆောင်မှုပေးသူ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"မိုဘိုင်းဒေတာ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"မိုဘိုင်းကွန်ရက်သုံးပြီး ဒေတာကို ဝင်သုံးခွင့်ပေးပါ"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi ခေါ်ဆိုခြင်း"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ဝန်ဆောင်မှုပေးသူ၏ ဗီဒီယိုခေါ်ဆိုခြင်း"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ရွေးချယ်မှုများ"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ရွေးချယ်စရာများ"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ဒေတာအသုံးပြုမှု"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> အမြင့်ဆုံး ကျော်လွန်\nဒေတာနှုန်း <xliff:g id="USED_1">%2$d</xliff:g> Kb/s သို့လျှော့ချလိုက်သည်"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ကုန်ဆုံးပြီး \n နောက်သတ်မှတ်ကာလစရန် <xliff:g id="USED_1">%2$d</xliff:g> ရက်(<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ဒေတာအသုံးပြုမှု သတ်မှတ်ချက်ထက်ကျော်လွန်ပါက ဒေတာမြန်နှုန်းဟာ <xliff:g id="USED">%1$d</xliff:g> Kb/s သို့လျှော့ချပါမည်"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"သင့် အတွက် စီမံပေးသူ၏ မိုဘိုင်ကွန်ရက် ဒေတာအသုံးပြုမှု မူဝါဒ အကြောင်း အချက်အလက်များကို ပိုမိုသိရှိရန်"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"သင့်ဖုန်းလိုင်းဌာန၏ မိုဘိုင်ကွန်ယက်ဒေတာအသုံးပြုမှု မူဝါဒအချက်အလက်များကို ပိုမိုသိရှိရန်"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတိုသည်"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတို"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"စာတိုများ ဖြန့်ဝေခြင်းစနစ် စာတို ကို ဖွင့်ထား"</string>
@@ -306,7 +332,7 @@
     <string name="enable_disable_multi_category" msgid="626771003122899280">"များစွာသော အမျိုးအစားမျိုး"</string>
     <string name="multi_category_enable" msgid="1179299804641721768">"မျိုးစုံသောအတန်းအစားများကို  ရရှိနိုင်သည်"</string>
     <string name="multi_category_disable" msgid="880104702904139505">"မျိုးစုံသောအတန်းအစားများကို ပိတ်ထားသည်"</string>
-    <string name="network_lte" msgid="7702681952521375754">"LTE (အကြံပြု)"</string>
+    <string name="network_lte" msgid="7702681952521375754">"LTE (အကြံပြုထား)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (အကြုံပြု)"</string>
     <string name="network_global" msgid="1323190488685355309">"တစ်ကမ္ဘာလုံးဆိုင်ရာ"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"စစ်စတန် ရွေးချယ်ရန်"</string>
@@ -330,13 +356,13 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"စက်ကို အက်တီဗိတ် လုပ်ရန်"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"ဒေတာဝန်ဆောင်မှု စတင်ရန်"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"ဖုန်းလိုင်းဝန်ဆောင်မှုပေးသူ၏ အပြင်အဆင်"</string>
-    <string name="fdn" msgid="7878832555095183202">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်များ"</string>
+    <string name="fdn" msgid="7878832555095183202">"ခေါ်ဆိုရန် နံပါတ်ကန့်သတ်ခြင်း"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"အထိုင်ဖုန်းနံပါတ် (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"FDN စာရင်း"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN စာရင်း (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN အက်တီဗေးရှင်း ပြုလုပ်သည်"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"ပုံသေခေါ်ဆိုမှု နံပါတ်များအား ဖွင့်ထားသည်"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"ပုံသေခေါ်ဆိုမှု နံပါတ်များအား ပိတ်ထားသည်"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"ခေါ်ဆိုနိုင်သည့် နံပါတ်များကန့်သတ်မှုကို ပိတ်ထားသည်"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"FDN ကို သုံးနိုင်ရန်"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"FDN ကို ပိတ်ထားရန်"</string>
     <string name="change_pin2" msgid="2153563695382176676">"ပင်နံပါတ်၂ ကို ပြောင်းရန်"</string>
@@ -347,7 +373,7 @@
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ဖုန်းနံပါတ်စာရင်းကို ကြီးကြပ်ရန်"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"အသံလုံခြုံရေး"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"တိုးမြှင့်လုံခြုံရေးစနစ် ပြုလုပ်ခြင်း"</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"တယ်လီဖုန်းဖြင့် စာရိုက်ခြင်း"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY မုဒ်"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"တယ်လီဖုန်းဖြင့် စာရိုက်ခြင်း သတ်မှတ်ပါ"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"အလိုအလျောက် ပြန်ကြိုးစားခြင်း"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"အလိုအလျောက် ပြန်ကြိုးစားခြင်းအား ပြုလုပ်ထားခြင်း"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"လိပ်စာထပ်ထည့်ပါ"</string>
     <string name="menu_edit" msgid="7143003705504672374">"လိပ်စာပြင်ပါ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"လိပ်စာဖျက်ပါ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"အဆက်အသွယ်ကို ဖုန်းခေါ်ရန်"</string>
     <string name="get_pin2" msgid="8204677063922225311">"ပင် နံပါတ် ၂ ကို ရိုက်ပါ"</string>
     <string name="name" msgid="7329028332786872378">"အမည်"</string>
     <string name="number" msgid="7905950798349903858">"နံပါတ်"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ခေါ်ဆိုသည့်အခြေစိုက်နံပါတ်အားဖျက်နေသည်"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ပုံသေ ခေါ်ဆိုမှု နံပါတ် ဖျက်ပြီး"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"ပင်နံပါတ် မမှန်သောကြောင့် FDNကို အဆင့်မြှင့်တင်ခြင်းမပြုလုပ်နိုင်ပါ"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"နံပါတ် အလုံးရေ (၂၀) ထက် ရှည်လို့ မရသောကြောင့် FDN ကို မပြင်ဆင်ဖြစ်ပါ"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"နံပါတ်သည် ဗလာဖြစ်နေခြင်း (သို့) အလုံး ၂၀ ကျော်နေခြင်းကြောင့် FDN ကို မပြင်ဆင်နိုင်ပါ။"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ပြောင်းလဲမှု မဖြစ်ပါ။ ပင်နံပါတ် ၂ မှားယွင်းခြင်း သို့မဟုတ် ဖုန်းနံပါတ်ကို ငြင်းဖယ်ခံရခြင်း တစ်ခုခုဖြစ်ပါသည်"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN လုပ်ဆောင်ချက် မအောင်မြင်ပါ"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"ဆင်းမ်ကဒ်မှ ဖတ်နေပါသည်..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"အသံဖုန်းခေါ်မှုနံပါတ် မသိပါ"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ဝန်ဆောင်မှု မရှိပါ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ရွေးချယ်ထားသော ကွန်ရက် (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) မရရှိနိုင်ပါ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ဖုန်းခေါ်ရန် မိုဘိုင်းကွန်ရက်ဖွင့်ပြီး လေယာဉ်ပျံမုဒ် (သို့) ဘက်ထရီချွေတာရေးမုဒ်ကို ပိတ်ပါ။"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ထားပါ။"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ဖုန်းခေါ်ရန် လေယာဉ်ပျံမုဒ် ပိတ်ပါ သို့မဟုတ် ကြိုးမဲ့ကွန်ယက်သို့ ချိတ်ဆက်ပါ။"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"အရေးပေါ် မဟုတ်သည့် ခေါ်ဆိုမှုကို ပြုလုပ်ရန် အရေးပေါ် ဖုန်းခေါ်မှုမှ ထွက်ပါ။"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ဆယ်လူလာ ကွန်ရက် မရှိပါ။"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ဆဲလူလာ ကွန်ယက် မရပါ။ ဖုန်းခေါ်ရန် ကြိုးမဲ့ကွန်ယက်သို့ ချိတ်ဆက်ပါ။"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"မိုဘိုင်းကွန်ယက်များ မရှိပါ"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"မိုဘိုင်းကွန်ရက် မရနိုင်ပါ။ ခေါ်ဆိုမှုပြုလုပ်ရန် ကြိုးမဲ့ကွန်ရက်သို့ ချိတ်ဆက်လိုက်ပါ။"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"မခေါ်ဆိုနိုင်ပါ။"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI အမှတ်စဉ်ကို စတင်နေပါသည်…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ခေါ်ဆို၍ မရပါ။"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ယခုအချိန်တွင် ခေါ်ဆိုမှု ထပ်မထည့်နိုင်ပါ။"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ဤဝန်ဆောင်မှုအား မပံ့ပိုးပါ။"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ဖုန်းခေါ်ခြင်းများကြား မကူးပ​ြောင်းနိုင်ပါ။"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ဖုန်းခေါ်ခြင်းအား မခွဲထုတ်နိုင်ပါ။"</string>
@@ -442,12 +470,15 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ကွန်းဖရင့် ပြုလုပ်၍ မရပါ"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ဖုန်းခေါ်ခြင်းအား မငြင်းဆိုနိုင်ပါ။"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ဖုန်းခေါ်ခြင်း(များ)အား လွှတ်မပေးနိုင်ပါ။"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ခေါ်ဆိုမှုများကို ကိုင်ထား၍မရပါ။"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ဖုန်းခေါ်ရန် ကြိုးမဲကွန်ယက်တစ်ခုသို့ ချိတ်ဆက်ပါ။"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ဖုန်းဆက်ရန် Wi-Fi ခေါ်ဆိုခြင်းကို ဖွင့်ပါ။"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"အရေးပေါ်ခေါ်ဆိုမှု"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ရေဒီယို ဖွင့်နေစဉ်…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ဝန်ဆောင်မှု မရှိပါ။ ထပ်မံကြိုးစားပါ…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"အရေးပေါ်ဖုန်းခေါ်ဆိုနေစဉ် လေယာဉ်ပျံသန်းနေစဉ် သုံးသောစနစ်သို့ မဝင်ရောက်နိုင်ပါ"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"မခေါ်ဆိုနိုင်ပါ။ <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> က အရေးပေါ်နံပါတ် မဟုတ်ပါ။"</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"မခေါ်ဆိုနိုင်ပါ။ အရေးပေါ်နံပါတ်အား ခေါ်ဆိုပါ။"</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"မခေါ်ဆိုနိုင်ပါ။ အရေးပေါ်ဖုန်းနံပါတ်တစ်ခုကို နှိပ်ပါ။"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ကီးဘုတ်သုံး၍ခလုတ်နှိပ်ပါ"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"ကိုင်ထားသည်"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"ပြီးပါပြီ"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"အားလုံးကို ထည့်သွင်းပါ"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"ဆင်းမ်ကဒ်မှ လိပ်စာများအား ထည့်ပါ"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"လိပ်စားများထဲမှ ထည့်ပါ"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"တင်သွင်းခဲ့သည့် အဆက်အသွယ်"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"အဆက်အသွယ်ကို တင်သွင်း မရခဲ့"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"နားကြပ်"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"အကြားအားရုံကိရိယာနှင့် ကိုက်ညီမှုကို ဖွင့်ပါ"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"အကြားအာရုံကိရိယာသုံးနိုင်ရန် ဖွင့်ပါ"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY ပိတ်ထားသည်"</item>
     <item msgid="3971695875449640648">"TTY အပြည့်"</item>
@@ -497,20 +530,17 @@
     <string name="ota_successful" msgid="1880780692887077407">"သင့်ဖုန်းမှာ အခု အက်တီဗိတ် ဖြစ်နေပါပြီ။ ဝန်ဆောင်မှုများ စတင်ရန် ၁၅ မိနစ်ထိ ကြာနိုင်ပါသည်"</string>
     <string name="ota_unsuccessful" msgid="8072141612635635357">"သင့်ဖုန်း အက်တီဗိတ် မဖြစ်ပါ။ \nဖုန်းလိုင်းအားပိုကောင်းသော နေရာကိုရှာပါ (ပြတင်းပေါက်နား, သို့မဟုတ် အပြင်ဖက်)။ \n\nပြန်လည်ကြိုးစားပါ သို့မဟုတ် သုံးစွဲသူအား အကူအညီပေးဝန်ဆောင်မှု ကို ဆက်သွယ်ပြီး နည်းလမ်းရှာပါ။"</string>
     <string name="ota_spc_failure" msgid="3909983542575030796">"အလွန်အကျွံ SPC မအောင်မြင်မှုများ"</string>
-    <string name="ota_call_end" msgid="4537279738134612388">"နောက်ပြန်သွားရန်"</string>
+    <string name="ota_call_end" msgid="4537279738134612388">"နောက်သို့"</string>
     <string name="ota_try_again" msgid="7685477206465902290">"ပြန်ကြိုးစားပါ"</string>
     <string name="ota_next" msgid="3904945374358235910">"ရှေ့ဆက်သွားရန်"</string>
     <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှုအား ရိုက်သွင်းပြီး"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှု"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ဒေတာဆက်သွယ်မှု မရှိပါ"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"> ဒေတာဆက်သွယ်မှု <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်မရှိပါ</item>
-      <item quantity="one"> ဒေတာဆက်သွယ်မှု <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်မရှိပါ</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> အထိ ဒေတာချိတ်ဆက်မှု မရှိပါ"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
-      <item quantity="other"> ဖုန်းသည် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား? </item>
-      <item quantity="one"> ဖုန်းသည် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် app များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား?</item>
+      <item quantity="other"> ဖုန်းသည် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် အက်ပ်များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား? </item>
+      <item quantity="one"> ဖုန်းသည် <xliff:g id="COUNT_0">%s</xliff:g> မိနစ်လောက် အရေးပေါ် ပြန်ခေါ်ခြင်းမုဒ်တွင် ရှိနေလိမ့်မည်။ ဤမုဒ်တွင် ဒေတာချိတ်ဆက်မှုအသုံးပြုသည့် အက်ပ်များကို အသုံးပြု၍ ရနိုင်မည်မဟုတ်ပါ။ ယခုထွက်လိုပါသလား?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
       <item quantity="other"> ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ။ ဖုန်းသည်ဤ မုဒ်တွင် <xliff:g id="COUNT_1">%s</xliff:g> မိနစ်ရှိနေမည်ဖြစ်သည်။ ယခုထွက်လိုပါသလား?</item>
@@ -518,11 +548,11 @@
     </plurals>
     <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"ရွေးချယ်ထားသော အပြုအမူမှာ အရေပေါ်ခေါ်ဆိုမှုပြုလုပ်နေစဉ် မရှိနိုင်ပါ"</string>
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"အရေးပေါ်ပြန်လည်ခေါ်ဆိုမှု အခြေအနေအား ထွက်ပါမည်"</string>
-    <string name="alert_dialog_yes" msgid="6674268047820703974">"ဟုတ်သည်"</string>
-    <string name="alert_dialog_no" msgid="1476091437797628703">"မဟုတ်ပါ"</string>
-    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"လွှတ်လိုက်သည်"</string>
+    <string name="alert_dialog_yes" msgid="6674268047820703974">"Yes"</string>
+    <string name="alert_dialog_no" msgid="1476091437797628703">"No"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"ပယ်ရန်"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"ဝန်ဆောင်မှု"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"ပြင်ဆင်သည်"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"ပြင်ဆင်သတ်မှတ်သည်"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"မသတ်မှတ်ထားပါ"</string>
     <string name="other_settings" msgid="3672912580359716394">"တခြားခေါ်ဆိုမှုဆိုင်ရာ ဆက်တင်"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> မှ ခေါ်ဆိုခြင်း"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"လိပ်စာရွေးပါ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"အသံခေါ်ဆိုမှု ထောက်ံပံ့ခြင်းမရှိပါ"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ဖုန်းခေါ်ခြင်း"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"တုန်ခါခြင်း"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"တုန်ခါခြင်း"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"အမြင် အသံမေးလ်"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"အသံ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"ပင်နံပါတ်သတ်မှတ်ရန်"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"ပင်နံပါတ်ပြောင်းပါ"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ဖုန်းမြည်သံ &amp; တုန်ခါသံ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"တပ်ဆင်ပြီး ဆင်းမ် ကဒ်များ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ဗီဒီယို ခေါ်ဆိုမှုများကို ဖွင့်ထားရန်"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"အရေးပေါ် ခေါ်ဆိုမှုသာလျှင်"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM ကဒ်၊ အပေါက်: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ရယူသုံးနိုင်မှု"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ဝင်လာသော ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"အောက်ပါမှ Wi-Fi ခေါ်ခြင်း"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"ဝိုင်ဖိုင်ခေါ်ဆိုမှု"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ဖွင့်ရန် ထပ်ပြီး ထိပါ"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ဖွင့်ရန် ထပ်တို့ပါ"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"စာကို ကုဒ်ဖွင့်နေစဉ် အမှားရှိခဲ့သည်။"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM ကဒ်သည် သင့် ဖုန်းဝန်ဆောင်မှုအား အသက်သွင်းခဲ့ပြီး သင့်ဖုန်း၏ ကွန်ယက်ပြင်ပဒေတာသုံးနိုင်စွမ်းအား ပြင်ဆင်မွမ်းမံပြီးဖြစ်၏။"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"လက်ရှိခေါ်ဆိုမှုများ အလွန်များနေပါသည်။ ခေါ်ဆိုမှုအသစ်တစ်ခု မပြုလုပ်ခင် လက်ရှိဖုန်းခေါ်ဆိုမှုများကို အဆုံးသတ် (သို့) ပေါင်း လိုက်ပါ။"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"ချိတ်ဆက် မရပါ၊ ကျေးဇူးပြုပြီး မှန်ကန်သည့် SIM ကဒ်ကို ထည့်ပေးပါ။"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi ချိတ်ဆက်မှု ပြတ်တောက်သွားပါသည်။ ခေါ်ဆိုမှု ရပ်တန့်သွားပါပြီ။"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"အသံမေးလ်ပင်နံပါတ် ပြောင်းရန်"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ဆက်လုပ်ရန်"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"မလုပ်တော့"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"အိုကေ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"သင့်ပင်နံပါတ်အဟောင်းကို အတည်ပြုရန်"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ဆက်လုပ်ရန် သင့်အသံမေးလ်ပင်နံပါတ် ထည့်ပါ။"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"ပင်နံပါတ်အသစ် သတ်မှတ်ရန်"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"ပင်နံပါတ်တွင် ဂဏန်း <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> လုံး ပါရှိရမည်။"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ပင်နံပါတ်အတည်ပြုရန်"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"ပင်နံပါတ်များ မကိုက်ညီပါ"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"အသံမေးလ်ပင်နံပါတ် အပ်ဒိတ်လုပ်ပြီးပါပြီ"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ပင်နံပါတ်သတ်မှတ်၍ မရပါ"</string>
 </resources>
diff --git a/res/values-nb/config.xml b/res/values-nb/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-nb/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3b7742e..0eec443 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobildata"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobildata"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefontjenester"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Nødnummer"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Mangler nummer til talepostkasse"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Det er ikke lagret noe nummer for talepostkasse på SIM-kortet."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Legg til nummer"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Talepost-innstillinger kan bare endres av hovedbrukeren."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM-kortet er blitt avblokkert. Telefonen låses opp…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN-kode for å fjerne operatørlås"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Lås opp"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Spør om fjerning av operatørlås…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Fikk ikke fjerne operatørlås."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Operatørlåsen er fjernet."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Innstillingene for mobilnettverk er ikke tilgjengelige for denne brukeren"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Innstillinger for mobilnettverk er ikke tilgjengelig for denne brukeren"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Innstillinger for GSM-samtaler"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Anropsinnstillinger for GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Innstillinger for CDMA-samtaler"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Ring med"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Foreta SIP-anrop med"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Spør først"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Ingen tilgjengelige nettverk"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Innstillinger"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Velg kontoer"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefonkontoer"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Talepostkasse"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Talepostkasse (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Svarer:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Varsler"</string>
     <string name="networks" msgid="8873030692174541976">"Nettoperatører"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Nødvarsler"</string>
     <string name="call_settings" msgid="6112441768261754562">"Samtaleinnstillinger"</string>
@@ -95,7 +98,7 @@
     <string name="call_forwarding_settings" msgid="3378927671091537173">"Innstillinger for viderekobling"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Innstillinger for viderekobling (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Viderekobling"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"Alltid viderekoble"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Viderekoble alltid"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Bruk alltid dette nummeret"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Viderekoble alle anrop"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"Viderekobler alle anrop til <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
@@ -106,25 +109,25 @@
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"Viderekobler til <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Av"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Operatøren støtter ikke deaktivering av viderekobling når telefonen er opptatt."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"Når ingen svarer"</string>
-    <string name="messageCFNRy" msgid="672317899884380374">"Nummer når ingen svarer"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Når jeg ikke svarer"</string>
+    <string name="messageCFNRy" msgid="672317899884380374">"Nummer når jeg ikke svarer"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Viderekobler til <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Av"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Operatøren støtter ikke deaktivering av viderekobling når anropet ikke besvares."</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"Når mottaker ikke nås"</string>
-    <string name="messageCFNRc" msgid="6380695421020295119">"Nummer når mottaker ikke kan nås"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Når jeg ikke kan nås"</string>
+    <string name="messageCFNRc" msgid="6380695421020295119">"Nummer når jeg ikke kan nås"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Viderekobler til <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Slått av"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Av"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatøren støtter ikke deaktivering av viderekobling når telefonen er utenfor dekning."</string>
     <string name="updating_title" msgid="6146755386174019046">"Samtaleinnstillinger"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Anropsinnstillinger kan bare endres av hovedbrukeren."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Anropsinnstillinger kan bare endres av administratoren."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Innstillinger (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Feil ved samtaleinnstillinger"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Leser innstillingene …"</string>
     <string name="updating_settings" msgid="8171225533884883252">"Oppdaterer innstillinger…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Tilbakestiller innstillinger ..."</string>
     <string name="response_error" msgid="6674110501330139405">"Uventet svar fra nettverket."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Nettverks- eller SIM-kort-feil."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Nettverks- eller SIM-kortfeil."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS-forespørselen er endret til en DIAL-forespørsel."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS-forespørselen er endret til en USSD-forespørsel."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS-forespørselen er endret til en ny SS-forespørsel."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Ingen endringer ble utført."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Velg leverandør for talepostkasse"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatøren din"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobilnettinnstillinger"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gammel PIN-kode"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny PIN-kode"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Vent litt."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nye PIN-koden er for kort."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nye PIN-koden er for lang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Den nye PIN-koden er for svak. Sterke passord inneholder ikke sammenhengende sekvenser eller gjentatte sifre."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Den gamle PIN-koden er feil."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Den nye PIN-koden inneholder ugyldige tegn."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Kan ikke bytte PIN-kode"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Meldingstypen støttes ikke. Ring <xliff:g id="NUMBER">%s</xliff:g> for å høre."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Innstillinger for mobilnettverk"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilnettverk"</string>
     <string name="label_available" msgid="1181658289009300430">"Tilgjengelige nettverk"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Søker …"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Fant ingen nettverk."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrert i nettverket."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Velg en nettverksoperatør"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Søk etter alle tilgjengelige nettverk"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Velg automatisk"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Velg foretrukket nettverk automatisk"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Velg nettverk automatisk"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Nettverk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatisk registrering"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Foretrukket nettverkstype"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Bytt nettverksmodus"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Bare GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA foretrukket"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Anrop"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Nettverk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Forbedret 4G LTE-modus"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Avansert ringemodus"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Bruk LTE-tjenester for å forbedre stemme- og andre typer kommunikasjon (anbefalt)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data aktivert"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Tillat databruk"</string>
-    <string name="roaming" msgid="8871412572928323707">"Dataroaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Obs!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Koble til datatjenester ved roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Koble til datatjenester ved roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Du har mistet datatilkoblingen fordi du forlot hjemmenettet med roaming avslått."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Det kan medføre betydelige kostnader."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillate roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Databruk"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobildata brukt mellom <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatør"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobildata"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Bruk data via mobilnettverket"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-anrop"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videoanrop via mobiloperatør"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS-innstillinger"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-innstillinger"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Databruk"</string>
@@ -224,7 +250,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datahastigheten reduseres til <xliff:g id="USED">%1$d</xliff:g> Kb/s hvis databruken overskrider grenseverdien"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Mer informasjon om mobiloperatørens retningslinjer for bruk av nettverksdata"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Les mer om mobiloperatørens retningslinjer for bruk av nettverksdata"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Kringkastings-SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Kringkastings-SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Kringkastings-SMS aktivert"</string>
@@ -233,7 +259,7 @@
     <string name="enable_disable_emergency_broadcast" msgid="2157014609041245335">"Nødkringkasting"</string>
     <string name="emergency_broadcast_enable" msgid="2645980025414010211">"Nødkringkasting aktivert"</string>
     <string name="emergency_broadcast_disable" msgid="3665199821267569426">"Nødkringkasting deaktivert"</string>
-    <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativia"</string>
+    <string name="enable_disable_administrative" msgid="6501582322182059412">"Administrativ"</string>
     <string name="administrative_enable" msgid="1750086122962032235">"Administrativia aktivert"</string>
     <string name="administrative_disable" msgid="8433273857248698539">"Administartivia aktivert"</string>
     <string name="enable_disable_maintenance" msgid="1819693083025106678">"Vedlikehold"</string>
@@ -314,7 +340,7 @@
     <string name="multi_category_disable" msgid="880104702904139505">"Multikategori deaktivert"</string>
     <string name="network_lte" msgid="7702681952521375754">"LTE (anbefales)"</string>
     <string name="network_4G" msgid="2723512640529983138">"4G (anbefales)"</string>
-    <string name="network_global" msgid="1323190488685355309">"Global"</string>
+    <string name="network_global" msgid="1323190488685355309">"Globalt"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"Systemvalg"</string>
     <string name="cdma_system_select_summary" msgid="60460043745797517">"Velg roamingmodus for CDMA"</string>
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Systemvalg"</string>
@@ -349,8 +375,8 @@
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Slå av faste numre"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Slå på faste numre"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Vedlikehold liste over faste numre"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Endre PIN-kode for å styre faste numre"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Administrer liste over telefonnumre"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Endre PIN-koden som gir tilgang til faste numre"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Administrer listen med telefonnumre"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Personvern for Google Voice"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Aktiver forbedret personvern"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY-modus"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Legg til kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Rediger kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Fjern kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Ring kontakten"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Skriv inn PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Navn"</string>
     <string name="number" msgid="7905950798349903858">"Nummer"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Sletter programmert telefonnummer ..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Programmert telefonnummer er slettet."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN er ikke oppdatert fordi du skrev inn feil PIN-kode."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ble ikke oppdatert fordi tallet ikke kan overstige 20 sifre."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Det programmerte telefonnummeret kan ikke oppdateres fordi det er er tomt eller inneholder over 20 sifre."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Fast nummer ble ikke oppdatert. PIN2 var feil, eller telefonnummeret ble avvist."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN-handlingen mislyktes."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Leser fra SIM-kort …"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Mangler nummer til talepostkasse"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ingen tjeneste"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Valgt nettverk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) er ikke tilgjengelig"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Slå av flymodus for å ringe."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Slå på mobilnettverket, slå av flymodus eller slå av batterisparingsmodus for å ringe ut."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Slå av flymodus for å ringe."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Slå av flymodus eller koble til et trådløst nettverk for å ringe."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Avslutt modusen for nødanrop for å gjøre et vanlig anrop."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ikke registrert på nettverket."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilnettverket er ikke tilgjengelig."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilnettverk er ikke tilgjengelig. Koble til et trådløst nettverk for å ringe."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilnettverket er ikke tilgjengelig."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilnettverk er ikke tilgjengelig. Koble til et trådløst nettverk for å ringe."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Skriv inn et gyldig nummer for å plassere en samtale."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Kan ikke ringe."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Begynner MMI-sekvens…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Anropet mislyktes."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Anropet kan ikke legges til akkurat nå."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Tjenesten støttes ikke"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Kan ikke bytte samtaler."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Kan ikke splitte opp samtale."</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Kan ikke opprette telefonmøte."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan ikke avvise anropet."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan ikke frigjøre samtale(r)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan ikke sette samtaler på vent."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Koble til et trådløst nettverk for å ringe."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Slå på telefonanrop via Wi-Fi for å ringe."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nødanrop"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Slår på radio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjeneste. Prøver på nytt …"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Du kan ikke slå på flymodus under nødsamtaler."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Kan ikke ringe. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> er ikke et nødnummer."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Kan ikke ringe. Ring et nødnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Bruk tastaturet for å ringe"</string>
@@ -470,8 +501,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importer alle"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importerer kontakter fra SIM-kortet"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importer fra kontakter"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakten er importert"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kunne ikke importere kontakten"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Høreapparater"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Slå på kompatibilitet med høreapparat"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Slå på kompatibilitet med høreapparater"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY av"</item>
     <item msgid="3971695875449640648">"TTY full"</item>
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Startet modusen nødsamtale-tilbakeringing"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modusen nødsamtale-tilbakeringing"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Datatilkobling deaktivert"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Ingen datatilkobling i <xliff:g id="COUNT_1">%s</xliff:g> minutter</item>
-      <item quantity="one">Ingen datatilkobling i <xliff:g id="COUNT_0">%s</xliff:g> minutt</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Ingen datatilkobling før <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefonen er i nødsamtalemodus i <xliff:g id="COUNT_1">%s</xliff:g> minutter. Når telefonen er i denne modusen, kan du ikke bruke apper som krever datatilkobling. Vil du avslutte nå?</item>
       <item quantity="one">Telefonen er i nødsamtalemodus i <xliff:g id="COUNT_0">%s</xliff:g> minutt. Når telefonen er i denne modusen, kan du ikke bruke apper som krever datatilkobling. Vil du avslutte nå?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"velg kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Taleanrop støttes ikke"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ring"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrering"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrering"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuell talepostkasse"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Lyd"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Angi PIN-kode"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Bytt PIN-kode"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringetone og vibrering"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Innebygde SIM-kort"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Slå på videosamtaler"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Kun nødanrop"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kort, spor: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Tilgjengelighet"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi-oppringing inn"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-anrop fra"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Oppringing via Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Trykk på nytt for å åpne"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Trykk på nytt for å åpne"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Det oppsto en feil under dekoding av meldingen."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Et SIM-kort har aktivert tjenesten din og oppdatert roamingfunksjonene for telefonen din."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Du har for mange aktive samtaler. Avslutt eller slå sammen eksisterende samtaler før du starter en ny samtale."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Kunne ikke koble til. Sett inn et gyldig SIM-kort."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Samtalen ble avsluttet fordi Wi-Fi-forbindelsen ble brutt."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Endre PIN-kode for talemeldinger"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Fortsett"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Avbryt"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Bekreft den gamle PIN-koden din"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Skriv inn PIN-koden for talemeldinger for å fortsette."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Angi en ny PIN-kode"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-koden må bestå av <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> sifre."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Bekreft PIN-koden"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-kodene stemmer ikke overens"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-koden for talemeldinger ble oppdatert"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kan ikke angi PIN-kode"</string>
 </resources>
diff --git a/res/values-ne-rNP/arrays.xml b/res/values-ne/arrays.xml
similarity index 100%
rename from res/values-ne-rNP/arrays.xml
rename to res/values-ne/arrays.xml
diff --git a/res/values-ne/config.xml b/res/values-ne/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ne/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne/strings.xml
similarity index 84%
rename from res/values-ne-rNP/strings.xml
rename to res/values-ne/strings.xml
index d4ef050..f0b65e0 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"सेलुलर डेटा"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"मोबाइल डेटा"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"फोन सेवाहरू"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"आपतकालीन डायल गर्ने"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"फोन"</string>
@@ -29,7 +29,7 @@
     <string name="ussdRunning" msgid="485588686340541690">"USSD कोड चल्दै..."</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"MMI कोड रद्द गरियो।"</string>
     <string name="cancel" msgid="5044513931633602634">"रद्द गर्नुहोस्"</string>
-    <string name="enter_input" msgid="1810529547726803893">"USSD सन्देश  <xliff:g id="MIN_LEN">%d</xliff:g> र <xliff:g id="MAX_LEN">%d</xliff:g> अक्षरहरूका बिच हुनै पर्दछ। कृपया पुनःप्रयास गर्नुहोस्।"</string>
+    <string name="enter_input" msgid="1810529547726803893">"USSD सन्देश  <xliff:g id="MIN_LEN">%d</xliff:g> र <xliff:g id="MAX_LEN">%d</xliff:g> अक्षरहरूका बीच हुनै पर्दछ। कृपया पुनःप्रयास गर्नुहोस्।"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"सम्मेलन कल प्रबन्ध गर्नुहोस्"</string>
     <string name="ok" msgid="3811371167865772377">"ठीक छ"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"स्पिकर"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"भ्वाइसमेल नम्बर हराइरहेको छ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM कार्डमा कुनै पनि भ्वाइसमेल नम्बर भण्डारण भएको छैन।"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"नम्बर थप्नुहोस्"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"प्राथमिक प्रयोगकर्ताले मात्र भ्वाइस मेल सेटिङहरू परिमार्जन गर्न सक्नुहुन्छ।"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"तपाईँको SIM कार्ड अनब्लक गरिएको छ। तपाईँको फोन अनलक हुँदैछ ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM नेटवर्क अनलक PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"अनलोक गर्नुहोस्"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"नेटवर्क अनलक गर्न अनुरोध गर्दै..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"नेटवर्क अनलक अनुरोध असफल"</string>
     <string name="unlock_success" msgid="6770085622238180152">"नेटवर्क अनलक सफल।"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"सेलुलर सञ्जाल सेटिङहरू यस प्रयोगकर्ताको लागि उपलब्ध छैनन्"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"मोबाइल सञ्जाल सेटिङ्हरू यस प्रयोगकर्ताको लागि उपलब्ध छैनन्"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM कल सेटिङहरू"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM कल सेटिङहरू (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA कल सेटिङहरू"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"मार्फत कल गर्नुहोस्"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"मार्फत SIP कलहरू गर्नुहोस्"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"पहिले सोध्नुहोस्"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"कुनै नेटवर्क उपलब्ध छैन"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"सेटिङहरू"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"खाता छान्नुहोस्"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"फोन खाता"</string>
@@ -75,8 +77,9 @@
     <string name="voicemail" msgid="8693759337917898954">"भ्वाइसमेल"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"भ्वाइस मेल (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"सूचनाहरू"</string>
     <string name="networks" msgid="8873030692174541976">"नेटवर्क संचालकहरू"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"आकस्मिक प्रसारणहरू"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"आपतकालीन प्रसारणहरू"</string>
     <string name="call_settings" msgid="6112441768261754562">"कल सेटिङहरू"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"अतिरिक्त सेटिङहरू"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"अतिरिक्त सेटिङ ( <xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g> )"</string>
@@ -101,25 +104,25 @@
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"सम्पूर्ण कलहरू <xliff:g id="PHONENUMBER">{0}</xliff:g>मा फर्वार्ड गरिदै"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"नम्बर उपलब्ध छैन"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"निस्कृय"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"जब व्यस्त"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"व्यस्त हुँदा"</string>
     <string name="messageCFB" msgid="3711089705936187129">"व्यस्त हुँदा नम्बर"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> मा फर्वाड गर्दै"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"निस्कृय"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"तपाईंको फोन व्यस्त रहँदा तपाईंको अपरेटरले कल-फर्वार्डिङ असक्षम बनाउँदा समर्थन गर्दैन।"</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"जब अनुत्तरित"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"उत्तर नआउँदा"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"अनुत्तरित हुँदाको नम्बर"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> मा फर्वाड गर्दै"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"निस्कृय"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"तपाईंको फोनले जवाफ नदिँदा तपाईंको अपरेटरले कल-फर्वार्डिङ असक्षम बनाउँदा समर्थन गर्दैन।"</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"जब पहुँचअयोग्य"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"पहुँचयोग्य नहुँदा"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"पहुँचयोग्य हुँदाको नम्बर"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> मा फर्वाड गर्दै"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"असक्षम पारियो"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"बन्द गर्नुहोस्"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"तपाईंको फोन पहुँचयोग्य नहुँदा तपाईंको केरियरले कल-फर्वार्डिङ असक्षम बनाउँदा समर्थन गर्दैन।"</string>
     <string name="updating_title" msgid="6146755386174019046">"कल सेटिङहरू"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"कल सेटिङहरू केवल प्राथमिक प्रयोगकर्ताद्वारा मात्र परिवर्तन गर्न सकिन्छ।"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"कल सेटिङहरू केवल प्रशासकीय प्रयोगकर्ताद्वारा परिवर्तन गर्न सकिन्छ।"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"सेटिङहरू (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"कल सेटिङ त्रुटि"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"कल सेटिङमा त्रुटि"</string>
     <string name="reading_settings" msgid="1920291699287055284">"सेटिङहरू पढ्दै..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"सेटिङहरू अद्यावधिक गर्दै..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"सेटिङहरू उल्टाउँदै..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"केही पनि फेरबदल गरिएन।"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"भ्वाइसमेल सेवा छान्नुहोस्"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"तपाईंको वाहक"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"सेलुलर सञ्जाल सेटिङहरू"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"पुरानो PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"नयाँ PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"कृपया प्रतीक्षा गर्नुहोस्।"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"नयाँ PIN अत्यन्त छोटो छ।"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"नयाँ PIN अत्यन्त लामो छ।"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"नयाँ PIN अत्यन्त कमजोर छ। बलियो पासवर्डमा लगातारको अनुक्रम वा दोहोरिएका अङ्कहरू हुनु हुँदैन।"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"पुरानो PIN मेल खाँदैन।"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"नयाँ PIN मा अमान्य वर्णहरू छन्।"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN परिवर्तन गर्न सकिएन"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"सन्देशको असमर्थित प्रकार, सुन्नका लागि <xliff:g id="NUMBER">%s</xliff:g> मा कल गर्नुहोस्।"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"मोबाइल नेटवर्क सेटिहरू"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"मोबाइल नेटवर्क"</string>
     <string name="label_available" msgid="1181658289009300430">"उपलब्ध नेटवर्कहरू"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"खोजी गर्दै..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"कुनै नेटवर्कहरू भेटिएनन्।"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"नेटवर्कमा दर्ता भयो।"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"नेटवर्क संचालक रोज्नुहोस्"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"सम्पूर्ण उपलब्ध नेटवर्कहरूको खोजी कार्य गर्नुहोस्"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"स्वतः छनौट गर्नुहोस्"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"स्वचालित रूपले रुचाइएका नेटवर्क छान्नुहोस्"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"नेटवर्क स्वत:छान्नुहोस्"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"नेटवर्क"</string>
     <string name="register_automatically" msgid="6017849844573519637">"स्वतः दर्ता..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"रुचाइएको सञ्जाल प्रकार"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"नेटवर्क संचालन मोड परिवर्तन गर्नुहोस्"</string>
@@ -196,29 +210,41 @@
     <item msgid="1524224863879435516">"GSM मात्र"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA रुचाइएका"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"कल गर्दै"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"नेटवर्क"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"उन्नत कल गरिँदै"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"आवाज र अन्य सञ्चार सुधार गर्न LTE सेवाहरूको प्रयोग गर्नुहोस् (सिफारिस गरिएको)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"डेटा सक्षम भयो"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"डेटा उपयोगलाई अनुमति दिनुहोस्"</string>
-    <string name="roaming" msgid="8871412572928323707">"डेटा रोमिङ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ध्यानाकर्षण"</string>
+    <string name="roaming" msgid="7894878421600247140">"रोमिङ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"रोमिङको समयमा डेटा सेवामा जडान गर्नुहोस्"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"रोमिङको समयमा डेटा सेवा जडान गर्नुहोस्"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"तपाईँले डेटा गुमाउनु भएको छ किनभने तपाईँले डेटासहितको घर नेटवर्क रोमिङ बन्द गरेर छोड्नुभएको छ।"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"तपाईंलाई महत्त्वपूर्ण शुल्क लाग्न सक्छ।"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"डेटा रोमिङको अनुमति दिने हो?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"डेटाको प्रयोग"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> देखि <xliff:g id="ID_2">%2$s</xliff:g> सम्म प्रयोग भएको मोबाइल डेटा"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"सेवा प्रदायक"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"मोबाइल डेटा"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"मोबाइल नेटवर्कको प्रयोग गरी डेटामाथि पहुँच गर्नुहोस्"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi कल"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"सेवा प्रदायकको भिडियो कल"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS  विकल्पहरू"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA विकल्पहरू"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"डेटा उपयोग"</string>
     <string name="throttle_current_usage" msgid="8762280193043815361">"हालको अवधिमा प्रयोग भएको डेटा"</string>
-    <string name="throttle_time_frame" msgid="1915198770363734685">"डेटा प्रयोग अवधि"</string>
+    <string name="throttle_time_frame" msgid="1915198770363734685">"डेटाको प्रयोग अवधि"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"डेटा दर नीति"</string>
     <string name="throttle_help" msgid="243651091785169900">"बढी सिक्नुहोस्"</string>
     <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) को <xliff:g id="USED_2">%3$s</xliff:g> अवधि अधिकतम\nअर्को अवधिले <xliff:g id="USED_3">%4$d</xliff:g> दिनमा सुरु गर्दछ (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) को <xliff:g id="USED_2">%3$s</xliff:g> अवधि अधिकतम"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> अधिकतम बढीमा \n डेटा दरमा कम <xliff:g id="USED_1">%2$d</xliff:g> KB /s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ को चक्र बितेको \nअर्को समय <xliff:g id="USED_1">%2$d</xliff:g> दिनमा सुरु हुन्छ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
-    <string name="throttle_rate_subtext" msgid="2149102656120726855">"यदि डेटा प्रयोग गर्न सिमित पार भएको छ भने  <xliff:g id="USED">%1$d</xliff:g> Kb/s मा डेटा दर घटेको छ"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"तपाईँको केरियरक मोबाइल सञ्जाल डेटा प्रयोग नीतिको बारेमा थप जानकारी"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"यदि डेटाको प्रयोग गर्न सिमित पार भएको छ भने  <xliff:g id="USED">%1$d</xliff:g> Kb/s मा डेटा दर घटेको छ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"तपाईंको केरियरको मोबाइल नेटवर्क डेटाको प्रयोग नीतिको बारेमा अधिक जानकारी"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"सेल प्रसारण SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"सेल प्रसारण SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"सेल प्रसारण SMS सक्षम"</string>
@@ -317,7 +343,7 @@
     <item msgid="1205664026446156265">"स्वतः"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA सदस्यता"</string>
-    <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/SIM र NV का बिच परिवर्तन गर्नुहोस्"</string>
+    <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/SIM र NV का बीच परिवर्तन गर्नुहोस्"</string>
     <string name="cdma_subscription_dialogtitle" msgid="2699527950523333110">"सदस्यता"</string>
   <string-array name="cdma_subscription_choices">
     <item msgid="2258014151300708431">"RUIM/SIM"</item>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"सम्पर्क थप्नुहोस्"</string>
     <string name="menu_edit" msgid="7143003705504672374">"सम्पर्क सम्पादन गर्नुहोस्"</string>
     <string name="menu_delete" msgid="3977150783449642851">"सम्पर्क मेटाउनुहोस्"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"डायल गर्ने सम्पर्क"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 प्रकार"</string>
     <string name="name" msgid="7329028332786872378">"नाम"</string>
     <string name="number" msgid="7905950798349903858">"नम्बर"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"स्थिर डायल गर्ने नम्बर मेट्दै..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"स्थिर डायल गर्ने नम्बर मेटियो।"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN अद्यावधिक भएको थिएन किनकि तपाईंले गलत PIN टाइप गर्नुभयो।"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN अद्यावधिक गरिएन किनकि नम्बर २० अङ्कभन्दा माथि हुन सक्दैन।"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"नम्बर प्रविष्ट नगरिएकाले वा २० अङ्कको सीमा नाघेकाले FDN अद्यावधिक गरिएन।"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN अद्यावधिक भएको थिएन। PIN2 गलत थियो वा फोन नम्बर अस्वीकार भएको थियो।"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN कार्य बिफल भयो।"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM कार्ड पढ्दै..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"अज्ञात भवाइसमेल नम्बर"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"सेवा छैन"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"चयन गरिएको नेटवर्क ( <xliff:g id="OPERATOR_NAME">%s</xliff:g> ) अनुपलब्ध"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"मोबाइल नेटवर्क सक्रिय पार्नुहोस्, कल गर्न हवाइजहाज मोड वा ब्याट्री सेवर मोड निष्क्रिय पार्नुहोस्।"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस्।"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"एक कल गर्न हवाइजहाज मोड बन्द गर्नुहोस् वा एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"गैर-आपतकालीन कल गर्न आपतकालीन कलब्याक मोडबाट निस्कनुहोस्।"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"नेटवर्कमा दर्ता भएको छैन।"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"सेलुलर सञ्जाल उपलब्ध छैन।"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"सेलुलर सञ्जाल उपलब्ध छैन। एक कल गर्न ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"मोबाइल नेटवर्क उपलब्ध छैन।"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"मोबाइल नेटवर्क उपलब्ध छैन। कल गर्न तारविनाको नेटवर्कमा जडान गर्नुहोस्।"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्ट गर्नुहोस्।"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"कल गर्न सक्दैन।"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI अनुक्रम सुरु गर्दै..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"कल विफल भयो।"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"यतिबेला कल थप गर्न सकिँदैन।"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"सेवा समर्थित छैन"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"कल स्विच गर्न सक्दैन।"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"कल अलग गर्न सक्दैन।"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"सम्मेलन कलहरू गर्न असमर्थ।"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"कल अस्वीकार गर्न सक्दैन।"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"कल (हरू) जारी गर्न सकिँदैन ।"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"कल सञ्चालन गर्न सकिँदैन।"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"एक कल गर्न एक ताररहितको सञ्जालमा जडान गर्नुहोस्।"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"कल गर्नका लागि Wi-Fi कलिङ सक्षम गर्नुहोस्।"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"आपतकालीन कल"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"रेडियो खोल्दै..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"कुनै सेवा छैन। फेरि प्रयास गर्दै ..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"आपतकालीन कलको समयमा हवाइजहाज मोडमा प्रविष्ट गर्न सक्दैन।"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"कल गर्न सकिँदैन। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> आपतकालीन नम्बर होइन।"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"कल गर्न सकिँदैन। आपतकालीन नम्बर डायल गर्नुहोस्।"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"डायल गर्न किबोर्ड प्रयोग गर्नुहोस्"</string>
@@ -464,7 +495,9 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"सबै आयात गर्नुहोस्"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM सम्पर्कहरू आयात गर्दै"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"सम्पर्कहरूबाट आयात गर्नुहोस्"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"श्रवण सहयोगी"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"आयातित सम्पर्क"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"सम्पर्क आयात गर्न असफल"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"श्रवणका लागि सहयोगी यन्त्रहरू"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"श्रवण सहायता अनुकूलता खोल्नुहोस्"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY बन्द"</item>
@@ -479,13 +512,13 @@
     <item msgid="2883365539347850535">"लामो"</item>
   </string-array>
     <string name="network_info_message" msgid="7738596060242881930">"सञ्जाल सन्देश"</string>
-    <string name="network_error_message" msgid="3394780436230411413">"त्रुटि सन्देश"</string>
+    <string name="network_error_message" msgid="3394780436230411413">"त्रुटिसम्बन्धी सन्देश"</string>
     <string name="ota_title_activate" msgid="8616918561356194398">"तपाईंको फोन सक्रिय गर्नुहोस्"</string>
     <string name="ota_touch_activate" msgid="6553212803262586244">"विशेष कललाई तपाईंको फोन सेवा सक्रिय गर्न जरुरी हुन्छ। \n \n \"सक्रिय\" थिचेर तपाईंको फोन  सक्रिय गर्न दिएका निर्देशनहरू सुन्नुहोस्।"</string>
     <string name="ota_hfa_activation_title" msgid="2234246934160473981">"सक्रिय गर्दै…"</string>
     <string name="ota_hfa_activation_dialog_message" msgid="8092479227918463415">"फोनले तपाईँको मोबाइल डेटा सेवा सक्रिय पार्दै छ। \n\nयसले ५ मिनेटसम्म समय लिन सक्छ।"</string>
     <string name="ota_skip_activation_dialog_title" msgid="2943366608272261306">"सक्रिया गर्ने काम छोड्ने हो?"</string>
-    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"यदि तपाईँ सक्रियता छोड्नुहुन्छ भने तपाईँ कल वा मोबाइल डेटा नेटवर्क (तपाईँ वाइफाइ नेटवर्क जडान गर्न सक्नु हुन्छ) बाट जडान गर्न सक्नु हुन्छ। तपाईँले आफ्नो फोनलाई सक्रिय गर्ने बेलासम्म तपाईँ यसलाई हरेक पटक खोल्ने गर्नुहोस्।"</string>
+    <string name="ota_skip_activation_dialog_message" msgid="2440770373498870550">"यदि तपाईं सक्रियता छोड्नुहुन्छ भने तपाईं कल वा मोबाइल डेटा नेटवर्क (तपाईं Wi-Fi नेटवर्क जडान गर्न सक्नु हुन्छ) बाट जडान गर्न सक्नु हुन्छ। तपाईंले आफ्नो फोनलाई सक्रिय गर्ने बेलासम्म तपाईं यसलाई हरेक पटक खोल्ने गर्नुहोस्।"</string>
     <string name="ota_skip_activation_dialog_skip_label" msgid="3458532775091563208">"छोड्नुहोस्"</string>
     <string name="ota_activate" msgid="1368528132525626264">"सक्रिय बनाउनुहोस्"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"फोन सक्रिय भएको छ।"</string>
@@ -504,17 +537,14 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"आपतकालीन कलब्याक मोड प्रविष्टि गरियो"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"आपतकालीन कलब्याक मोड"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"डेटा जडान अक्षम भयो"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि कुनै डेटा जडान छैन</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि कुनै डेटा जडान छैन</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> सम्म डेटा जडान भएको छैन"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
-      <item quantity="other"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको अवस्थामा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईँ अहिले निस्कन चाहनुहुन्छ?</item>
-      <item quantity="one"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको समयमा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईँ अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="other"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको अवस्थामा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="one"> फोन आपतकालीन कलब्याक मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। यस मोडको समयमा एक डेटा जडान प्रयोग गरेर कुनै पनि अनुप्रयोगहरू प्रयोग गर्न सकिँदैन। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
-      <item quantity="other"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईँ अहिले निस्कन चाहनुहुन्छ?</item>
-      <item quantity="one"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईँ अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="other"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_1">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
+      <item quantity="one"> आपतकालीन कलब्याक मोडको समयमा चयनित कार्य उपलब्ध छैन। फोन यस मोडमा <xliff:g id="COUNT_0">%s</xliff:g> मिनेटको लागि हुनेछ। के तपाईं अहिले निस्कन चाहनुहुन्छ?</item>
     </plurals>
     <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"आपतकालीन कल हुँदा चयन भएको कार्य उपलब्ध हुँदैन।"</string>
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"आपतकालीन कलब्याक मोडबाट निस्कदै"</string>
@@ -526,15 +556,14 @@
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"सेट गरेको छैन"</string>
     <string name="other_settings" msgid="3672912580359716394">"अन्य कल सेटिङहरू"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> को मार्फत कल गर्दै"</string>
-    <string name="contactPhoto" msgid="4713193418046639466">"सम्पर्क फोटो"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"सम्पर्क तस्बिर"</string>
     <string name="goPrivate" msgid="865837794424530980">"निजी जानुहोस्"</string>
     <string name="selectContact" msgid="781975788478987237">"सम्पर्क चयन गर्नुहोस्"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"भ्वाइस कल गर्ने समर्थित छैन"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"डायल"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"भाइब्रेट"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"भाइब्रेट"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"भिजुअल भ्वाइस मेल"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"आवाज:"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN सेट गर्नुहोस्"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN परिवर्तन गर्नुहोस्"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"रिङ्गटोन र भाइब्रेट"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"निर्मित SIM कार्डहरू"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"भिडियो कल खोल्नुहोस्"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"आपातकालीन कल मात्र"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM कार्ड, स्लट: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"पहुँचता"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"आगमन Wi-Fi कल"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"बाट Wi-Fi मार्फत आएको कल"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi कल"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"खोल्न फेरि छुनुहोस्"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"खोल्न पुनः ट्याप गर्नुहोस्"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"सन्देश डिकोड गर्दा एउटा समस्या भयो।"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM कार्डले तपाईँको सेवा सक्रिय गर्नुका तथा फोनको रोमिङ क्षमताहरू पनि अद्यावधिक गरिदिएको छ।"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"धेरै सक्रिय कलहरू छन्। कृपया कुनै नयाँ राख्नु अघि विद्यमान कलहरूलाई अन्त्य वा मर्ज गर्नुहोस्।"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"जडान गर्न सकिएन, कृपया मान्य SIM कार्ड सम्मिलित गर्नुहोस्।"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi जडान विच्छेद भयो। कल समाप्त भयो।"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"भ्वाइस मेलको PIN परिवर्तन गर्नुहोस्"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"जारी राख्नुहोस्"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"रद्द गर्नुहोस्"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ठीक छ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"आफ्नो पुरानो PIN को पुष्टि गर्नुहोस्"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"जारी राख्नका लागि आफ्नो भ्वाइस मेलको PIN प्रविष्ट गर्नुहोस्।"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"एउटा नयाँ PIN सेट गर्नुहोस्"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> अङ्कको हुनुपर्छ।"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"तपाईँको PIN को पुष्टि गर्नुहोस्"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN हरू मेल खाँदैनन्"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"भ्वाइस मेल PIN अद्यावधिक गरियो"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN सेट गर्न असमर्थ भयो"</string>
 </resources>
diff --git a/res/values-nl/config.xml b/res/values-nl/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-nl/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 76f9be3..c9c1b5b 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobiele gegevens"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobiele data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefoonservices"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Kiezer noodoproep"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefoon"</string>
@@ -43,16 +43,17 @@
     <string name="pause_prompt_no" msgid="6686238803236884877">"Nee"</string>
     <string name="wild_prompt_str" msgid="5543521676355533577">"Jokerteken vervangen door"</string>
     <string name="no_vm_number" msgid="4164780423805688336">"Voicemailnummer ontbreekt"</string>
-    <string name="no_vm_number_msg" msgid="1300729501030053828">"Er is geen voicemailnummer op de SIM-kaart opgeslagen."</string>
+    <string name="no_vm_number_msg" msgid="1300729501030053828">"Er is geen voicemailnummer op de simkaart opgeslagen."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Nummer toevoegen"</string>
-    <string name="puk_unlocked" msgid="2284912838477558454">"Je SIM-kaart is gedeblokkeerd. Je telefoon wordt ontgrendeld..."</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Voicemailinstellingen kunnen alleen worden gewijzigd door de primaire gebruiker."</string>
+    <string name="puk_unlocked" msgid="2284912838477558454">"Je simkaart is gedeblokkeerd. Je telefoon wordt ontgrendeld..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Pincode voor ontgrendelen SIM-netwerk"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Ontgrendelen"</string>
     <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Negeren"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"Verzoek om ontgrendelen netwerk..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Verzoek voor ontgrendelen netwerk mislukt."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Het netwerk is ontgrendeld."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Instellingen voor mobiele netwerken zijn niet beschikbaar voor deze gebruiker"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Instellingen voor mobiele netwerken zijn niet beschikbaar voor deze gebruiker"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM-oproepinstellingen"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM-oproepinstellingen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA-oproepinstellingen"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Bellen met"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP-oproepen uitvoeren met"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Eerst vragen"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Geen netwerk beschikbaar"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Instellingen"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Accounts kiezen"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefoonaccounts"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Meldingen"</string>
     <string name="networks" msgid="8873030692174541976">"Mobiele providers"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Nooduitzendingen"</string>
     <string name="call_settings" msgid="6112441768261754562">"Oproepinstellingen"</string>
@@ -84,7 +87,7 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Aanvullende CDMA-oproepinstellingen"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Aanvullende oproepinstellingen voor alleen CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Instellingen voor netwerkservice"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"Beller-id"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"Beller-ID"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"Instellingen laden…"</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Nummer verborgen bij uitgaande oproepen"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Nummer weergegeven bij uitgaande oproepen"</string>
@@ -92,7 +95,7 @@
     <string name="labelCW" msgid="6120513814915920200">"Wisselgesprek"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Inkomende oproepen melden als ik aan het bellen ben"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Inkomende oproepen melden als ik aan het bellen ben"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Doorschakelinstellingen voor oproepen"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Doorschakelinstellingen oproepen"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Doorschakelinstellingen voor oproepen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Oproep doorschakelen"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Altijd doorschakelen"</string>
@@ -101,30 +104,30 @@
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"Alle oproepen doorschakelen naar <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Het telefoonnummer is niet beschikbaar"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"Uit"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"Wanneer bezet"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Indien bezet"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Nummer indien in gesprek"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"Doorschakelen naar <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Uit"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Je provider biedt geen ondersteuning voor het uitschakelen van oproepdoorschakelingen wanneer je telefoon bezet is."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"Wanneer onbeantwoord"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Indien onbeantwoord"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Nummer indien onbeantwoord"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Doorschakelen naar <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Uit"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Je provider biedt geen ondersteuning voor het uitschakelen van oproepdoorschakelingen wanneer je telefoon niet wordt opgenomen."</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"Wanneer niet bereikbaar"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Indien niet bereikbaar"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Nummer indien onbereikbaar"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Doorschakelen naar <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Uitgeschakeld"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Uit"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Je provider biedt geen ondersteuning voor het uitschakelen van oproepdoorschakelingen wanneer je telefoon niet bereikbaar is."</string>
     <string name="updating_title" msgid="6146755386174019046">"Oproepinstellingen"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Oproepinstellingen kunnen alleen worden gewijzigd door de primaire gebruiker."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Oproepinstellingen kunnen alleen worden gewijzigd door de beheerder."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Instellingen (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Fout met oproepinstellingen"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Instellingen lezen..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Instellingen bijwerken..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Instellingen terugzetten..."</string>
     <string name="response_error" msgid="6674110501330139405">"Onverwachte reactie van netwerk."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Netwerk- of SIM-kaartfout."</string>
+    <string name="exception_error" msgid="7027667130619518211">"Netwerk- of simkaartfout."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS-verzoek is gewijzigd in DIAL-verzoek."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS-verzoek is gewijzigd in USSD-verzoek."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS-verzoek is gewijzigd in nieuw SS-verzoek."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Er zijn geen wijzigingen aangebracht."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Service voor voicemail selecteren"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Je provider"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Instellingen voor mobiele netwerken"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Oude pincode"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nieuwe pincode"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Een ogenblik geduld."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"De nieuwe pincode is te kort."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"De nieuwe pincode is te lang."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"De nieuwe pincode is niet sterk genoeg. Een sterk wachtwoord mag geen opeenvolgende cijferreeks of herhaalde cijfers bevatten."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"De oude pincode komt niet overeen."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"De nieuwe pincode bevat ongeldige tekens."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Kan pincode niet wijzigen"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Niet-ondersteund berichttype, bel <xliff:g id="NUMBER">%s</xliff:g> om te luisteren."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Instellingen mobiel netwerk"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobiel netwerk"</string>
     <string name="label_available" msgid="1181658289009300430">"Beschikbare netwerken"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Zoeken..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Geen netwerken gevonden."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Geregistreerd op netwerk."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Een mobiele provider kiezen"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Alle beschikbare netwerken zoeken"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Automatisch kiezen"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Voorkeursnetwerk automatisch selecteren"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Netwerk automatisch selecteren"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Netwerk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatische registratie..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Voorkeursnetwerktype"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"De netwerkgebruiksmodus wijzigen"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Alleen GSM"</item>
     <item msgid="3817924849415716259">"Voorkeur voor GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Bellen"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Netwerk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Geoptimaliseerde 4G LTE-modus"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Geavanceerd bellen"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"LTE-services gebruiken voor betere spraak- en andere communicatie (aanbevolen)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Gegevenstoegang aan"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Gegevensgebruik toestaan"</string>
-    <string name="roaming" msgid="8871412572928323707">"Gegevensroaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Let op"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Verbinding maken met gegevensservices tijdens roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Verbinding maken met gegevensservices tijdens roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"De gegevensverbinding is verbroken, omdat je je thuisnetwerk hebt verlaten terwijl gegevensroaming was uitgeschakeld."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Er kunnen hoge roamingkosten in rekening worden gebracht."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Gegevensroaming toestaan?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Datagebruik"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobiele data gebruikt tussen <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Provider"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobiele data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Datatoegang via mobiel netwerk"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Bellen via wifi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Provider videogesprekken"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM-/UMTS-opties"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-opties"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Datagebruik"</string>
@@ -215,10 +241,10 @@
     <string name="throttle_help" msgid="243651091785169900">"Meer informatie"</string>
     <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) van periodemaximum van <xliff:g id="USED_2">%3$s</xliff:g>\nDe volgende periode start over<xliff:g id="USED_3">%4$d</xliff:g> dagen (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) van periodemaximum van <xliff:g id="USED_2">%3$s</xliff:g>"</string>
-    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Maximum van <xliff:g id="USED_0">%1$s</xliff:g> overschreden\nGegevenssnelheid verlaagd tot <xliff:g id="USED_1">%2$d</xliff:g> kB/s"</string>
+    <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Maximum van <xliff:g id="USED_0">%1$s</xliff:g> overschreden\nGegevenssnelheid verlaagd tot <xliff:g id="USED_1">%2$d</xliff:g>  KB/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">" ٪<xliff:g id="USED_0">%1$d</xliff:g>van cyclus verstreken\nDe volgende periode start over <xliff:g id="USED_1">%2$d</xliff:g> dagen (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
-    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Gegevenssnelheid wordt verlaagd tot <xliff:g id="USED">%1$d</xliff:g> kB/s als de limiet voor gegevensgebruik wordt overschreden"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Meer informatie over het beleid voor gegevensgebruik van je mobiele provider"</string>
+    <string name="throttle_rate_subtext" msgid="2149102656120726855">"Gegevenssnelheid wordt verlaagd tot <xliff:g id="USED">%1$d</xliff:g>  KB/s als de limiet voor gegevensgebruik wordt overschreden"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Meer informatie over het beleid voor gegevensgebruik van je mobiele provider"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Infodienstbericht"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS Infodienstbericht"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS Infodienstbericht ingeschakeld"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Contact toevoegen"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Contact bewerken"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Contact verwijderen"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Contact bellen"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Type PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Naam"</string>
     <string name="number" msgid="7905950798349903858">"Nummer"</string>
@@ -369,16 +396,16 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Vast nummer verwijderen..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Vast nummer verwijderd."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN is niet bijgewerkt omdat je een onjuiste pincode hebt ingevoerd."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN is niet bijgewerkt omdat het nummer niet langer kan zijn dan 20 tekens."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN is niet geüpdatet omdat het nummer leeg is of langer is dan twintig tekens."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN is niet bijgewerkt. De PIN2 was onjuist of het telefoonnummer is geweigerd."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN-bewerking mislukt."</string>
-    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lezen vanaf SIM-kaart..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Geen contacten op je SIM-kaart."</string>
+    <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lezen vanaf simkaart..."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Geen contacten op je simkaart."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Contacten selecteren om te importeren"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Schakel de vliegtuigmodus uit om contacten van de simkaart te importeren."</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM pincode in-/uitschakelen"</string>
-    <string name="change_pin" msgid="9174186126330785343">"SIM pincode wijzigen"</string>
-    <string name="enter_pin_text" msgid="8532615714751931951">"SIM pincode:"</string>
+    <string name="change_pin" msgid="9174186126330785343">"Pincode simkaart wijzigen"</string>
+    <string name="enter_pin_text" msgid="8532615714751931951">"Pincode simkaart:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"Oude pincode"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Nieuwe pincode"</string>
     <string name="confirmPinLabel" msgid="257597715098070206">"Nieuwe pincode bevestigen"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Voicemailnummer onbekend"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Geen service"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Geselecteerd netwerk (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) niet beschikbaar"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Schakel de vliegtuigmodus uit om te bellen."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Schakel het mobiele netwerk in, schakel de vliegtuigmodus uit of schakel Batterijbesparing uit om te bellen."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Schakel de vliegtuigmodus uit om te bellen."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Schakel de vliegtuigmodus uit of maak verbinding met een draadloos netwerk om te bellen."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Sluit de modus voor noodoproepen af om een niet-noodoproep te plaatsen."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Niet geregistreerd op netwerk."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobiel netwerk niet beschikbaar."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobiel netwerk is niet beschikbaar. Maak verbinding met een draadloos netwerk om te bellen."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobiel netwerk niet beschikbaar."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobiel netwerk is niet beschikbaar. Maak verbinding met een draadloos netwerk om te bellen."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Als je wilt bellen, moet je een geldig nummer invoeren."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Kan niet bellen."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI-reeks starten..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Oproep mislukt."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Oproep kan momenteel niet worden toegevoegd."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Service wordt niet ondersteund"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Kan niet overschakelen tussen oproepen."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Kan oproep niet scheiden."</string>
@@ -442,12 +470,15 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Telefonische vergaderingen niet mogelijk."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Kan oproep niet weigeren."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Kan oproep(en) niet vrijgeven."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Kan gesprekken niet in de wacht zetten."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Maak verbinding met een draadloos netwerk om te bellen."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Schakel bellen via wifi in om te bellen."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Noodoproep"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio aanzetten..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Geen bereik. Opnieuw proberen…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Kan vliegtuigmodus niet activeren tijdens een noodoproep."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Kan niet bellen. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> is geen alarmnummer."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Kan niet bellen. Bel een alarmnummer."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Bellen niet mogelijk. Bel een alarmnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Toetsen gebruiken om te bellen"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"In de wacht"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"Beëindigen"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Alles importeren"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM-contacten importeren"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importeren uit contacten"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contact geïmporteerd"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kan contact niet importeren"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Gehoorapparaten"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Compatibiliteit voor gehoorapparaat inschakelen"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modus voor noodoproepen ingeschakeld"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modus voor noodoproepen"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Gegevensverbinding uitgeschakeld"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Er is al <xliff:g id="COUNT_1">%s</xliff:g> minuten geen gegevensverbinding</item>
-      <item quantity="one">Er is al <xliff:g id="COUNT_0">%s</xliff:g> minuut geen gegevensverbinding</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Geen dataverbinding tot <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">De telefoon bevindt zich <xliff:g id="COUNT_1">%s</xliff:g> minuten in de modus voor noodoproepen. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wil je nu afsluiten?</item>
       <item quantity="one">De telefoon bevindt zich <xliff:g id="COUNT_0">%s</xliff:g> minuut in de modus voor noodoproepen. In deze modus kunnen geen apps worden gebruikt waarvoor een gegevensverbinding nodig is. Wil je nu afsluiten?</item>
@@ -522,7 +552,7 @@
     <string name="alert_dialog_no" msgid="1476091437797628703">"Nee"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Negeren"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Service"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"Instelling"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Instellen"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Niet ingesteld&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Andere instellingen voor bellen"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"Bellen via <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"contact selecteren"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Spraakoproepen worden niet ondersteund"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"bellen"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Trillen"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Trillen"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuele voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Geluid"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Pincode instellen"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Pincode wijzigen"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Beltoon en trillen"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ingebouwde simkaarten"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Videogesprekken inschakelen"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Alleen noodoproepen"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Simkaart, sleuf: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Toegankelijkheid"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkomende wifi-oproep"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wifi-oproep van"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wifi-oproep"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tik nogmaals om te openen"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tik nogmaals om te openen"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Er is een fout opgetreden tijdens het decoderen van het bericht."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Een simkaart heeft je service geactiveerd en heeft de roaming-mogelijkheden van je telefoon geüpdatet."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Er zijn te veel actieve oproepen. Beëindig bestaande oproepen of voeg ze samen voordat je een nieuwe oproep start."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Kan geen verbinding maken. Plaats een geldige simkaart."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wifi-verbinding verbroken. Oproep beëindigd."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Voicemailpincode wijzigen"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Doorgaan"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Annuleren"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Bevestig je oude pincode"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Geef je voicemailpincode op om door te gaan."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Een nieuwe pincode instellen"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Pincode moet <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> cijfers zijn."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"De pincode bevestigen"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Pincodes komen niet overeen"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Voicemailpincode geüpdatet"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kan pincode niet instellen"</string>
 </resources>
diff --git a/res/values-pa-rIN/arrays.xml b/res/values-pa/arrays.xml
similarity index 100%
rename from res/values-pa-rIN/arrays.xml
rename to res/values-pa/arrays.xml
diff --git a/res/values-pa/config.xml b/res/values-pa/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-pa/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa/strings.xml
similarity index 82%
rename from res/values-pa-rIN/strings.xml
rename to res/values-pa/strings.xml
index 74640be..c2cfd02 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ਸੈਲਿਊਲਰ ਡਾਟਾ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ਫ਼ੋਨ ਸੇਵਾਵਾਂ"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"ਐਮਰਜੈਂਸੀ ਡਾਇਲਰ"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ਫੋਨ"</string>
@@ -45,14 +45,15 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ਲੁਪਤ ਵੌਇਸਮੇਲ ਨੰਬਰ"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM ਕਾਰਡ ਤੇ ਕੋਈ ਵੌਇਸਮੇਲ ਨੰਬਰ ਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"ਨੰਬਰ ਜੋੜੋ"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ਵੌਇਸਮੇਲ ਸੈਟਿੰਗਾਂ ਸਿਰਫ਼ ਪ੍ਰਾਇਮਰੀ ਵਰਤੋਂਕਾਰ ਦੁਆਰਾ ਹੀ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"ਤੁਹਾਡਾ SIM ਕਾਰਡ ਅਨਬਲੌਕ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਹਾਡਾ ਫੋਨ ਅਨੌਲਕ ਹੋ ਰਿਹਾ ਹੈ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM ਨੈਟਵਰਕ ਅਨਲੌਕ PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ਅਨਲੌਕ ਕਰੋ"</string>
-    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਦੀ ਬੇਨਤੀ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਬੇਨਤੀ ਅਸਫਲ।"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ਨੈਟਵਰਕ ਅਨਲੌਕ ਸਫਲ।"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਇਸ ਉਪਭੋਗਤਾ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM ਕਾਲ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
@@ -63,10 +64,11 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"ਇਸ ਨਾਲ ਕਾਲਾਂ ਕਰੋ"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"ਇਸ ਨਾਲ SIP ਕਾਲਾਂ ਕਰੋ"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ਪਹਿਲਾਂ ਪੁੱਛੋ"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ਕੋਈ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ਖਾਤੇ ਚੁਣੋ"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ਫੋਨ ਖਾਤੇ"</string>
-    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ਖਾਤਾ ਜੋੜੋ"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਕੌਂਫਿਗਰ ਕਰੋ"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"ਸਾਰੇ ਕਾਲਿੰਗ ਖਾਤੇ"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"ਚੁਣੋ ਕਿ ਕਿਹੜੇ ਖਾਤੇ ਕਾਲਾਂ ਨੂੰ ਕਰ ਸਕਦੇ ਹਨ"</string>
@@ -75,23 +77,24 @@
     <string name="voicemail" msgid="8693759337917898954">"ਵੌਇਸਮੇਲ"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ਵੌਇਸਮੇਲ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="networks" msgid="8873030692174541976">"ਨੈਟਵਰਕ ਓਪਰੇਟਰ"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"ਐਮਰਜੈਂਸੀ ਪ੍ਰਸਾਰਨ"</string>
     <string name="call_settings" msgid="6112441768261754562">"ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"ਵਾਧੂ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"ਵਾਧੂ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"ਵਧੀਕ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"ਵਧੀਕ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"ਵਾਧੂ ਕੇਵਲ GSM ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"ਵਾਧੂ CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"ਵਾਧੂ ਕੇਵਲ CDMA ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="labelNwService" msgid="4699970172021870983">"ਨੈਟਵਰਕ ਸੇਵਾ ਸੈਟਿੰਗਾਂ"</string>
     <string name="labelCallerId" msgid="3888899447379069198">"ਕਾਲਰ ID"</string>
-    <string name="sum_loading_settings" msgid="1826692909391168620">"ਸੈਟਿੰਗਾਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ..."</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"ਸੈਟਿੰਗਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਲੁਕਾਇਆ ਨੰਬਰ"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਡਿਸਪਲੇ ਕੀਤਾ ਨੰਬਰ"</string>
-    <string name="sum_default_caller_id" msgid="1954518825510901365">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਮੇਰਾ ਨੰਬਰ ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਡਿਫੌਲਟ ਓਪਰੇਟਰ ਸੈਟਿੰਗਾਂ ਵਰਤੋ।"</string>
-    <string name="labelCW" msgid="6120513814915920200">"ਕਾਲ ਵੇਟਿੰਗ"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"ਇੱਕ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"ਇੱਕ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
+    <string name="sum_default_caller_id" msgid="1954518825510901365">"ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ ਵਿੱਚ ਮੇਰਾ ਨੰਬਰ ਡਿਸਪਲੇ ਕਰਨ ਲਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਓਪਰੇਟਰ ਸੈਟਿੰਗਾਂ ਵਰਤੋ।"</string>
+    <string name="labelCW" msgid="6120513814915920200">"ਕਾਲ ਉਡੀਕ ਵਿੱਚ"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"ਕਿਸੇ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"ਕਿਸੇ ਕਾਲ ਦੇ ਦੌਰਾਨ, ਮੈਨੂੰ ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਦੀ ਸੂਚਨਾ ਦਿਓ"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਸੈਟਿੰਗਾਂ"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ"</string>
@@ -101,7 +104,7 @@
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"ਸਾਰੀਆਂ ਕਾਲਾਂ <xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"ਨੰਬਰ ਅਣਉਪਲਬਧ ਹੈ"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"ਬੰਦ"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"ਜਦੋਂ ਰੁੱਝਾ ਹੋਵੇ"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"ਜਦੋਂ ਰੁਝੇਵਾਂ ਹੋਵੇ"</string>
     <string name="messageCFB" msgid="3711089705936187129">"ਜਦੋਂ ਰੁੱਝਾ ਹੋਵੇ ਤਾਂ ਨੰਬਰ"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"ਬੰਦ"</string>
@@ -111,20 +114,20 @@
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"ਬੰਦ"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"ਜਦੋਂ ਤੁਹਾਡਾ ਫੋਨ ਜਵਾਬ ਨਹੀਂ ਦਿੰਦਾ ਤਾਂ ਤੁਹਾਡਾ ਓਪਰੇਟਰ ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।"</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"ਜਦੋਂ ਨਾ ਪਹੁੰਚਯੋਗ ਹੋਵੇ"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"ਜਦੋਂ ਪਹੁੰਚਯੋਗ ਨਾ ਹੋਵੇ"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ਜਦੋਂ ਨਾ ਪਹੁੰਚਯੋਗ ਹੋਵੇ ਤਾਂ ਨੰਬਰ"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> ਨੂੰ ਫੌਰਵਾਰਡ ਕਰ ਰਿਹਾ ਹੈ"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ਅਸਮਰੱਥ ਬਣਾਇਆ"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ਬੰਦ"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ਜਦੋਂ ਤੁਹਾਡਾ ਫੋਨ ਨਾਪਹੁੰਚਯੋਗ ਹੁੰਦਾ ਹੈ ਤਾਂ ਤੁਹਾਡਾ ਕੈਰੀਅਰ ਕਾਲ ਫੌਰਵਾਰਡਿੰਗ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਉਣ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।"</string>
     <string name="updating_title" msgid="6146755386174019046">"ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਕੇਵਲ ਮੁੱਖ ਉਪਭੋਗਤਾ ਵੱਲੋਂ ਬਦਲੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਸਿਰਫ਼ ਪ੍ਰਸ਼ਾਸਕ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਹੀ ਬਦਲੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਅਸ਼ੁੱਧੀ"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਗੜਬੜ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ਸੈਟਿੰਗਾਂ ਪੜ੍ਹ ਰਿਹਾ ਹੈ…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"ਸੈਟਿੰਗਾਂ ਅਪਡੇਟ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"ਸੈਟਿੰਗਾਂ ਵਾਪਸ ਲਿਆ ਰਿਹਾ ਹੈ…"</string>
     <string name="response_error" msgid="6674110501330139405">"ਨੈਟਵਰਕ ਤੋਂ ਅਕਲਪਿਤ ਜਵਾਬ"</string>
-    <string name="exception_error" msgid="7027667130619518211">"ਨੈਟਵਰਕ ਜਾਂ SIM ਕਾਰਡ ਅਸ਼ੁੱਧੀ।"</string>
+    <string name="exception_error" msgid="7027667130619518211">"ਨੈੱਟਵਰਕ ਜਾਂ SIM ਕਾਰਡ ਵਿੱਚ ਗੜਬੜ।"</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"SS ਬੇਨਤੀ DIAL ਬੇਨਤੀ ਵਿੱਚ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀ ਗਈ।"</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"SS ਬੇਨਤੀ USSD ਬੇਨਤੀ ਵਿੱਚ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀ ਗਈ।"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"SS ਬੇਨਤੀ ਨਵੀਂ SS ਵਿੱਚ ਸੰਸ਼ੋਧਿਤ ਕੀਤੀ ਗਈ।"</string>
@@ -135,7 +138,7 @@
     <string name="disable" msgid="4678348128118573672">"ਬੰਦ ਕਰੋ"</string>
     <string name="change_num" msgid="239476305819844391">"ਅਪਡੇਟ"</string>
   <string-array name="clir_display_values">
-    <item msgid="5560134294467334594">"ਨੈਟਵਰਕ ਡਿਫੌਲਟ"</item>
+    <item msgid="5560134294467334594">"ਨੈਟਵਰਕ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</item>
     <item msgid="7876195870037833661">"ਨੰਬਰ ਲੁਕਾਓ"</item>
     <item msgid="1108394741608734023">"ਨੰਬਰ ਦਿਖਾਓ"</item>
   </string-array>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"ਕੋਈ ਬਦਲਾਵ ਨਹੀਂ ਕੀਤੇ ਗਏ ਹਨ।"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"ਵੌਇਸਮੇਲ ਸੇਵਾ ਚੁਣੋ"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"ਤੁਹਾਡਾ ਕੈਰੀਅਰ"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"ਪੁਰਾਣਾ PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"ਨਵਾਂ PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ।"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਛੋਟਾ ਹੈ।"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਵੱਡਾ ਹੈ।"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"ਨਵਾਂ PIN ਬਹੁਤ ਹੀ ਕਮਜ਼ੋਰ ਹੈ। ਮਜ਼ਬੂਤ ਪਾਸਵਰਡ ਵਿੱਚ ਨਿਰੰਤਰ ਲੜੀ ਜਾਂ ਦੁਹਰਾਏ ਗਏ ਅੰਕ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"ਪੁਰਾਣਾ PIN ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ।"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"ਨਵੇਂ PIN ਵਿੱਚ ਅਵੈਧ ਅੱਖਰ-ਚਿੰਨ੍ਹ ਹਨ।"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN ਨੂੰ ਬਦਲਣ ਵਿੱਚ ਅਸਮਰੱਥ"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ਅਸਮਰਥਿਤ ਸੁਨੇਹਾ ਕਿਸਮ, ਸੁਣਨ ਲਈ <xliff:g id="NUMBER">%s</xliff:g> \'ਤੇ ਕਾਲ ਕਰੋ।"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"ਮੋਬਾਈਲ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ"</string>
     <string name="label_available" msgid="1181658289009300430">"ਉਪਲਬਧ ਨੈਟਵਰਕ"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"ਖੋਜ ਰਿਹਾ ਹੈ..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ਕੋਈ ਨੈਟਵਰਕ ਨਹੀਂ ਮਿਲੇ।"</string>
@@ -158,9 +172,9 @@
     <string name="registration_done" msgid="495135664535876612">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਕੀਤਾ।"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ਇੱਕ ਨੈਟਵਰਕ ਓਪਰੇਟਰ ਚੁਣੋ"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ਸਾਰੇ ਉਪਲਬਧ ਨੈਟਵਰਕਾਂ ਦੀ ਖੋਜ"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ਆਟੋਮੈਟਿਕਲੀ ਚੁਣੋ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ਆਟੋਮੈਟਿਕਲੀ ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਚੁਣੋ"</string>
-    <string name="register_automatically" msgid="6017849844573519637">"ਆਟੋਮੈਟਿਕ ਰਜਿਸਟਰੇਸ਼ਨ…"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਨੈੱਟਵਰਕ ਚੁਣੋ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ਨੈੱਟਵਰਕ"</string>
+    <string name="register_automatically" msgid="6017849844573519637">"ਸਵੈਚਲਿਤ ਰਜਿਸਟਰੇਸ਼ਨ…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਪ੍ਰਕਾਰ"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ਨੈਟਵਰਕ ਓਪਰੇਟਿੰਗ ਮੋਡ ਬਦਲੋ"</string>
     <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"ਤਰਜੀਹੀ ਨੈਟਵਰਕ ਪ੍ਰਕਾਰ"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"ਕੇਵਲ GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA ਤਰਜੀਹੀ"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"ਕਾਲਿੰਗ"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ਨੈੱਟਵਰਕ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"ਵਿਸਤ੍ਰਿਤ 4G LTE ਮੋਡ"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"ਉੱਨਤ ਕਾਲਿੰਗ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ਵੌਇਸ ਅਤੇ ਹੋਰ ਸੰਚਾਰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ  LTE ਸੇਵਾਵਾਂ ਵਰਤੋ (ਸਿਫਾਰਿਸ਼ ਕੀਤਾ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ਡਾਟਾ ਸਮਰਥਿਤ"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ਡਾਟਾ ਵਰਤੋਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
-    <string name="roaming" msgid="8871412572928323707">"ਡਾਟਾ ਰੋਮਿੰਗ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"ਸਾਵਧਾਨ"</string>
+    <string name="roaming" msgid="7894878421600247140">"ਰੋਮਿੰਗ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ਰੋਮਿੰਗ ਵੇਲੇ ਡਾਟਾ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"ਰੋਮਿੰਗ ਵੇਲੇ ਡਾਟਾ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"ਤੁਹਾਡੀ ਡਾਟਾ ਕਨੈਕਟੀਵਿਟੀ ਨਸ਼ਟ ਹੋ ਗਈ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਆਪਣਾ ਡਾਟਾ ਰੋਮਿੰਗ ਬੰਦ ਨਾਲ ਹੋਮ ਨੈਟਵਰਕ ਛੱਡ ਦਿੱਤਾ ਸੀ।"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ਤੁਹਾਨੂੰ ਖ਼ਾਸ ਖ਼ਰਚੇ ਪੈ ਸਕਦੇ ਹਨ।"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ਕੀ ਡਾਟਾ ਰੋਮਿੰਗ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ਡੈਟਾ ਵਰਤੋਂ"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> ਵਿਚਕਾਰ <xliff:g id="ID_1">%1$s</xliff:g> ਮੋਬਾਈਲ ਡੈਟਾ ਵਰਤਿਆ ਗਿਆ"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ਕੈਰੀਅਰ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"ਮੋਬਾਈਲ ਡੈਟਾ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੈਟੇ \'ਤੇ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi‑Fi ਕਾਲਿੰਗ"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"ਕੈਰੀਅਰ ਵੀਡੀਓ ਕਾਲਿੰਗ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ਚੋਣਾਂ"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ਚੋਣਾਂ"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ਡਾਟਾ ਵਰਤੋਂ"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> ਅਧਿਕਤਮ ਸੀਮਾ ਵਧ ਗਈ\nਡਾਟਾ ਰੇਟ <xliff:g id="USED_1">%2$d</xliff:g> Kb/s ਤੱਕ ਘਟ ਗਿਆ"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ਚੱਕਰ ਪੂਰਾ ਹੋਇਆ\nਅਗਲੀ ਮਿਆਦ <xliff:g id="USED_1">%2$d</xliff:g> ਦਿਨਾਂ ਵਿੱਚ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"ਜੇਕਰ ਡਾਟਾ ਵਰਤੋਂ ਸੀਮਾ ਵਧਦੀ ਹੈ ਤਾਂ ਡਾਟਾ ਰੇਟ <xliff:g id="USED">%1$d</xliff:g> Kb/s ਤੱਕ ਘਟਿਆ"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਦੀ ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਡਾਟਾ ਵਰਤੋਂ ਨੀਤੀ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਦੀ ਮੋਬਾਈਲ ਨੈਟਵਰਕ ਡਾਟਾ ਵਰਤੋਂ ਨੀਤੀ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"ਸੈਲ ਪ੍ਰਸਾਰਨ SMS ਸਮਰਥਿਤ"</string>
@@ -314,7 +340,7 @@
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"ਸਿਸਟਮ ਚੁਣੋ"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="176474317493999285">"ਕੇਵਲ ਘਰ"</item>
-    <item msgid="1205664026446156265">"ਆਟੋਮੈਟਿਕ"</item>
+    <item msgid="1205664026446156265">"ਸਵੈਚਲਿਤ"</item>
   </string-array>
     <string name="cdma_subscription_title" msgid="1162564010076763284">"CDMA ਸਬਸਕ੍ਰਿਪਸ਼ਨ"</string>
     <string name="cdma_subscription_summary" msgid="2530890766115781140">"RUIM/SIM ਅਤੇ NV ਵਿਚਕਾਰ ਬਦਲੋ"</string>
@@ -327,7 +353,7 @@
     <item msgid="7494167883478914080">"0"</item>
     <item msgid="6043847456049107742">"1"</item>
   </string-array>
-    <string name="cdma_activate_device" msgid="3793805892364814518">"ਡਿਵਾਈਸ ਨੂੰ ਸਕਿਰਿਆ ਕਰੋ"</string>
+    <string name="cdma_activate_device" msgid="3793805892364814518">"ਡੀਵਾਈਸ ਨੂੰ ਸਕਿਰਿਆ ਕਰੋ"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"ਡਾਟਾ ਸੇਵਾ ਸੈਟ ਅਪ ਕਰੋ"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"ਕੈਰੀਅਰ ਸੈਟਿੰਗਾਂ"</string>
     <string name="fdn" msgid="7878832555095183202">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ"</string>
@@ -336,29 +362,30 @@
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN ਸੂਚੀ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN ਸਕਿਰਿਆਕਰਨ"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਸਮਰਥਿਤ ਹਨ"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਅਸਮਰਥਿਤ ਹਨ"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"FDN ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਅਯੋਗ ਬਣਾਏ ਗਏ ਹਨ"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"FDN ਨੂੰ ਯੋਗ ਬਣਾਓ"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"FDN ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
     <string name="change_pin2" msgid="2153563695382176676">"PIN2 ਬਦਲੋ"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"FDN ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"FDN ਨੂੰ ਯੋਗ ਬਣਾਓ"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ਪਹੁੰਚ ਲਈ PIN ਬਦਲੋ"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ਫੋਨ ਨੰਬਰ ਸੂਚੀ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ਫ਼ੋਨ ਨੰਬਰ ਸੂਚੀ ਵਿਵਸਥਿਤ ਕਰੋ"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"ਵੌਇਸ ਪ੍ਰਾਈਵੇਸੀ"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"ਵਿਸਤ੍ਰਿਤ ਪ੍ਰਾਈਵੇਸੀ ਮੋਡ ਸਮਰੱਥ ਬਣਾਓ"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY ਮੋਡ"</string>
-    <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ਮੋਡ ਸੈਟ ਕਰੋ"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY ਮੋਡ ਸੈੱਟ ਕਰੋ"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"ਆਟੋ-ਰੀਟ੍ਰਾਈ"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"ਆਟੋ-ਰੀਟ੍ਰਾਈ ਮੋਡ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"TTY ਮੋਡ ਪਰਿਵਰਤਨ ਨੂੰ ਵੀਡੀਓ ਕਾਲ ਦੇ ਦੌਰਾਨ ਅਨੁਮਤੀ ਨਹੀਂ ਹੈ"</string>
-    <string name="menu_add" msgid="1882023737425114762">"ਸੰਪਰਕ ਜੋੜੋ"</string>
+    <string name="menu_add" msgid="1882023737425114762">"ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="menu_edit" msgid="7143003705504672374">"ਸੰਪਰਕ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"ਸੰਪਰਕ ਮਿਟਾਓ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"ਸੰਪਰਕ ਨੂੰ ਕਾਲ ਕਰੋ"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 ਟਾਈਪ ਕਰੋ"</string>
     <string name="name" msgid="7329028332786872378">"ਨਾਮ"</string>
     <string name="number" msgid="7905950798349903858">"ਨੰਬਰ"</string>
-    <string name="save" msgid="4094274636321939086">"ਸੁਰੱਖਿਅਤ ਕਰੋ"</string>
+    <string name="save" msgid="4094274636321939086">"ਰੱਖਿਅਤ ਕਰੋ"</string>
     <string name="add_fdn_contact" msgid="2481915899633353976">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜੋ"</string>
     <string name="adding_fdn_contact" msgid="7627379633721940991">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜ ਰਿਹਾ ਹੈ…"</string>
     <string name="fdn_contact_added" msgid="7458335758501736665">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਜੋੜਿਆ ਗਿਆ।"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਮਿਟਾ ਰਿਹਾ ਹੈ…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਮਿਟਾਇਆ।"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਤੁਸੀਂ ਇੱਕ ਗ਼ਲਤ PIN ਟਾਈਪ ਕੀਤਾ ਸੀ।"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਨੰਬਰ 20 ਅੰਕਾਂ ਤੋਂ ਵੱਧ ਨਹੀਂ ਹੋ ਸਕਦਾ।"</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ। PIN2 ਗ਼ਲਤ ਸੀ ਜਾਂ ਫੋਨ ਨੰਬਰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਸੀ।"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਨੰਬਰ ਖਾਲੀ ਹੈ ਜਾਂ 20 ਅੰਕਾਂ ਤੋਂ ਵੱਧ ਹੈ।"</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ। PIN2 ਗ਼ਲਤ ਸੀ ਜਾਂ ਫ਼ੋਨ ਨੰਬਰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਸੀ।"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ਓਪਰੇਸ਼ਨ ਅਸਫਲ।"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM ਕਾਰਡ ਤੋਂ ਪੜ੍ਹ ਰਿਹਾ ਹੈ…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"ਤੁਹਾਡੇ SIM ਕਾਰਡ ਤੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ।"</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"ਤੁਹਾਡੇ SIM ਕਾਰਡ ’ਤੇ ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ।"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"ਆਯਾਤ ਕਰਨ ਲਈ ਸੰਪਰਕ ਚੁਣੋ"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM ਕਾਰਡ ਤੋਂ ਸੰਪਰਕ ਆਯਾਤ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM PIN ਨੂੰ ਸਮਰੱਥ/ਅਸਮਰੱਥ ਬਣਾਓ"</string>
@@ -386,9 +413,9 @@
     <string name="mismatchPin" msgid="5923253370683071889">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੇ PIN ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
     <string name="invalidPin" msgid="5981171102258684792">"ਇੱਕ PIN ਟਾਈਪ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਸੰਖਿਆਵਾਂ ਦਾ ਹੋਵੇ।"</string>
     <string name="disable_sim_pin" msgid="3419351358300716472">"SIM PIN ਹਟਾਓ"</string>
-    <string name="enable_sim_pin" msgid="4845145659651484248">"SIM PIN ਸੈਟ ਕਰੋ"</string>
+    <string name="enable_sim_pin" msgid="4845145659651484248">"SIM PIN ਸੈੱਟ ਕਰੋ"</string>
     <string name="enable_in_progress" msgid="3417917024688497010">"PIN ਸੈਟ ਕਰ ਰਿਹਾ ਹੈ…"</string>
-    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN ਸੈਟ ਕਰੋ"</string>
+    <string name="enable_pin_ok" msgid="2918545971413270063">"PIN ਸੈੱਟ ਕਰੋ"</string>
     <string name="disable_pin_ok" msgid="2109571368635883688">"PIN ਹਟਾਇਆ"</string>
     <string name="pin_failed" msgid="5644377896213584760">"PIN ਗ਼ਲਤ"</string>
     <string name="pin_changed" msgid="4455736268023261662">"PIN ਅਪਡੇਟ ਕੀਤਾ"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ਵੌਇਸਮੇਲ ਨੰਬਰ ਅਗਿਆਤ"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ਚੁਣੇ ਗਏ ਨੈਟਵਰਕ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ਅਣਉਪਲਬਧ"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ਕਾਲ ਕਰਨ ਲਈ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਚਾਲੂ ਕਰੋ, ਜਹਾਜ਼ ਮੋਡ ਬੰਦ ਕਰੋ ਜਾਂ ਬੈਟਰੀ ਸੇਵਰ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ ਜਾਂ ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"ਇੱਕ ਗ਼ੈਰ-ਅਪਾਤਕਾਲ ਕਾਲ ਕਰਨ ਲਈ ਅਪਾਤਕਾਲ ਕਾਲਬੈਕ ਮੋਡ ਤੋਂ ਬਾਹਰ ਆਓ।"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"ਸੈਲਿਊਲਰ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"ਮੋਬਾਈਲ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ।"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਕਾਲ ਕਰਨ ਲਈ ਕਿਸੇ ਵਾਇਰਲੈੱਸ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI ਕੜੀ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ਕਾਲ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ਇਸ ਵੇਲੇ ਕਾਲ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"ਸੇਵਾ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ਕਾਲਾਂ ਸਵਿਚ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ਕਾਲ ਵੱਖ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
@@ -442,13 +470,16 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ਕਾਨਫਰੰਸ ਕਾਲਾਂ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ।"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ਕਾਲ ਅਸਵੀਕਾਰ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ਕਾਲ(ਕਾਲਾਂ) ਰਿਲੀਜ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ਕਾਲਾਂ ਹੋਲਡ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ ਇੱਕ ਵਾਇਰਲੈਸ ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ Wi-Fi ਕਾਲਿੰਗ ਯੋਗ ਬਣਾਓ।"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ਐਮਰਜੈਂਸੀ ਕਾਲ"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ਰੇਡੀਓ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ਕੋਈ ਸੇਵਾ ਨਹੀਂ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ਕਿਸੇ ਐਮਰਜੈਂਸੀ ਕਾਲ ਦੌਰਾਨ ਜਹਾਜ਼ ਮੋਡ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਦਾ।"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਨਹੀਂ ਹੈ।"</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
-    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ਡਾਇਲ ਕਰਨ ਲਈ ਕੀਬੋਰਡ ਵਰਤੋ"</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ਕਾਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਇੱਕ ਐਮਰਜੈਂਸੀ ਨੰਬਰ ਡਾਇਲ ਕਰੋ।"</string>
+    <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ਡਾਇਲ ਕਰਨ ਲਈ ਕੀ-ਬੋਰਡ ਵਰਤੋ"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"ਹੋਲਡ ਕਰੋ"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"ਖ਼ਤਮ"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"ਡਾਇਲਪੈਡ"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"ਸਾਰੇ ਆਯਾਤ ਕਰੋ"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM ਸੰਪਰਕ ਆਯਾਤ ਕਰ ਰਿਹਾ ਹੈ"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"ਸੰਪਰਕਾਂ ਤੋਂ ਆਯਾਤ ਕਰੋ"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"ਹੀਅਰਿੰਗ ਏਡਸ"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"ਹੀਅਰਿੰਗ ਏਡ ਅਨੁਕੂਲਤਾ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"ਆਯਾਤ ਕੀਤਾ ਸੰਪਰਕ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"ਸੰਪਰਕ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"ਸੁਣਨ ਲਈ ਸਹਾਇਕ ਸਾਧਨ"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"ਸੁਣਨ ਲਈ ਸਹਾਇਕ ਸਾਧਨ ਅਨੁਕੂਲਤਾ ਚਾਲੂ ਕਰੋ"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY ਬੰਦ"</item>
     <item msgid="3971695875449640648">"TTY ਪੂਰਾ"</item>
@@ -473,7 +506,7 @@
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF ਟੋਨਾਂ"</string>
-    <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF ਟੋਨਾਂ ਦੀ ਲੰਮਾਈ ਸੈਟ ਕਰੋ"</string>
+    <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF ਟੋਨਾਂ ਦੀ ਲੰਮਾਈ ਸੈੱਟ ਕਰੋ"</string>
   <string-array name="dtmf_tone_entries">
     <item msgid="899650777817315681">"ਸਧਾਰਨ"</item>
     <item msgid="2883365539347850535">"ਲੰਮਾ"</item>
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਦਰਜ ਕੀਤਾ"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਅਸਮਰਥਿਤ"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one"> <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਕੋਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਕੋਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> ਤੱਕ ਕੋਈ ਡੈਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋ ਜਾਏਗਾ। ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਇੱਕ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਵਰਤ ਰਹੇ ਕੋਈ ਵੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੇ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ।  ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
       <item quantity="other">ਫੋਨ <xliff:g id="COUNT_1">%s</xliff:g> ਮਿੰਟਾਂ ਲਈ ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚ ਹੋ ਜਾਏਗਾ। ਇਸ ਮੋਡ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਇੱਕ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਵਰਤ ਰਹੇ ਕੋਈ ਵੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੇ ਨਹੀਂ ਜਾ ਸਕਦੇ ਹਨ।  ਕੀ ਤੁਸੀਂ ਹੁਣ ਬਾਹਰ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ?</item>
@@ -520,22 +550,21 @@
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"ਐਮਰਜੈਂਸੀ ਕਾਲਬੈਕ ਮੋਡ ਵਿੱਚੋਂ ਬਾਹਰ ਜਾ ਰਿਹਾ ਹੈ"</string>
     <string name="alert_dialog_yes" msgid="6674268047820703974">"ਹਾਂ"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"ਨਹੀਂ"</string>
-    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"ਸੇਵਾ"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"ਸੈਟਅਪ"</string>
-    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;ਸੈਟ ਨਹੀਂ ਕੀਤਾ&gt;"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"ਸਥਾਪਤ ਕਰੋ"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"ਹੋਰ ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> ਰਾਹੀਂ ਕਾਲ ਕਰ ਰਿਹਾ ਹੈ"</string>
-    <string name="contactPhoto" msgid="4713193418046639466">"ਸੰਪਰਕ ਫੋਟੋ"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"ਸੰਪਰਕ ਫ਼ੋਟੋ"</string>
     <string name="goPrivate" msgid="865837794424530980">"ਨਿੱਜੀ ਜਾਓ"</string>
     <string name="selectContact" msgid="781975788478987237">"ਸੰਪਰਕ ਚੁਣੋ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ਵੌਇਸ ਕਾਲਿੰਗ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ਡਾਇਲ ਕਰੋ"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"ਵਾਈਬ੍ਰੇਟ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"ਵਾਈਬ੍ਰੇਟ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ਵਿਜੁਅਲ ਵੌਇਸਮੇਲ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ਅਵਾਜ਼"</string>
-    <string name="preference_category_ringtone" msgid="5197960752529332721">"ਰਿੰਗਟੋਨ &amp; ਵਾਈਬ੍ਰੇਟ"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN ਸੈੱਟ ਕਰੋ"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN ਬਦਲੋ"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"ਰਿੰਗਟੋਨ ਅਤੇ ਥਰਥਰਾਹਟ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"ਬਿਲਟ-ਇਨ SIM ਕਾਰਡ"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਚਾਲੂ ਕਰੋ"</string>
     <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"ਵੀਡੀਓ ਕਾਲਿੰਗ ਚਾਲੂ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਵਿਸਤ੍ਰਿਤ 4G LTE ਮੋਡ ਸਮਰੱਥ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੈ।"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"ਕੇਵਲ ਐਮਰਜੈਂਸੀ ਕਾਲਿੰਗ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM ਕਾਰਡ, ਸਲੌਟ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ਪਹੁੰਚਯੋਗਤਾ"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ਇਨਕਮਿੰਗ Wi-Fi ਕਾਲ"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"ਇਸ ਤੋਂ Wi-Fi ਕਾਲ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ਕਾਲ"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਛੋਹਵੋ"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"ਸੁਨੇਹਾ ਡੀਕੋਡ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਅਸ਼ੁੱਧੀ ਹੋਈ ਸੀ।"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ਇੱਕ SIM ਕਾਰਡ ਨੇ ਤੁਹਾਡੀ ਸੇਵਾ ਸਕਿਰਿਆ ਕੀਤੀ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਫੋਨ ਦੀਆਂ ਰੋਮਿੰਗ ਸਮਰੱਥਤਾਵਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਹਨ।"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"ਇੱਥੇ ਬਹੁਤ ਸਾਰੀਆਂ ਕਿਰਿਆਸ਼ੀਲ ਕਾਲਾਂ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਨਵੀਂ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਮੌਜੂਦਾ ਕਾਲਾਂ ਨੂੰ ਸਮਾਪਤ ਜਾਂ ਮਿਲਾਓ।"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"ਕਨੈਕਟ ਕਰਨ ਦੇ ਅਯੋਗ, ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੈਧ ਸਿਮ ਕਾਰਡ ਦਾਖਲ ਕਰੋ।"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi ਕਨੈਕਸ਼ਨ ਚਲਾ ਗਿਆ ਹੈ। ਕਾਲ ਸਮਾਪਤ ਹੋਈ।"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"ਵੌਇਸਮੇਲ PIN ਬਦਲੋ"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ਜਾਰੀ ਰੱਖੋ"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ਰੱਦ ਕਰੋ"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ਠੀਕ"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"ਆਪਣੇ ਪੁਰਾਣੇ PIN ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣਾ ਵੌਇਸਮੇਲ PIN ਦਾਖਲ ਕਰੋ।"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"ਇੱਕ ਨਵਾਂ PIN ਸੈੱਟ ਕਰੋ"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN ਲਾਜ਼ਮੀ ਤੌਰ \'ਤੇ <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> ਅੰਕਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ਆਪਣੇ PIN ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"ਵੌਇਸਮੇਲ PIN ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN ਸਥਾਪਤ ਕਰਨ ਦੇ ਅਯੋਗ"</string>
 </resources>
diff --git a/res/values-pl/config.xml b/res/values-pl/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-pl/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 818fdd2..a4df1b7 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dane komórkowe"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon – usługi"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Numery alarmowe"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Brakuje numeru poczty głosowej"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Na karcie SIM nie ma zapisanego numeru poczty głosowej."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj numer"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Ustawienia poczty głosowej może zmienić tylko użytkownik główny."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Karta SIM została odblokowana. Odblokowywanie telefonu..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Kod PIN do karty SIM odblokowujący sieć"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Odblokuj"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Żądanie odblokowania sieci..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Żądanie odblokowania sieci zakończyło się niepowodzeniem."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sieć została pomyślnie odblokowana."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Ustawienia sieci komórkowej są niedostępne dla tego użytkownika"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Ustawienia sieci mobilnej są niedostępne dla tego użytkownika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Ustawienia połączenia GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Ustawienia połączenia GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Ustawienia połączenia CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Nawiązuj połączenia z konta"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Nawiązuj połączenia SIP z konta"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Najpierw zapytaj"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Brak dostępnej sieci"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Ustawienia"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Wybierz konta"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Konta telefonu"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Poczta głosowa"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Poczta głosowa (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Poczta głosowa:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Powiadomienia"</string>
     <string name="networks" msgid="8873030692174541976">"Operatorzy sieci"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Komunikaty alarmowe"</string>
     <string name="call_settings" msgid="6112441768261754562">"Ustawienia połączeń"</string>
@@ -85,7 +88,7 @@
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Dodatkowe ustawienia tylko połączenia CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Ustawienia usługi sieciowej"</string>
     <string name="labelCallerId" msgid="3888899447379069198">"Nazwa rozmówcy"</string>
-    <string name="sum_loading_settings" msgid="1826692909391168620">"Wczytywanie ustawień…"</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Wczytuję ustawienia…"</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Ukrycie numeru podczas rozmów wychodzących"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Numer wyświetlany w połączeniach wychodzących"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Do wyświetlania mojego numeru w połączeniach wychodzących używaj domyślnych ustawień operatora"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Gdy niedostępny"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Przekieruj na numer"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Przekierowanie na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Wyłączone"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Wył."</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Twój operator nie umożliwia wyłączenia przekazywania połączeń, gdy numer jest nieosiągalny."</string>
     <string name="updating_title" msgid="6146755386174019046">"Ustawienia połączeń"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Ustawienia połączeń może zmienić tylko użytkownik główny."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Ustawienia połączeń może zmieniać tylko użytkownik będący administratorem."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ustawienia (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Błąd w ustawieniach połączenia"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Czytanie ustawień..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nie dokonano żadnych zmian."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Wybierz usługę poczty głosowej"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Mój operator"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Ustawienia sieci komórkowej"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stary PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nowy PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Poczekaj."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nowy PIN jest za krótki."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nowy PIN jest za długi."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nowy PIN jest zbyt słaby. Silne hasło nie może zawierać ciągu kolejnych cyfr lub powtarzających się cyfr."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Stary PIN jest nieprawidłowy."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Nowy PIN zawiera nieprawidłowe znaki."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Nie udało się zmienić kodu PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nieobsługiwany typ wiadomości – aby ją odsłuchać, zadzwoń pod numer <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Ustawienia sieci komórkowej"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Sieć komórkowa"</string>
     <string name="label_available" msgid="1181658289009300430">"Dostępne sieci"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Wyszukiwanie..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nie znaleziono sieci."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Zarejestrowano w sieci."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Wybierz operatora sieci"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Wyszukaj wszystkie dostępne sieci"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Wybierz automatycznie"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automatycznie wybierz preferowaną sieć"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Automatycznie wybieraj sieć"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Sieć"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatyczna rejestracja..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferowany typ sieci"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Zmień tryb działania sieci"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Tylko GSM"</item>
     <item msgid="3817924849415716259">"Preferowany GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Połączenia"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Sieć"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Tryb rozszerzonego 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Zaawansowane połączenia"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Użyj usług LTE, by poprawić łączność głosową i inną (zalecane)"</string>
-    <string name="data_enabled" msgid="5972538663568715366">"Włącz przesył danych"</string>
+    <string name="data_enabled" msgid="5972538663568715366">"Włączone przesyłanie danych"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Zezwalaj na transmisję danych"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming danych"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"Połącz z usługami przesyłu danych podczas roamingu"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"Połącz z usługami przesyłu danych podczas roamingu"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Uwaga"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"Połącz z usługami transmisji danych podczas roamingu"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"Połącz z usługami transmisji danych podczas roamingu"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Połączenie transmisji danych zostało utracone, ponieważ opuszczono sieć macierzystą przy wyłączonej opcji danych w roamingu."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Mogą się z tym wiązać wysokie opłaty."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Zezwolić na roaming danych?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Transmisja danych"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Wykorzystano <xliff:g id="ID_1">%1$s</xliff:g> mobilnej transmisji danych w okresie <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobilna transmisja danych"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Korzystaj z danych przy użyciu sieci komórkowej"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Połączenia przez Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Rozmowy wideo w sieci operatora"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opcje GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opcje CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Użycie danych"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Przekroczono limit: <xliff:g id="USED_0">%1$s</xliff:g>\nSzybkość transmisji zmniejszona do <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Minęło <xliff:g id="USED_0">%1$d</xliff:g>٪ cyklu\nNastępny okres za: <xliff:g id="USED_1">%2$d</xliff:g> dni (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Zmniejsz transfer do <xliff:g id="USED">%1$d</xliff:g> Kb/s jeśli przekroczę limit użycia danych"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Więcej informacji o zasadach korzystania z transmisji danych przez sieć komórkową operatora"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Więcej informacji na temat zasad dotyczących użycia danych w sieci komórkowej tego operatora"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Komunikaty SMS z sieci komórkowej"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Komunikaty SMS z sieci komórkowej"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Komunikaty SMS z sieci komórkowej są włączone"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Dodaj kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Edytuj kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Usuń kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Zadzwoń do kontaktu"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Wpisz PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nazwa"</string>
     <string name="number" msgid="7905950798349903858">"Numer"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Trwa usuwanie ustalonego numeru…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Usunięto ustalony numer."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Nie zaktualizowano usługi FDN, ponieważ wpisano nieprawidłowy kod PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Nie zaktualizowano usługi FDN, ponieważ numer nie może być dłuższy niż 20 cyfr."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Nie zaktualizowano usługi FDN, ponieważ numer jest pusty lub zawiera ponad 20 cyfr."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Nie zaktualizowano FDN. PIN2 był niepoprawny lub numer telefonu został odrzucony."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operacja FDN nie udała się."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Czytanie z karty SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nieznany numer poczty głosowej"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Brak usługi"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Wybrana sieć (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) jest niedostępna"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Wyłącz tryb samolotowy, by zadzwonić."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Aby zadzwonić, włącz sieć komórkową, wyłącz tryb samolotowy lub wyłącz tryb oszczędzania baterii."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Wyłącz tryb samolotowy, by zadzwonić."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Wyłącz tryb samolotowy lub połącz się z siecią bezprzewodową, by zadzwonić."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Aby zadzwonić normalnie, wyjdź z trybu alarmowego połączenia zwrotnego."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Nie zarejestrowano w sieci"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Sieć komórkowa jest niedostępna."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Sieć komórkowa jest niedostępna. Połącz się z siecią bezprzewodową, by zadzwonić."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Sieć komórkowa jest niedostępna."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Sieć komórkowa jest niedostępna. Połącz się z siecią bezprzewodową, by zadzwonić."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Aby zadzwonić, wybierz prawidłowy numer."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nie można dzwonić."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Rozpoczynanie sekwencji MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Nie udało się połączyć."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Nie można w tej chwili dodać połączenia."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Usługa nie jest obsługiwana"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nie można przełączyć połączeń."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nie można rozdzielić połączenia."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nie można prowadzić rozmów konferencyjnych."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nie można odrzucić połączenia."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nie można zwolnić połączeń."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Nie można zawieszać połączeń."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Połącz się z siecią bezprzewodową, by zadzwonić."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Włącz Połączenia przez Wi-Fi, aby nawiązać połączenie."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Połączenie alarmowe"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Trwa włączanie sieci bezprzewodowych..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Brak sieci. Próbuję ponownie…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Nie możesz włączyć trybu samolotowego podczas połączenia alarmowego."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Nie można dzwonić. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nie jest numerem alarmowym."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nie można dzwonić. Wybierz numer alarmowy."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Aby zadzwonić, użyj klawiatury."</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importuj wszystko"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importowanie kontaktów z karty SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importuj z Kontaktów"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt został zaimportowany"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Nie udało się zaimportować kontaktu"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Aparaty słuchowe"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Włącz funkcje zgodności z aparatem słuchowym"</string>
   <string-array name="tty_mode_entries">
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Włączono tryb alarmowego połączenia zwrotnego"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Tryb alarmowego połączenia zwrotnego"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Połączenie transmisji danych jest wyłączone"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="few">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minuty</item>
-      <item quantity="many">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minut</item>
-      <item quantity="other">Brak połączenia transmisji danych przez <xliff:g id="COUNT_1">%s</xliff:g> minuty</item>
-      <item quantity="one">Brak połączenia transmisji danych przez <xliff:g id="COUNT_0">%s</xliff:g> minutę</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Brak połączenia transmisji danych do <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="few">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_1">%s</xliff:g> minuty. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
       <item quantity="many">Telefon będzie w trybie alarmowego połączenia zwrotnego przez <xliff:g id="COUNT_1">%s</xliff:g> minut. W tym trybie nie można używać aplikacji, które korzystają z połączenia transmisji danych. Chcesz zakończyć tryb teraz?</item>
@@ -527,7 +555,7 @@
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Tak"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Nie"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Zamknij"</string>
-    <string name="voicemail_provider" msgid="5135942703327136909">"Usługa"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Dostawca"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Konfiguracja"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nie ustawiono&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Inne ustawienia połączeń"</string>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"wybierz kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Połączenia głosowe nie są obsługiwane"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"wybierz numer"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Wibracje"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Wibracje"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Wizualna poczta głosowa"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Dźwięk"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Ustaw kod PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Zmień PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Dzwonek i wibracje"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Wbudowane karty SIM"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Włącz rozmowy wideo"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tylko połączenia alarmowe"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Karta SIM, gniazdo: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Ułatwienia dostępu"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Przychodzące połączenie przez Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Połączenie przez Wi-Fi od:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Połączenie przez Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Kliknij ponownie, by otworzyć"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Dotknij ponownie, by otworzyć"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Podczas dekodowania wiadomości wystąpił błąd."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Karta SIM aktywowała usługę i zaktualizowała funkcje roamingowe telefonu."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Masz za dużo aktywnych połączeń. Scal lub zakończ istniejące połączenia, aby nawiązać nowe."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nie udało się nawiązać połączenia. Włóż prawidłową kartę SIM."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Utracono połączenie Wi-Fi. Rozmowa została zakończona."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Zmień kod PIN poczty głosowej"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Dalej"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Anuluj"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potwierdź stary kod PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Wpisz kod PIN poczty głosowej, aby przejść dalej."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Ustaw nowy kod PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Kod PIN musi zawierać od <xliff:g id="MIN">%1$d</xliff:g> do <xliff:g id="MAX">%2$d</xliff:g> cyfr."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potwierdź kod PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Kody PIN nie są identyczne."</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Kod PIN poczty głosowej został zaktualizowany."</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nie udało się ustawić kodu PIN"</string>
 </resources>
diff --git a/res/values-pt-rPT/config.xml b/res/values-pt-rPT/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-pt-rPT/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 3ba19aa..35e7fa2 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dados móveis"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dados móveis"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Serviços de telemóvel"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Marcador de emergência"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefone"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Lista de números de marcação fixa (FDN)"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Lista de FDN"</string>
     <string name="unknown" msgid="6878797917991465859">"Desconhecido"</string>
     <string name="private_num" msgid="6713286113000232309">"Número particular"</string>
     <string name="payphone" msgid="4793877574636445118">"Telefone público"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Número do correio de voz em falta"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Não existe um número de correio de voz armazenado no cartão SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"As definições do correio de voz só podem ser modificadas pelo utilizador principal."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"O cartão SIM foi desbloqueado. O telefone está a ser desbloqueado..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN para desbloqueio de rede do cartão SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloquear"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"A pedir desbloqueio de rede..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"O pedido de desbloqueio de rede falhou."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueio de rede bem sucedido."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"As definições de rede móvel não estão disponíveis para este utilizador"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"As definições de rede móvel não estão disponíveis para este utilizador"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Definições de chamadas GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Definições de chamadas GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Definições de chamada CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Efetuar chamadas com"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Efetuar chamadas SIP com"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Perguntar primeiro"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Sem ligação"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Definições"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Escolher contas"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas do telemóvel"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Correio de voz"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correio de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Correio de voz:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificações"</string>
     <string name="networks" msgid="8873030692174541976">"Operadores de rede"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmissões de emergência"</string>
     <string name="call_settings" msgid="6112441768261754562">"Definições de chamada"</string>
@@ -84,7 +87,7 @@
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"Definições adicionais de chamadas CDMA"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Definições adicionais de chamadas apenas CDMA"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Definições do serviço de rede"</string>
-    <string name="labelCallerId" msgid="3888899447379069198">"ID do autor da chamada"</string>
+    <string name="labelCallerId" msgid="3888899447379069198">"Identificação de chamadas"</string>
     <string name="sum_loading_settings" msgid="1826692909391168620">"A carregar as definições..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Ocultar o número em chamadas efectuadas"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Número apresentado em chamadas efectuadas"</string>
@@ -92,16 +95,16 @@
     <string name="labelCW" msgid="6120513814915920200">"Chamada em espera"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Notificar-me de chamadas a receber durante uma chamada"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Notificar-me de chamadas a receber durante uma chamada"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Definições do reencaminhamento de chamadas"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Definições de reencaminhamento de chamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"Reencaminhamento de chamadas"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Definições do encaminhamento de chamadas"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Definições de encaminhamento de chamadas (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Encaminhamento de chamadas"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Encaminhar sempre"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Utilizar sempre este número"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"A reencaminhar todas as chamadas"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"A encaminhar todas as chamadas para <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"O número está indisponível"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"Desativado"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"Quando estiver ocupado(a)"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Quando estiver ocupado"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Número no caso de estar ocupado"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"A encaminhar para <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Desativado"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Quando estiver inacessível"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número no caso de estar inacessível"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"A encaminhar para <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desativado"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desativado"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"O seu operador não suporta a desativação do reencaminhamento de chamadas quando o telemóvel não está acessível."</string>
     <string name="updating_title" msgid="6146755386174019046">"Definições de chamadas"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"As definições de chamadas só podem ser alteradas pelo utilizador principal."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"As definições de chamadas só podem ser alteradas pelo utilizador administrador."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Definições (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Erro nas definições de chamada"</string>
     <string name="reading_settings" msgid="1920291699287055284">"A ler as definições..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Não foram efectuadas alterações."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Escolha o serviço de correio de voz"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"O seu operador"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Definições de rede móvel"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novo PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Aguarde."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O novo PIN é demasiado curto."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O novo PIN é demasiado longo."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é demasiado fraco. Uma palavra-passe forte não deve ter uma sequência de dígitos contínua ou repetida."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"O PIN antigo é diferente."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"O novo PIN contém carateres inválidos."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Não é possível alterar o PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipo de mensagem não suportada, ligue para o número <xliff:g id="NUMBER">%s</xliff:g> para ouvir."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Definições da rede móvel"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rede móvel"</string>
     <string name="label_available" msgid="1181658289009300430">"Redes disponíveis"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"A pesquisar..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nenhuma rede encontrada."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registado na rede."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Escolher um operador de rede"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Procurar todas as redes disponíveis"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Selecionar automaticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Selecionar rede preferida automaticamente"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Selecionar automaticamente a rede"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rede"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registo automático..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de rede preferencial"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Alterar o modo de funcionamento em rede"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Apenas GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferido"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Chamadas"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rede"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modo 4G LTE avançado"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Chamadas avançadas"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Utilizar os serviços LTE para melhorar a voz e outras comunicações (recomendado)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dados ativados"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir a utilização de dados"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming de dados"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atenção"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Ligar a serviços de dados em roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Ligar a serviços de dados em roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"A conectividade de dados foi perdida porque saiu do alcance da sua rede e o roaming de dados estava desativado."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Podem ser cobrados custos significativos."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Pretende permitir roaming de dados?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Utilização de dados"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> de dados móveis utilizados entre <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operador"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Dados móveis"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Aceder aos dados através de rede móvel"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Chamadas Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videochamadas do operador"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opções GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opções CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Utilização de dados"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> máximo excedido\nVelocidade de transmissão de dados reduzida para <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ do ciclo decorrido\nO período seguinte tem início dentro de <xliff:g id="USED_1">%2$d</xliff:g> dias (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Velocidade de transmissão de dados reduzida para <xliff:g id="USED">%1$d</xliff:g> Kb/s se o limite de utilização de dados for excedido"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Mais informações acerca da política de utilização de dados da rede móvel do seu operador."</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Mais informações sobre a política de utilização de dados da rede móvel do seu operador."</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Transmissão Celular SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Transmissão Celular SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Definições da transmissão celular SMS ativada"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Adicionar contacto"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editar contacto"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Eliminar contacto"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Ligar para o contacto"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Introduzir PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nome"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"A eliminar números autorizados..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Números autorizados eliminados."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Os números autorizados não foram atualizados porque introduziu um PIN incorreto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Os números autorizados não foram atualizados porque o número não pode exceder 20 dígitos."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"O FDN não foi atualizado porque o número está vazio ou excede os 20 dígitos."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Não foram atualizados os números autorizados. O PIN2 estava errado ou o número de telefone foi rejeitado."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Falha de FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"A ler a partir do cartão SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número do correio de voz desconhecido"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nenhum serviço"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rede selecionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) indisponível"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Desative o modo de avião para fazer uma chamada."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Ative a rede móvel, desative o modo de avião ou desative o modo de poupança de bateria para fazer uma chamada."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Desative o modo de avião para fazer uma chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desative o modo de avião ou ligue-se a uma rede sem fios para fazer uma chamada."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Sair do modo de chamada de retorno de emergência para efetuar uma chamada que não é de emergência."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Sem registo na rede."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rede móvel não disponível."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede móvel não está disponível. Ligue-se a uma rede sem fios para fazer uma chamada."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rede móvel não disponível."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"A rede móvel não está disponível. Ligue-se a uma rede sem fios para efetuar uma chamada."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para telefonar, introduza um número válido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Não é possível telefonar."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"A iniciar sequência de MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"A chamada falhou."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Não é possível adicionar a chamada neste momento."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Serviço não suportado"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Não é possível alternar chamadas."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Não é possível separar a chamada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Não é possível efectuar chamadas de conferência."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Não é possível rejeitar a chamada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível libertar a(s) chamada(s)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Não é possível colocar as chamadas em espera."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ligue-se a uma rede sem fios para fazer uma chamada."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Ativar as chamadas através de Wi-Fi para fazer uma chamada."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"A ligar o rádio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. A tentar novamente…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Não é possível entrar em modo de voo durante uma chamada de emergência."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Não é possível telefonar. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> não é um número de emergência."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Não é possível telefonar. Marque um número de emergência."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilizar o teclado para marcar"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importar todos"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"A importar contactos do cartão SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar a partir dos contactos"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contacto importado"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Falha ao importar o contacto"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Aparelhos auxiliares de audição"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Ativar compatibilidade com aparelho auxiliar de audição"</string>
   <string-array name="tty_mode_entries">
@@ -504,17 +537,14 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Entrou em Modo de Chamada de Retorno de Emergência"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de Chamada de Retorno de Emergência"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Ligação de dados desativada"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Sem ligação de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-      <item quantity="one">Sem ligação de dados durante <xliff:g id="COUNT_0">%s</xliff:g> minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Sem ligação de dados até à(s) <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
-      <item quantity="other">O telemóvel fica no modo de Chamada de emergência durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Neste modo, não é possível utilizar aplicações com uma ligação de dados. Pretende sair agora?</item>
       <item quantity="one">O telemóvel fica no modo de Chamada de emergência durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Neste modo, não é possível utilizar aplicações com uma ligação de dados. Pretende sair agora?</item>
+      <item quantity="other">O telemóvel fica no modo de Chamada de emergência durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Neste modo, não é possível utilizar aplicações com uma ligação de dados. Pretende sair agora?</item>
     </plurals>
     <plurals name="alert_dialog_not_avaialble_in_ecm" formatted="false" msgid="8042973425225093895">
-      <item quantity="other">A ação selecionada não está disponível no modo de Chamada de emergência. O telemóvel fica neste modo durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Pretende sair agora?</item>
       <item quantity="one">A ação selecionada não está disponível no modo de Chamada de emergência. O telemóvel fica neste modo durante <xliff:g id="COUNT_0">%s</xliff:g> minuto. Pretende sair agora?</item>
+      <item quantity="other">A ação selecionada não está disponível no modo de Chamada de emergência. O telemóvel fica neste modo durante <xliff:g id="COUNT_1">%s</xliff:g> minutos. Pretende sair agora?</item>
     </plurals>
     <string name="alert_dialog_in_ecm_call" msgid="1886723687211887104">"A ação selecionada não está disponível durante uma chamada de emergência."</string>
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"A sair do modo de chamada de retorno de emergência"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"seleccionar contacto"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Chamadas de voz não suportadas"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"marcar"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correio de voz visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Som"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Definir PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Alterar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tocar e Vibrar"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartões SIM incorporados"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Ativar videochamada"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Apenas chamadas de emergência"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Cartão SIM, ranhura: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Acessibilidade"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada Wi-Fi recebida"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Chamada a partir da rede Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tocar novamente para abrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Toque novamente para abrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro durante a descodificação da mensagem."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Um cartão SIM ativou o seu serviço e atualizou as capacidades de roaming do seu telemóvel."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Existem demasiadas chamadas ativas. Termine ou intercale as chamadas existentes antes de efetuar uma nova chamada."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Não é possível estabelecer ligação, introduza um cartão SIM válido."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"A ligação Wi-Fi foi perdida. A chamada foi terminada."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Alterar o PIN do correio de voz"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuar"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancelar"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirme o seu PIN antigo"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Introduza o PIN do seu correio de voz para continuar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Definir um PIN novo"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"O PIN tem de ter <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> dígitos."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirmar PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Os PINs não correspondem"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"O PIN do correio de voz foi atualizado"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Não é possível definir o seu PIN"</string>
 </resources>
diff --git a/res/values-pt/config.xml b/res/values-pt/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-pt/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bd35627..4ccba4c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dados celulares"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dados móveis"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Serviços do smartphone"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Discador de emergência"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefone"</string>
@@ -30,7 +30,7 @@
     <string name="mmiCancelled" msgid="2771923949751842276">"Código MMI cancelado"</string>
     <string name="cancel" msgid="5044513931633602634">"Cancelar"</string>
     <string name="enter_input" msgid="1810529547726803893">"A mensagem USSD deve ter de <xliff:g id="MIN_LEN">%d</xliff:g> a <xliff:g id="MAX_LEN">%d</xliff:g> caracteres. Tente novamente."</string>
-    <string name="manageConferenceLabel" msgid="4691922394301969053">"Gerenciar conferência telefônica"</string>
+    <string name="manageConferenceLabel" msgid="4691922394301969053">"Gerenciar teleconferência"</string>
     <string name="ok" msgid="3811371167865772377">"OK"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Alto-falante"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Minifone do aparelho"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Número correio de voz ausente"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Não há um número correio de voz armazenado no cartão SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Adicionar número"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"As configurações do correio de voz só podem ser modificadas pelo usuário principal."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"O seu cartão SIM foi desbloqueado. O seu telefone está desbloqueando…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN de desbloqueio da rede SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Desbloquear"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Solicitando o desbloqueio de rede…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Falha na solicitação de desbloqueio de rede."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Desbloqueio de rede bem-sucedido."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"As configurações da rede celular não estão disponíveis para este usuário"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"As configurações de rede para dispositivos móveis não estão disponíveis para este usuário"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Configurações de chamada GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Configurações de chamada GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Configurações de chamada CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Fazer chamadas com"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Fazer chamadas SIP com"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Perguntar primeiro"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nenhuma rede disponível"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Configurações"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Escolher contas"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Contas de telefone"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Correio de voz"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Correio de voz (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificações"</string>
     <string name="networks" msgid="8873030692174541976">"Operadoras de rede"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmissões de emergência"</string>
     <string name="call_settings" msgid="6112441768261754562">"Configurações de chamadas"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Quando inacessível"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Número quando inacessível"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Encaminhar para <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Desativado"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Desativado"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Sua operadora não suporta a desativação do encaminhamento de chamada quando seu telefone não está acessível."</string>
     <string name="updating_title" msgid="6146755386174019046">"Configurações de chamadas"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"As configurações de chamada só podem ser alteradas pelo usuário principal."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"As configurações de chamada só podem ser alteradas pelo usuário administrador."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Configurações (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Erro de configuração da chamada"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Lendo as configurações…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nenhuma alteração foi feita."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Escolha o serviço de correio de voz"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Sua operadora"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Configurações de rede celular"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN antigo"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Novo PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Aguarde."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"O novo PIN é curto demais."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"O novo PIN é longo demais."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"O novo PIN é fácil demais. Uma senha segura não deve ter uma sequência contínua nem dígitos repetidos."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"O PIN antigo não corresponde."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"O novo PIN contém caracteres inválidos."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Não foi possível alterar o PIN."</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tipo de mensagem incompatível, para ouvi-la, ligue para <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Configurações de rede móvel"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rede móvel"</string>
     <string name="label_available" msgid="1181658289009300430">"Redes disponíveis"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Pesquisando..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nenhuma rede encontrada."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrado na rede."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Selecione uma operadora de rede"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Pesquisar todas as redes disponíveis"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Escolher automaticamente"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Escolher automaticamente a rede preferencial"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Selecionar a rede automaticamente"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rede"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Registro automático..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipo de rede preferencial"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Alterar o modo de operação de rede"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Somente GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferencial"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Chamadas"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rede"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modo 4G LTE avançado"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Chamada avançada"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Usar serviços de LTE para melhorar a voz e outras comunicações (recomendado)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Dados ativados"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permitir o uso de dados"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming de dados"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atenção"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Conectar aos serviços de dados quando estiver em roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Conectar aos serviços de dados quando estiver em roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Você perdeu a conectividade de dados porque deixou o roaming de dados de sua rede doméstica desativado."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Pode acarretar cobranças significativas"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Permitir roaming de dados?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Uso de dados"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> dados móveis usados entre <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operadora"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Dados móveis"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Acessar os dados pela rede móvel"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Chamadas por Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videochamadas via operadora"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opções GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opções CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Uso de dados"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Máximo de <xliff:g id="USED_0">%1$s</xliff:g> excedido\nTaxa de dados reduzida para <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ do ciclo expirou\nO próximo período começa em <xliff:g id="USED_1">%2$d</xliff:g> dias (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Taxa de dados reduzida para <xliff:g id="USED">%1$d</xliff:g> Kb/s se o limite de uso de dados for excedido"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Mais informações sobre a política de uso de dados da rede celular de sua operadora"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Mais informações sobre a política de uso de dados da rede móvel da sua operadora"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS de difusão celular"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS de difusão celular"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS de difusão celular ativado"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Adicionar contato"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Editar contato"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Excluir contato"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Discar"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Digitar PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nome"</string>
     <string name="number" msgid="7905950798349903858">"Número"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Excluindo número de chamadas fixas…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Número de chamadas fixas excluído."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"O FDN não foi atualizado porque você digitou um PIN incorreto."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"O FDN não foi atualizado porque o número não pode exceder 20 dígitos."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"O FDN não foi atualizado porque o número está vazio ou excede 20 dígitos."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"O FDN não foi atualizado. O PIN2 estava incorreto, ou o número de telefone foi rejeitado."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Falha na operação de FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Lendo a partir do cartão SIM…"</string>
@@ -414,7 +441,7 @@
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Número correio de voz"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Discando"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Rediscando"</string>
-    <string name="card_title_conf_call" msgid="1162980346189744501">"Conferência telefônica"</string>
+    <string name="card_title_conf_call" msgid="1162980346189744501">"teleconferência"</string>
     <string name="card_title_incoming_call" msgid="7364539451234646909">"Recebendo chamada"</string>
     <string name="card_title_call_ended" msgid="5544730338889702298">"Chamada encerrada"</string>
     <string name="card_title_on_hold" msgid="821463117892339942">"Em espera"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Número correio de voz desconhecido"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Sem serviço"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"A rede selecionada (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) não está disponível"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Desative o modo avião para fazer uma chamada."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Ative a rede móvel e desative o modo avião ou o modo de economia de bateria para ligar."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Desative o modo avião para fazer uma chamada."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Desative o modo avião ou conecte-se a uma rede sem fio para fazer uma chamada."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Saia do modo de retorno de chamada de emergência para fazer uma chamada que não seja de emergência."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Não registrado na rede."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rede celular não disponível."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"A rede celular não está disponível. Conecte-se a uma rede sem fio para fazer uma chamada."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rede móvel não disponível."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"A rede móvel não está disponível. Conecte-se a uma rede sem fio para fazer uma chamada."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Para realizar uma chamada, digite um número válido."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Não é possível realizar chamadas."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iniciando sequência MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Falha na chamada."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"No momento, não é possível adicionar a chamada."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Serviço não suportado"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Não é possível alternar as chamadas."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Não é possível separar a chamada."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Não é possível realizar conferências telefônicas."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Não é possível rejeitar a chamada."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Não é possível liberar chamadas."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Não é possível colocar chamadas em espera."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Conecte-se a uma rede sem fio para fazer uma chamada."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Ative as chamadas por Wi-Fi para fazer uma chamada."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Chamada de emergência"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ativando o rádio…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Sem serviço. Tentando novamente..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Não é possível usar o modo avião durante uma chamada de emergência."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Não é possível realizar chamadas. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> não é um número de emergência."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Não é possível realizar chamadas. Disque um número de emergência."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Use o teclado para discar"</string>
@@ -454,7 +485,7 @@
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Teclado"</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"Desativar som"</string>
     <string name="onscreenAddCallText" msgid="5140385634712287403">"Adicionar chamada"</string>
-    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Mesclar chamadas"</string>
+    <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Juntar chamadas"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Trocar"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Gerenciar chamadas"</string>
     <string name="onscreenManageConferenceText" msgid="6485935856534311346">"Gerenciar conferência"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importar tudo"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importando contatos do SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importar dos contatos"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Contato importado"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Falha ao importar contato"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Aparelhos auditivos"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Ativar compatibilidade com aparelhos auditivos"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Modo de retorno de chamada de emergência acessado"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modo de retorno de chamada de emergência"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexão de dados desativada"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Nenhuma conexão de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-      <item quantity="other">Nenhuma conexão de dados durante <xliff:g id="COUNT_1">%s</xliff:g> minutos</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Sem conexão de dados até <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">O smartphone ficará no modo de retorno de chamada de emergência por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Nesse modo, não será possível usar apps que utilizem conexão de dados. Deseja sair agora?</item>
       <item quantity="other">O smartphone ficará no modo de retorno de chamada de emergência por <xliff:g id="COUNT_1">%s</xliff:g> minutos. Nesse modo, não será possível usar apps que utilizem conexão de dados. Deseja sair agora?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"selecionar contato"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Chamada de voz não compatível"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"discar"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrar"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrar"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Correio de voz visual"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Som"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Definir PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Alterar PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Toque e vibração"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Cartões SIM integrados"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Ativar chamadas de vídeo"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Somente chamadas de emergência"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Cartão SIM, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Acessibilidade"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Chamada por Wi-Fi recebida"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Chamada via Wi-Fi de"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Chamada por Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Toque novamente para abrir"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Toque novamente para abrir"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Ocorreu um erro ao decodificar a mensagem."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Um cartão SIM ativou seu serviço e atualizou os recursos de roaming do smartphone."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Há muitas chamadas ativas. Finalize ou mescle as chamadas existentes antes de fazer uma nova."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Não é possível conectar-se, insira um cartão SIM válido."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Conexão Wi-Fi perdida. Chamada encerrada."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Alterar o PIN do correio de voz"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuar"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Cancelar"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirme seu PIN antigo"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Digite o PIN do correio de voz para continuar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Defina um novo PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"O PIN precisa ter de <xliff:g id="MIN">%1$d</xliff:g> a <xliff:g id="MAX">%2$d</xliff:g> dígitos."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirme seu PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Os PINs não correspondem"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN do correio de voz atualizado"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Não foi possível definir o PIN"</string>
 </resources>
diff --git a/res/values-ro/config.xml b/res/values-ro/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ro/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 479a484..520b458 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Date mobile"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Date pentru mobil"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon – Servicii"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Telefon de urgență"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Listă FDN"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Listă NAR"</string>
     <string name="unknown" msgid="6878797917991465859">"Necunoscut"</string>
     <string name="private_num" msgid="6713286113000232309">"Număr privat"</string>
     <string name="payphone" msgid="4793877574636445118">"Telefon public"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Lipsește numărul mesageriei vocale"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Niciun număr de mesagerie vocală nu este stocat pe cardul SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Adăugați numărul"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Setările pentru mesagerie vocală pot fi modificate numai de utilizatorul principal."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Cardul dvs. SIM a fost deblocat. Telefonul dvs. se deblochează..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Codul PIN de deblocare a rețelei SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Deblocați"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Se solicită deblocarea rețelei..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Cererea de deblocare a rețelei a eșuat."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Rețeaua a fost deblocată."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Setările pentru rețeaua mobilă nu sunt disponibile pentru acest utilizator"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Setările pentru rețeaua mobilă nu sunt disponibile pentru acest utilizator"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Setările apelului GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Setări pentru apeluri GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Setările apelului CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Apelați cu"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Dați apeluri SIP cu"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Întreabă mai întâi"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nicio rețea disponibilă"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Setări"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Alegeți conturile"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Conturi telefon"</string>
@@ -72,12 +74,13 @@
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Selectați conturile care pot da apeluri"</string>
     <string name="wifi_calling" msgid="739018212480165598">"Apelare prin Wi-Fi"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"Serviciu de conectare încorporat"</string>
-    <string name="voicemail" msgid="8693759337917898954">"Mesaj vocal"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Mesagerie vocală"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Mesagerie vocală (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"MV:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Notificări"</string>
     <string name="networks" msgid="8873030692174541976">"Operatori de rețea"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmisiuni de urgență"</string>
-    <string name="call_settings" msgid="6112441768261754562">"Setări apel"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Setări pentru apeluri"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Setări suplimentare"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Setări suplimentare (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Setări suplimentare doar pentru apelurile GSM"</string>
@@ -90,10 +93,10 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Numărul afișat în apelurile de ieșire"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Utilizați setările prestabilite ale operatorului, pentru a vă afișa numărul în apelurile de ieșire"</string>
     <string name="labelCW" msgid="6120513814915920200">"Apel în așteptare"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Anunță-mă când primesc un apel, inclusiv în timpul unei convorbiri"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Anunță-mă când primesc un apel, inclusiv în timpul unei convorbiri"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Setările pentru redirecționarea de apeluri"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Setări de redirecționare a apelurilor (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Anunță-mă dacă primesc un apel în timpul unei convorbiri"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Anunță-mă dacă primesc un apel în timpul unei convorbiri"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Setări de redirecționare"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Setări de redirecționare (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Redirecționarea apelurilor"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Redirecționează întotdeauna"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Folosește mereu acest număr"</string>
@@ -114,12 +117,12 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Când nu este accesibil"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Număr de redirecționare dacă telefonul nu este accesibil"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Se redirecționează la <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Dezactivat"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Dezactivat"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatorul dvs. nu acceptă ca redirecționarea apelurilor să fie dezactivată atunci când telefonul nu este accesibil."</string>
-    <string name="updating_title" msgid="6146755386174019046">"Setări apel"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Numai utilizatorul principal poate să modifice setările pentru apeluri."</string>
+    <string name="updating_title" msgid="6146755386174019046">"Setări pentru apeluri"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Numai administratorul poate să modifice setările pentru apeluri."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Setări (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Eroare în setările de apel"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Eroare în setările pentru apeluri"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Se citesc setările..."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Se actualizează setările..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Se revine la setări..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nicio schimbare efectuată."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Alegeți serviciul de mesagerie vocală"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatorul dvs."</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Setările pentru rețeaua mobilă"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Codul PIN vechi"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Codul PIN nou"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Așteptați."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Codul PIN nou este prea scurt."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Codul PIN nou este prea lung."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Codul PIN nou este prea slab. O parolă puternică nu ar trebui să aibă o secvență continuă sau cifre repetitive."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Codul PIN vechi nu corespunde."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Codul PIN nou conține caractere nevalide."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Nu se poate schimba codul PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Tip de mesaj neacceptat. Apelează numărul <xliff:g id="NUMBER">%s</xliff:g> pentru a-l asculta."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Setări pentru rețeaua mobilă"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rețea mobilă"</string>
     <string name="label_available" msgid="1181658289009300430">"Rețele disponibile"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Se caută…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nicio rețea găsită."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Înregistrat în rețea."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Alegeți un operator de rețea"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Căutați toate rețelele disponibile"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Selectați în mod automat"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Selectați în mod automat rețeaua preferată"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Selectați automat rețeaua"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rețea"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Înregistrare automată..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tipul de rețea preferat"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Schimbați modul de operare a rețelei"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Numai GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA preferat"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Se apelează"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rețea"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Mod 4G LTE îmbunătățit"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Apelare avansată"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Folosiți servicii LTE pt. a îmbunătăți comunicări vocale și altele (recomandat)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Date activate"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Permiteți utilizarea datelor"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming de date"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Atenție"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Conectați-vă la serviciile de date în roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Conectați-vă la serviciile de date în roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Ați pierdut conectivitatea la date, deoarece ați părăsit rețeaua de domiciliu neavând activat roamingul de date."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Se pot acumula costuri mari."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Permiteți roamingul de date?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Utilizarea datelor"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> de date mobile utilizate în intervalul <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operator"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Date mobile"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Accesați datele folosind rețeaua mobilă"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Apelare prin Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Apelare video prin operator"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opțiuni GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opțiuni CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Utilizarea datelor"</string>
@@ -213,12 +239,12 @@
     <string name="throttle_time_frame" msgid="1915198770363734685">"Perioada de utilizare a datelor"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"Politica ratei de transfer a datelor"</string>
     <string name="throttle_help" msgid="243651091785169900">"Aflați mai multe"</string>
-    <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) din <xliff:g id="USED_2">%3$s</xliff:g> perioada maximă\nUrmătoarea perioadă începe în <xliff:g id="USED_3">%4$d</xliff:g> (de) zile (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
+    <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) din <xliff:g id="USED_2">%3$s</xliff:g> perioada maximă\nUrmătoarea perioadă începe în <xliff:g id="USED_3">%4$d</xliff:g> zile (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g>٪) din <xliff:g id="USED_2">%3$s</xliff:g> perioadă maximă"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maximum depășit\nRata de transfer se reduce la <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
-    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ din ciclul trecut\nPerioada următoare începe în <xliff:g id="USED_1">%2$d</xliff:g> (de) zile (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
+    <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ din ciclul trecut\nPerioada următoare începe în <xliff:g id="USED_1">%2$d</xliff:g> zile (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Rata de transfer a datelor se reduce la <xliff:g id="USED">%1$d</xliff:g> Kb/s, dacă limita de utilizare este depășită."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Mai multe informații despre politica de utilizare a datelor aplicată de operatorul dvs. de telefonie mobilă"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Mai multe informații despre politica de utilizare a datelor aplicată de operatorul dvs. de telefonie mobilă"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Transmisie celulară a mesajelor SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Transmisie celulară a mesajelor SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Transmisie celulară a mesajelor SMS activată"</string>
@@ -330,20 +356,20 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Activați dispozitivul"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Configurați serviciul de date"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Setări operator"</string>
-    <string name="fdn" msgid="7878832555095183202">"Numere cu apelări restricționate"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"Numere fixe de apelare (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="manage_fdn_list" msgid="8777755791892122369">"Listă FDN"</string>
-    <string name="fdn_list_with_label" msgid="7437232552210469217">"Lista FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="fdn_activation" msgid="2156479741307463576">"Activare FDN"</string>
+    <string name="fdn" msgid="7878832555095183202">"Numere apeluri restricționate"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Numere pentru apeluri restricționate (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="manage_fdn_list" msgid="8777755791892122369">"Listă NAR"</string>
+    <string name="fdn_list_with_label" msgid="7437232552210469217">"Listă NAR (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn_activation" msgid="2156479741307463576">"Activați NAR"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Numerele cu apelări restricționate sunt activate"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Numerele cu apelări restricționate sunt dezactivate"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Activați FDN"</string>
-    <string name="disable_fdn" msgid="7944020890722540616">"Dezactivați FDN"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Numerele pentru apeluri restricționate sunt dezactivate"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Activați NAR"</string>
+    <string name="disable_fdn" msgid="7944020890722540616">"Dezactivați NAR"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Schimbați codul PIN2"</string>
-    <string name="enable_fdn_ok" msgid="7215588870329688132">"Dezactivați FDN"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activați FDN"</string>
+    <string name="enable_fdn_ok" msgid="7215588870329688132">"Dezactivați NAR"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Activați NAR"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Gestionați numerele cu apelări restricționate"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Schimbați codul PIN pentru accesul FDN"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Schimbați codul PIN pentru acces la NAR"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Gestionați lista numerelor de telefon"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Confidențialitate voce"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Activați modul avansat de confidențialitate"</string>
@@ -352,9 +378,10 @@
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Reîncercare automată"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Activați modul Reîncercare automată"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Schimbarea modului TTY nu este permisă în timpul unui apel video"</string>
-    <string name="menu_add" msgid="1882023737425114762">"Adăugați o persoană în agendă"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Adăugați o persoană"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Modificați informațiile despre persoana din agendă"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Ștergeți persoana din agendă"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Apelați persoana de contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Introduceți codul PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Nume"</string>
     <string name="number" msgid="7905950798349903858">"Număr"</string>
@@ -368,12 +395,12 @@
     <string name="delete_fdn_contact" msgid="6668958073074151717">"Ștergeți numărul cu apelări restricționate"</string>
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Se șterge numărul cu apelări restricționate..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numărul cu apelări restricționate a fost șters."</string>
-    <string name="pin2_invalid" msgid="5470854099230755944">"FDN nu a fost actualizat, deoarece ați introdus un cod PIN incorect."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN nu a fost actualizat, deoarece numărul nu poate depăși 20 de cifre."</string>
-    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Numărul FDN nu a fost actualizat. Codul PIN2 a fost incorect sau numărul de telefon a fost respins."</string>
-    <string name="fdn_failed" msgid="540018079008319747">"Operațiunea FDN nu a reușit."</string>
+    <string name="pin2_invalid" msgid="5470854099230755944">"NAR nu a fost actualizat, deoarece ați introdus un cod PIN incorect."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Lista FDN nu a fost actualizată deoarece numărul nu a fost completat sau depășește 20 de cifre."</string>
+    <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"NAR nu a fost actualizat. Codul PIN2 a fost incorect sau numărul de telefon a fost respins."</string>
+    <string name="fdn_failed" msgid="540018079008319747">"Operațiunea NAR nu a reușit."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Se citește de pe cardul SIM..."</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Nicio persoană în agenda de pe cardul dvs. SIM."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Nicio persoană pe cardul SIM."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Selectați pentru import"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Pentru a importa persoane de contact de pe cardul SIM, dezactivați modul Avion."</string>
     <string name="enable_pin" msgid="5422767284133234860">"Activați/dezactivați codul PIN al cardului SIM"</string>
@@ -411,7 +438,7 @@
     <string name="pin2_unblocked" msgid="7791600368153469078">"Codul PIN2 nu mai este blocat"</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"Eroare de rețea sau de card SIM"</string>
     <string name="doneButton" msgid="2859593360997984240">"Terminat"</string>
-    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Număr mesagerie vocală"</string>
+    <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Număr de mesagerie vocală"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Apelează"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Se reapelează"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Teleconferință"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Număr mesagerie vocală necunoscut"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Fără serviciu"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rețeaua selectată (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nu este disponibilă"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Pentru a apela, dezactivați modul Avion."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Activați rețeaua mobilă, dezactivați modul avion sau modul de economisire a bateriei pentru a iniția un apel."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Pentru a apela, dezactivați modul Avion."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Pentru a apela, dezactivați modul Avion sau conectați-vă la o rețea wireless."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Ieșiți din modul de apelare inversă de urgență pentru a efectua un apel care nu este de urgență."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Neînregistrat în rețea."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rețeaua mobilă nu este disponibilă"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rețeaua mobilă nu este disponibilă. Pentru a apela, conectați-vă la o rețea wireless."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rețeaua mobilă nu este disponibilă."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Rețeaua mobilă nu este disponibilă. Pentru a apela, conectați-vă la o rețea wireless."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Pentru a apela, introduceți un număr valid."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nu se poate apela."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Se pornește secvența MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Apelul nu a fost inițiat."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Apelul nu poate fi adăugat în acest moment."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Serviciul nu este compatibil"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Apelurile nu pot fi comutate."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Apelul nu poate fi separat."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Teleconferința nu se poate efectua."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Apelul nu poate fi respins."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Apelurile nu pot fi eliberate."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Apelurile nu pot fi puse în așteptare."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Pentru a apela, conectați-vă la o rețea wireless."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Activați apelarea prin Wi-Fi pentru a iniția un apel."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Apel de urgență"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Se activează semnalul radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Fără semnal. Se încearcă din nou..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Nu se poate intra în modul avion în timpul unui apel de urgență."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Nu se poate apela. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nu este un număr de urgență."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nu se poate apela. Formați un număr de urgență."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Utilizați tastatura pentru a forma"</string>
@@ -464,11 +495,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importați-le pe toate"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Se importă persoanele din agenda de pe cardul SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importați din Agendă"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"Asistență auditivă"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Activați compatibilitatea cu asistența auditivă"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Persoana de contact a fost importată"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Persoana de contact nu a fost importată"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Aparate auditive"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Activați compatibilitatea cu aparatele auditive"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"Mod TTY dezactivat"</item>
-    <item msgid="3971695875449640648">"TTY plin"</item>
+    <item msgid="512950011423868021">"TTY dezactivat"</item>
+    <item msgid="3971695875449640648">"TTY integral"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -504,11 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"S-a activat modul de apelare inversă de urgență"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Mod de apelare inversă de urgență"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Conexiune de date dezactivată"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="few">Nicio conexiune de date timp de <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
-      <item quantity="other">Nicio conexiune de date timp de <xliff:g id="COUNT_1">%s</xliff:g> de minute</item>
-      <item quantity="one">Nicio conexiune de date timp de <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Nicio conexiune de date până la <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="few">Telefonul va fi în modul Apelare inversă de urgență pentru <xliff:g id="COUNT_1">%s</xliff:g> minute. Când telefonul este în acest mod, nu se poate folosi nicio aplicație care necesită o conexiune de date. Doriți să ieșiți acum?</item>
       <item quantity="other">Telefonul va fi în modul Apelare inversă de urgență pentru <xliff:g id="COUNT_1">%s</xliff:g> de minute. Când telefonul este în acest mod, nu se poate folosi nicio aplicație care necesită o conexiune de date. Doriți să ieșiți acum?</item>
@@ -524,7 +553,7 @@
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Da"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Nu"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Renunțați"</string>
-    <string name="voicemail_provider" msgid="5135942703327136909">"Servicii"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Serviciu"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Configurare"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Nesetat&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Alte setări de apel"</string>
@@ -534,10 +563,9 @@
     <string name="selectContact" msgid="781975788478987237">"selectarea unei persoane din agendă"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Apelarea vocală nu este acceptată"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"apelare"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrații"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrații"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Mesagerie vocală vizuală"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sunet"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Setați codul PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Schimbați codul PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ton de apel și vibrare"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Carduri SIM încorporate"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Activați apelurile video"</string>
@@ -548,9 +576,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Numai apeluri de urgență"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Cardul SIM, slotul: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accesibilitate"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Apel prin Wi-Fi primit"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Apel prin Wi-Fi de la"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Apel prin Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Atingeți din nou pentru a deschide"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Atingeți din nou pentru a deschide"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"A apărut o eroare la decodificarea mesajului."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Un card SIM a activat serviciul și a actualizat funcțiile de roaming ale telefonului."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Prea multe apeluri active. Încheiați sau îmbinați apeluri existente înainte de a iniția unul nou."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nu v-ați conectat. Inserați un card SIM valid."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Conexiunea Wi-Fi s-a pierdut. Apelul a fost încheiat."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Schimbați codul PIN pentru mesageria vocală"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Continuați"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Anulați"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Confirmați vechiul cod PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Introduceți codul PIN pentru mesageria vocală pentru a continua."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Setați un cod PIN nou"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Codul PIN trebuie să aibă între <xliff:g id="MIN">%1$d</xliff:g> - <xliff:g id="MAX">%2$d</xliff:g> cifre."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Confirmați codul PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Codurile PIN nu corespund"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Codul PIN pentru mesageria vocală a fost actualizat"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Nu s-a putut seta codul PIN"</string>
 </resources>
diff --git a/res/values-ru/config.xml b/res/values-ru/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ru/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 811aa8b..5131da9 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Мобильные данные"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Данные для мобильных устройств"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефон – сервисы"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Экстренный вызов"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Не указан номер голосовой почты"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM-карте нет ни одного номера голосовой почты."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Добавить номер"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Настройки голосовой почты может изменить только основной пользователь"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM-карта разблокирована. Осуществляется разблокировка телефона..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN для разблокировки сети SIM-карты"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Разблокировать"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Запрос разблокировки сети..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Запрос на разблокировку сети не выполнен."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Разблокировка сети успешно завершена."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Настройки мобильных сетей недоступны этому пользователю."</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Настройки мобильных сетей недоступны этому пользователю"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Настройки вызовов GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Настройки вызовов GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Настройки вызовов CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Выбрать аккаунт для звонков"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Выбрать аккаунт для звонков через SIP"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Сначала спрашивать"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Сеть недоступна"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Настройки"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Выбрать аккаунты"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Аккаунты для звонков"</string>
@@ -75,8 +77,9 @@
     <string name="voicemail" msgid="8693759337917898954">"Голосовая почта"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Голосовая почта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Уведомления"</string>
     <string name="networks" msgid="8873030692174541976">"Операторы связи"</string>
-    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Уведомления о чрезвычайных ситуациях"</string>
+    <string name="cell_broadcast_settings" msgid="8740238216690502563">"Оповещения о чрезвычайных ситуациях"</string>
     <string name="call_settings" msgid="6112441768261754562">"Вызовы"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Дополнительные настройки"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Дополнительные настройки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -90,8 +93,8 @@
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Номер, отображающийся при исходящих вызовах"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Использовать стандартные настройки оператора для показа моего номера при исходящих вызовах."</string>
     <string name="labelCW" msgid="6120513814915920200">"Параллельный вызов"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Извещать меня о входящих вызовах во время разговора."</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Извещать меня о входящих вызовах во время разговора."</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Извещать меня о входящих вызовах во время разговора"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Извещать меня о входящих вызовах во время разговора"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"Переадресация"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Переадресация (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Переадресация вызовов"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Если номер недоступен"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Переадресовывать на этот номер"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Переадресация на номер <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Отключено"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Выкл."</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ваш оператор не позволяет отключать переадресацию вызовов, если телефон находится вне зоны доступа."</string>
     <string name="updating_title" msgid="6146755386174019046">"Настройки вызовов"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Настройки вызовов может изменить только основной пользователь."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Настройки вызовов может изменить только основной пользователь"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Настройки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Ошибка настройки вызовов"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Чтение настроек…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Номер не изменен."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Выберите службу голосовой почты"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Ваш оператор связи"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Настройки мобильных сетей"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Старый PIN-код"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Новый PIN-код"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Подождите…"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новый PIN-код слишком короткий"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новый PIN-код слишком длинный"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новый PIN-код слишком простой. Чтобы пароль был надежным, он не должен содержать непрерывную последовательность чисел или повторяющиеся цифры."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Старый PIN-код указан неверно"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Новый PIN-код содержит недопустимые символы"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Не удалось сменить PIN-код"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Неподдерживаемый тип сообщения. Чтобы его прослушать, позвоните по телефону <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Настройки мобильной сети"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобильная сеть"</string>
     <string name="label_available" msgid="1181658289009300430">"Доступные сети"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Поиск…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Сети не найдены."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Регистрация в сети завершена."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Выберите оператора связи"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Поиск всех доступных сетей"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Автоматически"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Автоматически выбирать предпочтительную сеть"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Выбирать сеть автоматически"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Сеть"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Автоматическая регистрация..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Тип сети"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Изменить режим работы сети"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Только GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA (предпочтительно)"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Вызовы"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Сеть"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Режим 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Расширенный вызов"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Использовать сервисы LTE, чтобы улучшить качество связи (рекомендуется)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Передача данных"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Разрешить использование данных"</string>
-    <string name="roaming" msgid="8871412572928323707">"Интернет-роуминг"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Внимание!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роуминг"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Подключаться к службам передачи данных в роуминге"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Подключаться к службам передачи данных в роуминге"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Мобильный Интернет в роуминге отключен. Вы можете включить интернет-роуминг в настройках."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Возможны значительные расходы."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Разрешить интернет-роуминг?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Передача данных"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Объем мобильного трафика за период <xliff:g id="ID_2">%2$s</xliff:g>: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобильный Интернет"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Доступ к данным с помощью мобильного Интернета"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Звонки по Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Видеозвонки"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Параметры GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Параметры CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Передача данных"</string>
@@ -220,7 +246,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Превышение лимита снижает скорость передачи данных до <xliff:g id="USED">%1$d</xliff:g> кбит/с"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Подробнее о политике передачи данных вашего оператора мобильной связи…"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Подробнее о политике передачи данных вашего оператора мобильной связи..."</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Широковещательные SMS-службы"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Широковещательные SMS-службы"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Широковещательные SMS-службы включены"</string>
@@ -338,7 +364,7 @@
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Список разрешенных номеров (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Активация разреш. номеров"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Разрешенные номера включены"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Разрешенные номера отключены"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Разрешенные номера не используются"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Вкл. разрешенные номера"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Откл. разреш. номера"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Изменить PIN2"</string>
@@ -357,6 +383,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Добавить контакт"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Изменить контакт"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Удалить контакт"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Позвонить контакту"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Тип кода PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Имя"</string>
     <string name="number" msgid="7905950798349903858">"Номер"</string>
@@ -371,11 +398,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Выполняется удаление номера ограниченного набора…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Номер ограниченного набора удален."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Разрешенный номер не обновлен, так как введен неверный PIN-код."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Разрешенный номер не обновлен, т. к. не может содержать более 20 цифр."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Разрешенный номер не обновлен, так как он не может быть пустым или содержать более 20 цифр"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Список разрешенных номеров не обновлен. Указан неверный PIN2 или номер телефона."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Не удалось включить FDN"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Считывание с SIM-карты…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"На SIM-карте нет контактов."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"На SIM-карте нет контактов"</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Выберите контакты для импорта"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Чтобы импортировать контакты с SIM-карты, отключите режим полета."</string>
     <string name="enable_pin" msgid="5422767284133234860">"Включить/отключить запрос PIN SIM-карты"</string>
@@ -428,15 +455,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Номер голосовой почты неизвестен"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Сеть не найдена"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Выбранная сеть (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недоступна."</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Чтобы позвонить, отключите режим полета."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Чтобы позвонить, подключитесь к мобильной сети или отключите режим полета либо режим энергосбережения."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Чтобы позвонить, отключите режим полета."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Чтобы позвонить, отключите режим полета и подключитесь к Wi-Fi."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Чтобы сделать обычный звонок, выйдите из режима экстренных обратных вызовов."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Нет регистрации в сети."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобильная сеть недоступна."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобильная сеть недоступна. Чтобы позвонить, подключитесь к Wi-Fi."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Мобильная сеть недоступна."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобильная сеть недоступна. Чтобы позвонить, подключитесь к Wi-Fi."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Недействительный номер."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Не удалось позвонить."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Запуск последовательности MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Не удалось отправить вызов."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Невозможно позвонить в данный момент."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Сервис не поддерживается"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Не удалось переключить вызов."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Не удалось разделить вызов."</string>
@@ -444,10 +472,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Не удается создать конференц-вызов."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Не удалось отклонить вызов."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Не удалось разъединить."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Удержание невозможно."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Чтобы позвонить, подключитесь к Wi-Fi."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Чтобы позвонить, включите звонки через Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Экстренный вызов"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Включение радио…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нет сигнала. Повторная попытка…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Во время экстренного вызова перейти в режим полета нельзя"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Не удалось позвонить. Номер <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> не принадлежит экстренным службам."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Не удалось позвонить. Наберите номер экстренных служб."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Используйте клавиатуру для набора номера"</string>
@@ -466,8 +497,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Импортировать все"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Импорт контактов с SIM-карты"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Импортировать из контактов"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Контакт импортирован"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Не удалось импортировать контакт"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Слуховые аппараты"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Включить слуховой аппарат"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Включить поддержку слухового аппарата"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"Телетайп выключен"</item>
     <item msgid="3971695875449640648">"Полнофункциональный телетайп"</item>
@@ -506,12 +539,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Телефон переведен в режим экстренных обратных вызовов"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим экстренных обратных вызовов"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Передача данных отключена"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуту</item>
-      <item quantity="few">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуты</item>
-      <item quantity="many">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минут</item>
-      <item quantity="other">Подключение для передачи данных отсутствует <xliff:g id="COUNT_1">%s</xliff:g> минуты</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Подключения для передачи данных не будет до <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минуту. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
       <item quantity="few">Режим экстренных обратных вызовов будет действовать ещё <xliff:g id="COUNT_1">%s</xliff:g> минуты. При этом будут недоступны приложения с поддержкой передачи данных. Выйти?</item>
@@ -539,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"выбрать контакт"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Голосовые вызовы не поддерживаются"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"набор номера"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибросигнал"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибросигнал"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуальная голосовая почта"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Установка PIN-кода"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Изменение PIN-кода"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Рингтон и вибросигнал"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Встроенные SIM-карты"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Включить видеовстречи"</string>
@@ -553,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Только экстренные вызовы"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, слот: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Специальные возможности"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Входящий Wi-Fi-звонок"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Вызов по Wi-Fi от"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-звонок"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Нажмите ещё раз, чтобы открыть"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Чтобы открыть, нажмите ещё раз"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"При расшифровке сообщения произошла ошибка."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"В вашем телефоне уже настроен роуминг и активирована SIM-карта."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Слишком много активных вызовов. Чтобы выполнить новый вызов, завершите или объедините существующие."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ошибка подключения. Вставьте поддерживаемую SIM-карту."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Соединение по Wi-Fi разорвано. Вызов завершен."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Сменить PIN-код голосовой почты"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Продолжить"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Отмена"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ОК"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Подтвердите предыдущий PIN-код"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Чтобы продолжить, введите PIN-код голосовой почты"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Задайте новый PIN-код"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN-код должен содержать <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> зн."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Подтвердите PIN-код"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-коды не совпадают."</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-код голосовой почты обновлен"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Не удалось установить PIN-код"</string>
 </resources>
diff --git a/res/values-si-rLK/arrays.xml b/res/values-si/arrays.xml
similarity index 100%
rename from res/values-si-rLK/arrays.xml
rename to res/values-si/arrays.xml
diff --git a/res/values-si/config.xml b/res/values-si/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-si/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si/strings.xml
similarity index 85%
rename from res/values-si-rLK/strings.xml
rename to res/values-si/strings.xml
index f0f8427..4c6e67b 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"සෙල්‍යුලර් දත්ත"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ජංගම දත්ත"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"දුරකථන සේවා"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"හදිසි අමතනය"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"දුරකථනය"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"හඬ තැපැල් අංකය නැත"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM කාඩ් පතෙහි හඬ තැපැල් අංකයක් ආචිත වී නැත."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"අංකයක් එක් කරන්න"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"හඬ තැපැල් සැකසීම් මූලික පරිශීලක විසින් පමණක් වෙනස් කිරීමට හැකිය."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"ඔබගේ SIM කාඩ්පත අඟුළු හැර තිබේ. ඔබගේ දුරකතනයේ අඟුළු හරිමින්…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM ජාල අඟුළු හැරීමේ PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"අඟුල අරින්න"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"ජාල අඟුළු ඇරීමක් ඉල්ලුම් කරමින්…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"ජාලය අඟුළු හැරීමේ ඉල්ලීම අසාර්ථකයි."</string>
     <string name="unlock_success" msgid="6770085622238180152">"ජාලය අඟුළු හරිම සාර්ථකයි."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"මෙම පරිශීලකයා සඳහා සෙලියුලර් ජාල සැකසීම් නැත"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"මෙම පරිශීලකයා සඳහා ජංගම ජාල සැකසීම් නැත"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM ඇමතුම් සැකසුම්"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM ඇමතුම් සැකසීම් (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA ඇමතුම් සැකසුම්"</string>
@@ -63,10 +64,11 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"සමඟ ඇමතුම් ගන්න"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"සමඟ SIP ඇමතුම් ගන්න"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"මුළින් අසන්න"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ජාලයක් ලබා ගත නොහැකිය"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"සැකසීම්"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ගිණුම් තෝරන්න"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"දුරකථන ගිණුම්"</string>
-    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ගිණුම් එකතු කරන්න"</string>
+    <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP ගිණුම එක් කරන්න"</string>
     <string name="phone_accounts_configure_account_settings" msgid="1361715069911607109">"ගිණුමේ සැකසීම් වින්‍යාස කරන්න"</string>
     <string name="phone_accounts_all_calling_accounts" msgid="207619531589278471">"සියලු ඇමතුම් ගිණුම්"</string>
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"ඇමතුම් සිදු කළ හැකි ගිණුම් තෝරන්න"</string>
@@ -75,11 +77,12 @@
     <string name="voicemail" msgid="8693759337917898954">"හඬ තැපෑල"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"හඬ තැපෑල (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"දැනුම්දීම්"</string>
     <string name="networks" msgid="8873030692174541976">"ජාල ක්‍රියාකරුවන්"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"හදිසි විකාශන"</string>
     <string name="call_settings" msgid="6112441768261754562">"ඇමතුම් සැකසුම්"</string>
-    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"අමතර සැකසීම්"</string>
-    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"අමතර සැකසීම් (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="additional_gsm_call_settings" msgid="1391795981938800617">"අතිරේක සැකසීම්"</string>
+    <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"අතිරේක සැකසීම් (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"අමතර GSM පමණක් ඇමතුම් සැකසුම්"</string>
     <string name="additional_cdma_call_settings" msgid="8628958775721886909">"අමතර CDMA ඇමතුම් සැකසුම්"</string>
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"අමතර CDMA පමණක් ඇමතුම් සැකසුම්"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"ළඟා වීමට නොහැකි විට"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ළඟා විය නොහැකි විට අංකය"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> වෙත ඉදිරියට යවමින්"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"අබලයි"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"අක්‍රියයි"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ඔබගේ වාහකය ඔබගේ දුරකථනය ළඟා විය නොහැකි විට ඇමතුම් ඉදිරියට ගෙනයාම අබල කිරීමට සහාය නොදක්වයි."</string>
     <string name="updating_title" msgid="6146755386174019046">"ඇමතුම් සැකසීම්"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"ඇමතුම් සැකසීම් වෙනස් කළ හැක්කේ ප්‍රධාන පරිශීලකයකු විසින් පමණි."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ඇමතුම් සැකසීම් වෙනස් කළ හැක්කේ පරිපාලක පරිශීලකයාට පමණි."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"සැකසීම් (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"ඇමතුම් සැකසුම් දෝෂය"</string>
     <string name="reading_settings" msgid="1920291699287055284">"සැකසුම් කියවමින්…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"කිසිඳු වෙනස්කමක් සිදු නොකෙරුණි."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"හඬ තැපැල් සේවාව තෝරන්න"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"ඔබගේ වාහකයා"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"සෙලියුලර් ජාල සැකසීම්"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"පැරණි PIN අංකය"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"නව PIN අංකය"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"කරුණාකර රැඳී සිටින්න."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"නව PIN අංකය කෙටි වැඩිය."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"නව PIN අංකය දිග වැඩිය."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"නව PIN අංකය දුර්වල වැඩිය. ශක්තිමත් මුරපදයක අඛණ්ඩ අනුපිළිවෙළක් හෝ පුනරාවර්ත ඉලක්කම් නොතිබිය යුතුය."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"පැරණි PIN අංකය නොගැළපේ."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"නව PIN අංකයෙහි අවලංගු අනුලකුණු අන්තර්ගත වේ."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN අංකය මාරු කිරීමට නොහැකිය"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"සහාය නොදක්වන පණිවිඩය වර්ගය, සවන් දීමට <xliff:g id="NUMBER">%s</xliff:g> අමතන්න."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"ජංගම ජාල සැකසුම්"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"ජංගම ජාලය"</string>
     <string name="label_available" msgid="1181658289009300430">"තිබෙන ජාල"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"සොයමින්..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"කිසිඳු ජාලයක් සොයාගත නොහැකි විය."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"ජාලය මත ලියාපදිංචි වෙමින්."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ජාල ක්‍රියාකරවන්නෙකු තෝරන්න"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"සියලුම තිබෙන ජාල සොයන්න"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"ස්වයංක්‍රීයව තෝරන්න"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ස්වයංක්‍රීයව ප්‍රිය ජාල තෝරන්න"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"ස්වයංක්‍රියව ජාලය තෝරන්න"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"ජාලය"</string>
     <string name="register_automatically" msgid="6017849844573519637">"ස්වයංක්‍රීය ලියාපදිංචිය..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ප්‍රියකරන ජාල වර්ගය"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"ජාල මෙහෙයුම් ආකාරය වෙනස් කරන්න"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM පමණි"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA කැමතියි"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"අමතමින්"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"ජාලය"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"දියුණු කරන ලද 4G LTE මෝඩය"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"උසස් ඇමතුම්"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"හඬ සහ වෙනත් සන්නිවේදනයන් දියුණු කිරීමට LTE සේවාව භාවිතා කරන්න (නිර්දේශ කළ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"දත්ත සබලයි"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"දත්ත භාවිතයට ඉඩ දෙන්න"</string>
-    <string name="roaming" msgid="8871412572928323707">"දත්ත රෝමින්"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"අවධානය යොමු කරන්න"</string>
+    <string name="roaming" msgid="7894878421600247140">"රෝමිං"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"රෝමින් අතරතුර දත්ත සේවා වෙත සම්බන්ධ වන්න"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"රෝමින් අතරතුර දත්ත සේවා වෙත සම්බන්ධ වන්න"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"ඔබගේ නිවාස ජාලය ඔබ හැර ගිය විට දත්ත රෝමින් අක්‍රිය වන බැවින් දත්ත සම්බන්ධතාවය ඔබට නැති වෙයි"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"ඔබ සැලකිය යුතු ගාස්තු ඇති විය හැකිය."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"දත්ත රෝමින් සඳහා අවසර දෙන්න ද"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"දත්ත භාවිතය"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> අතර ජංගම දත්ත <xliff:g id="ID_1">%1$s</xliff:g>ක් භාවිත කර ඇත"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"වාහකය"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"ජංගම දත්ත"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"ජංගම ජාලය භාවිතයෙන් දත්ත වෙත ප්‍රවේශ වන්න"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi ඇමතීම"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"වාහක වීඩියෝ ඇමතීම"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS විකල්ප"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA විකල්ප"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"දත්ත භාවිතය"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> උපරිමය ඉක්මවා ඇත\nදත්ත සිඝ්‍රතාවය <xliff:g id="USED_1">%2$d</xliff:g> Kb/s වෙත අඩු කෙරෙන ලදි"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ චක්‍ර ඉක්ම ගොස්ය\nඊළඟ සීමාව ආරම්භ වන්නේ දින <xliff:g id="USED_1">%2$d</xliff:g> කිනි (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"දත්ත භාවිතා සීමාව ඉක්මවුවහොත් දත්ත සිඝ්‍රතාවය <xliff:g id="USED">%1$d</xliff:g> Kb/s වෙත අඩුවේ"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ඔබගේ ක්‍රියාකරුගේ සෙලියුලර් ජාලය දත්ත භාවිත ප්‍රතිපත්තිය පිලිබඳ තවත් තොරතුරු"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ඔබගේ ක්‍රියාකරුගේ ජංගම ජාලය දත්ත භාවිත ප්‍රතිපත්තිය පිලිබඳ තවත් තොරතුරු"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"සෙල් විකාශන SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"සෙල් විකාශන SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"සෙල් විකාශන SMS සබලයි"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"සම්බන්ධතාවය එක් කරන්න"</string>
     <string name="menu_edit" msgid="7143003705504672374">"සම්බන්ධතාව සංස්කරණය කරන්න"</string>
     <string name="menu_delete" msgid="3977150783449642851">"සම්බන්ධතාවය මකා දමන්න"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"සම්බන්ධතාව ඩයල් කරන්න"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 ටයිප් කරන්න"</string>
     <string name="name" msgid="7329028332786872378">"නම‍"</string>
     <string name="number" msgid="7905950798349903858">"අංකය"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ස්ථිර ඇමතුම් අංකය මකමින්..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ස්ථාවර ඇමතුම් අංකය මකන ලදි."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"ඔබ වැරදි PIN එකක් ඇතුලත් කළ බැවින් FDN යාවත්කාලින නොවුණි."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"අංකය ඉලක්කම් 20 ඉක්මවිය නොහැකි බැවින් FDN යාවත්කාල නොවුණි."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"අංකය හිස් නිසා හෝ ඉලක්කම් 20ක් ඉක්මවන නිසා FDN යාවත්කාලීන නොවීය."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN යාවත්කාලින නොවුණි. PIN2 වැරදියි, නැති නම් දුරකථන අංකය ප්‍රතික්ෂේප විය."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN ක්‍රියාවලිය අසමත්."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM කාඩ් පතෙන් කියවමින්…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"හඬතැපැල් අංකය නොදනී"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"සේවාව නැත"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"තෝරා ඇති ජාලය (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) නොමැත"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ඇමතුමක් ගැනීමට ගුවන් යානා මාදිලිය අක්‍රිය කරන්න."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"ජංගම ජාලය ක්‍රියාත්මක කරන්න, ඇමතුමක් ගැනීමට ගුවන් යානා ප්‍රකාරය හෝ බැටරි සුරැකුම් ප්‍රකාරය ක්‍රියාවිරහිත කරන්න."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ඇමතුමක් ගැනීමට ගුවන් යානා මාදිලිය අක්‍රිය කරන්න."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ඇමතුමක් ලබා ගැනීමට ගුවන් යානා මෝඩය අක්‍රිය කරන්න හෝ රැහැන් රහිත ජාලයකට සම්බන්ධ වෙන්න."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"හදිසි-නොවන ඇමතුමක් සිදු කිරීමට හදිසි අවස්ථා පසු ඇමතුම් ප්‍රකාරයෙන් ඉවත් වන්න."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ජාලය මත ලියාපදිංචි වී නැත."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"සෙලියුලර් ජාලය නොමැත"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"සෙලියුලර් ජාලය ලබාගත නොහැක. ඇමතුමක් ගැනීමට රැහැන් රහිත ජාලයකට සම්බන්ධ වෙන්න."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"ජංගම ජාලය නොමැත."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"ජංගම ජාලය ලබා ගැනීමට නොහැකිය. ඇමතුමක් කිරීමට රැහැන් රහිත ජාලයකට සම්බන්ධ කරන්න."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"ඇමතුම් ගැනීමට නොහැක."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI අනුපිළිවෙල ආරම්භ කරමින්…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"ඇමතුම අසාර්ථක විය."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ඇමතුම මේ අවස්ථාවේදී එක් කළ නොහැකිය."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"සේවාවට සහාය දක්වන්නේ නැත"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ඇමතුම් මාරු කිරීම කළ නොහැක."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ඇමතුම වෙන් කිරීම කළ නොහැක."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"සම්මන්ත්‍රණ ඇමතුම් ලබාගත නොහැකි විය."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ඇමතුම ප්‍රතික්ෂේප කළ නොහැක."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ඇමතුම(ම්) මුදාහැරීම කළ නොහැක."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ඇමතුම් රඳවා තැබීමට නොහැකිය."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"ඇමතුමක් ගැනීමට රැහැන් රහිත ජාලයක් වෙත සම්බන්ධ වෙන්න."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"ඇමතුමක් කිරීමට Wi-Fi ඇමතීම සබල කරන්න."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"හදිසි ඇමතුම"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"රේඩියෝව ආරම්භ කරමින්…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"සේවා නැත. නැවත උත්සාහ කරන්න…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"හදිසි අවස්ථා ඇමතුමක් අතරතුර ගුවන් යානා ප්‍රකාරය ඇතුළු කළ නොහැකිය."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ඇමතුම් ලබාගැනීම කළ නොහැක. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> මෙය හදිස්සි ඇමතුම් අංකයක් නොවේ."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ඇමතිය නොහැක. හදිසි අංකයක් අමතන්න."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ඇමතීමට කිරීමට යතුරු පුවරුව භාවිතා කරන්න"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"සියල්ල ආයාත කරන්න"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM සම්බන්ධතා ආයාත කරමින්"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"සම්බන්ධතා වෙතින් ආයාත කරන්න"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"ආයාත කළ සම්බන්ධතාවය"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"සම්බන්ධතාවය ආයාත කිරීමට නොහැකි විය"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"ඇසීමේ සහාය"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"ඇසීමේ සහාය සඳහා ගැලපීම සක්‍රිය කරන්න"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"හදිසි ආපසු ඇමතුම් ආකාරයට ඇතුලත් විණි"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"හදිසි ආපසු ඇමතුම් ආකාරය"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"දත්ත සම්බන්ධතාවය අබලයි"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් දත්ත සම්බන්ධතාවයක් නැත</item>
-      <item quantity="other">මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් දත්ත සම්බන්ධතාවයක් නැත</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> තෙක් දත්ත සම්බන්ධතාවක් නැත"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. මෙම ආකාරය තුළ සිටින අතරතුර දත්ත සම්බන්ධයක් භාවිත කරන යෙදුම් කිසිවක් භාවිත කළ නොහැකිය. ඔබට දැන් පිටවීමට අවශ්යද?</item>
       <item quantity="other">දුරකථනය මිනිත්තු <xliff:g id="COUNT_1">%s</xliff:g> ක් හදිසි ආපසු ඇමතුම් ආකාරය තුළ වනු ඇත. මෙම ආකාරය තුළ සිටින අතරතුර දත්ත සම්බන්ධයක් භාවිත කරන යෙදුම් කිසිවක් භාවිත කළ නොහැකිය. ඔබට දැන් පිටවීමට අවශ්යද?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"සම්බන්ධතාවය තෝරාගන්න"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"හඬ ඇමතීම සඳහා සහාය නොදක්වයි"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"අමතන්න"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"කම්පනය වීම"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"කම්පනය වීම"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"දෘශ්‍ය හඬ තැපෑල"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ශබ්දය"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN අංකය සකසන්න"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN අංකය වෙනස් කරන්න"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"රිගින් ටෝන් සහ කම්පනය කරන්න"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"තිළැලි SIM කාඩ් පත්"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"වීඩියෝ ඇමතීම සක්‍රිය කරමින්"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"හදිස්සි ඇමතූම් පමණි"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM කාඩ්පත්, තව්ව: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ප්‍රවේශ්‍යතාව"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"පැමිණෙන Wi-Fi ඇමතුම"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"වෙතින් Wi-Fi ඇමතුම"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi ඇමතුම"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"විවෘත කිරීමට නැවත ස්පර්ශ කරන්න"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"විවෘත කිරීමට නැවත තට්ටු කරන්න"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"පණිවිඩය විකේතනය කරන අතරතුර දෝෂයක් සිදු විය."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM කාඩ්පතක් ඔබේ සේවාව සක්‍රිය කර ඔබේ දුරකථනයේ රෝමිං හැකියා යාවත්කාලීන කර තිබේ."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"සක්‍රිය ඇමතුම් ඉතා විශාල ගණනක් ඇත. කරුණාකර නව ඇමතුමක් ගැනීමට පෙර පවතින ඇමතුම් අවසන් හෝ ඒකාබද්ධ කරන්න."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"සම්බන්ධ වීමට නොහැකිය, කරුණාකර වලංගු SIM කාඩ්පතක් ඇතුළු කරන්න."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi සම්බන්ධතාවය අහිමි විය. ඇමතුම අවසන් විය."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"හඬ තැපැල් PIN අංකය වෙනස් කරන්න"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"දිගටම කර ගෙන යන්න"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"අවලංගු කරන්න"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"හරි"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"ඔබේ පැරණි PIN අංකය තහවුරු කරන්න"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"දිගටම කරගෙන යාමට ඔබ හඬ තැපැල් PIN අංකය ඇතුළු කරන්න."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"නව PIN අංකයක් සකසන්න"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN අංකය ඉලක්කම් <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> අතර විය යුතුය."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ඔබගේ PIN අංකය තහවුරු කරන්න"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN අංකය නොගැළපේ"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"හඬ තැපැල් PIN අංකය යාවත්කාලීන කෙරිණි"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN අංකය සැකසීමට නොහැකිය"</string>
 </resources>
diff --git a/res/values-sk/config.xml b/res/values-sk/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sk/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index d65476b..4f22c44 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobilné dáta"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilné dáta"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefónne služby"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Tiesňové vytáčanie"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefón"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Chýba číslo hlasovej schránky"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Na SIM karte nie je uložené žiadne číslo hlasovej schránky."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Pridať číslo"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Nastavenia hlasovej schránky môže zmeniť iba primárny používateľ."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM karta bola odblokovaná. Prebieha odomykanie telefónu..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Kód PIN odomknutia siete pre SIM kartu"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Odomknúť"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Žiadosť o odomknutie siete..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Žiadosť o odomknutie siete nebola úspešná."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Sieť bola odomknutá."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Nastavenia mobilnej siete nie sú pre tohto používateľa dostupné"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavenia mobilnej siete nie sú pre tohto používateľa dostupné"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavenia hovorov GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Nastavenia hovorov v sieti GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavenia hovorov CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Volať pomocou"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Uskutočniť hovory SIP pomocou účtu"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Najprv sa opýtať"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"K dispozícii nie je žiadna sieť"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Nastavenia"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Vybrať účty"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefónne účty"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Hlasová schránka"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Hlasová schránka (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"HS:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Upozornenia"</string>
     <string name="networks" msgid="8873030692174541976">"Sieťoví operátori"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Núdzové vysielania"</string>
     <string name="call_settings" msgid="6112441768261754562">"Nastavenia hovorov"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Pri nedostupnosti"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Číslo pri nedostupnosti"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Presmerovanie na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Vypnuté"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Vypnuté"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Váš operátor neumožňuje zakázanie presmerovaní, keď je telefón nedostupný."</string>
     <string name="updating_title" msgid="6146755386174019046">"Nastavenia hovorov"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Nastavenia hovorov môže zmeniť iba hlavný používateľ."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Nastavenia hovorov môže zmeniť iba používateľ s povoleniami správcu."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Nastavenia (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Chyba nastavení hovorov"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Nastavenia sa načítajú…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Neuskutočnili sa žiadne zmeny."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Zvoliť službu hlasovej schránky"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Váš operátor"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Nastavenia mobilnej siete"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Starý PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nový PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Čakajte, prosím."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nový PIN je príliš krátky."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nový PIN je príliš dlhý."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nový PIN je príliš slabý. Silné heslo by nemalo obsahovať postupnosť ani opakujúce sa číslice."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Starý PIN sa nezhoduje."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Nový PIN obsahuje neplatné znaky."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN nie je možné zmeniť"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepodporovaný typ správy, zavolajte na číslo <xliff:g id="NUMBER">%s</xliff:g> a vypočujte si správu."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Nastavenia mobilnej siete"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilná sieť"</string>
     <string name="label_available" msgid="1181658289009300430">"Dostupné siete"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Hľadá sa…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nebola nájdená žiadna sieť."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Prihlásenie k sieti prebehlo úspešne."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Zvoliť sieťového operátora"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Hľadať všetky dostupné siete"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Vybrať automaticky"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Automaticky vybrať preferovanú sieť"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Vybrať sieť automaticky"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Sieť"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatická registrácia..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Preferovaný typ siete"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Zmeniť prevádzkový režim siete"</string>
@@ -196,29 +210,41 @@
     <item msgid="1524224863879435516">"Iba GSM"</item>
     <item msgid="3817924849415716259">"GSM / WCDMA – preferované"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Volanie"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Sieť"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Zlepšený režim 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Rozšírené volanie"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Použiť služby LTE na vylepšenie hlasu a ďalších komunikácií (odporúčané)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Povoliť dát. prenosy"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Povoliť využívanie dát"</string>
-    <string name="roaming" msgid="8871412572928323707">"Dátový roaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Pozor"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Pripájať sa k dátovým službám pri roamingu"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Pripájať sa k dátovým službám pri roamingu"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Dátové pripojenie bolo prerušené, pretože ste opustili domovskú sieť a máte vypnutý dátový roaming."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Môžu sa vám účtovať vysoké poplatky."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Povoliť dátový roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Spotreba dát"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Spotreba mobilných dát za obdobie <xliff:g id="ID_2">%2$s</xliff:g> je <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operátor"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobilné dáta"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Prístup k dátam pomocou mobilnej siete"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Volanie cez Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videohovory prostredníctvom operátora"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Spotreba dát"</string>
     <string name="throttle_current_usage" msgid="8762280193043815361">"Dáta využité v aktuálnom období"</string>
     <string name="throttle_time_frame" msgid="1915198770363734685">"Obdobie využitia dát"</string>
     <string name="throttle_rate" msgid="4710388992676803508">"Pravidlá pre prenosovú rýchlosť"</string>
-    <string name="throttle_help" msgid="243651091785169900">"Viac informácií"</string>
+    <string name="throttle_help" msgid="243651091785169900">"Ďalšie informácie"</string>
     <string name="throttle_status_subtext" msgid="1657318943142085170">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) z limitu <xliff:g id="USED_2">%3$s</xliff:g> pre obdobie\nPočet dní do začiatku ďalšieho obdobia: <xliff:g id="USED_3">%4$d</xliff:g> (<xliff:g id="USED_4">%5$s</xliff:g>)"</string>
     <string name="throttle_data_usage_subtext" msgid="6029276011123694701">"<xliff:g id="USED_0">%1$s</xliff:g> (<xliff:g id="USED_1">%2$d</xliff:g> ٪) z limitu <xliff:g id="USED_2">%3$s</xliff:g> pre obdobie"</string>
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Bol prekročený limit <xliff:g id="USED_0">%1$s</xliff:g>\nPrenosová rýchlosť bola znížená na <xliff:g id="USED_1">%2$d</xliff:g> kB/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Uplynulo <xliff:g id="USED_0">%1$d</xliff:g>٪ cyklu\nPočet dní do začiatku ďalšieho obdobia: <xliff:g id="USED_1">%2$d</xliff:g> (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"V prípade prekročenia limitu využitia dát sa prenosová rýchlosť zníži na <xliff:g id="USED">%1$d</xliff:g> kB/s"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Ďalšie informácie o pravidlách využitia dát v mobilnej sieti vášho mobilného operátora"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Ďalšie informácie o pravidlách využitia dát v mobilnej sieti vášho mobilného operátora"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS Cell Broadcast"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS Cell Broadcast"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS Cell Broadcast povolené"</string>
@@ -339,22 +365,23 @@
     <string name="fdn_disabled" msgid="4700049736675368279">"Režim povolených čísel je vypnutý"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Zapnúť režim povolených čísel"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Vypnúť režim povolených čísel"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"Zmena kódu PIN2"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"Zmeniť kód PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Vypnúť režim povolených čísel"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Zapnúť režim povolených čísel"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Umožňuje spravovať povolené čísla"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Umožňuje zmeniť kód PIN na prístup k povoleným číslam"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Správa telefónneho zoznamu"</string>
-    <string name="voice_privacy" msgid="3776841382844614716">"Ochrana osobných údajov hlasovej pošty"</string>
+    <string name="voice_privacy" msgid="3776841382844614716">"Ochrana súkromia hlasovej pošty"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Povoliť režim vylepšenej ochrany osobných údajov"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Režim textového telefónu"</string>
-    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Nastaviť režim TTY"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Nastaviť textový telefón"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Automaticky skúsiť znova"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Povoliť režim Automaticky skúsiť znova."</string>
-    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Zmena režimu TTY nie je povolená počas videohovoru"</string>
+    <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Zmena režimu textového telefónu nie je povolená počas videohovoru"</string>
     <string name="menu_add" msgid="1882023737425114762">"Pridať kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Upraviť kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Odstrániť kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Vytočiť kontakt"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Zadajte kód PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Meno"</string>
     <string name="number" msgid="7905950798349903858">"Číslo"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Odstraňuje sa povolené číslo…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Povolené číslo bolo odstránené."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Povolené čísla neboli aktualizované. Zadali ste nesprávny kód PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Povolené čísla neboli aktualizované. Číslo nemôže mať viac ako 20 číslic."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Režim povolených čísel nebol aktualizovaný, pretože číslo je prázdne alebo obsahuje viac než 20 číslic."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Povolené čísla neboli aktualizované. Kód PIN2 je nesprávny alebo bolo telefónne číslo odmietnuté."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operácia s povolenými číslami zlyhala."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Prebieha čítanie zo SIM karty..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Číslo hlasovej schránky je neznáme"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Žiadny signál"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Vybratá sieť (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nie je k dispozícii"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Ak chcete volať, vypnite režim v lietadle"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Ak chcete volať, zapnite mobilnú sieť a vypnite režim v lietadle alebo režim šetriča batérie."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Ak chcete volať, vypnite režim v lietadle"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Ak chcete volať, vypnite režim v lietadle alebo sa pripojte k bezdrôtovej sieti"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Ak chcete volať štandardným spôsobom, ukončite režim tiesňového spätného volania."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Prihlásenie do siete nebolo úspešné."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilná sieť nie je k dispozícii."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilná sieť nie je k dispozícii. Ak chcete volať, pripojte sa k bezdrôtovej sieti."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobilná sieť nie je k dispozícii."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilná sieť nie je k dispozícii. Ak chcete volať, pripojte sa k bezdrôtovej sieti."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ak chcete volať, zadajte platné číslo"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Hovor nie je možné uskutočniť"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Prebieha spúšťanie sekvencie MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Hovor zlyhal."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hovor momentálne nie je možné pridať."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Služba nie je podporovaná"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nedajú sa prepínať hovory"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nedá sa rozdeliť hovor"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hovory nie je možné spojiť do konferenčného hovoru."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nedá sa odmietnuť hovor"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nedajú sa ukončiť hovory"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hovory nie je možné podržať."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Ak chcete volať, pripojte sa k bezdrôtovej sieti"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Na uskutočnenie hovoru povoľte volanie cez Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Tiesňové volanie"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Prebieha zapínanie rádia..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Žiadna služba. Prebieha opätovný pokus…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Počas tiesňového volania sa nedá zapnúť režim v lietadle."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Hovor nie je možné uskutočniť. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nie je číslo tiesňového volania."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Hovor nie je možné uskutočniť. Vytočte číslo tiesňového volania."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Číslo vytočíte pomocou klávesnice."</string>
@@ -464,13 +495,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importovať všetko"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importovanie kontaktov z SIM karty"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Import z kontaktov"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt bol importovaný"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontakt sa nepodarilo importovať"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Načúvacie pomôcky"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Zapnúť režim kompatibility s načúvacou pomôckou"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY vypnuté"</item>
-    <item msgid="3971695875449640648">"Úplný režim TTY"</item>
-    <item msgid="1937509904407445684">"TTY HCO"</item>
-    <item msgid="5644925873488772224">"TTY VCO"</item>
+    <item msgid="512950011423868021">"Textový telefón vypnutý"</item>
+    <item msgid="3971695875449640648">"Úplný textový telefón"</item>
+    <item msgid="1937509904407445684">"Textový telefón HCO"</item>
+    <item msgid="5644925873488772224">"Textový telefón VCO"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"Tóny DTMF"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"Nastaviť dĺžku tónov DTMF"</string>
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Bol aktivovaný režim tiesňového spätného volania"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Režim tiesňového spätného volania"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dátové pripojenie zakázané"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="few">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
-      <item quantity="many">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
-      <item quantity="other">Žiadne dátové pripojenie – <xliff:g id="COUNT_1">%s</xliff:g> min</item>
-      <item quantity="one">Žiadne dátové pripojenie – <xliff:g id="COUNT_0">%s</xliff:g> min</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Dátové pripojenie nebude dostupné do <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="few">Telefón bude <xliff:g id="COUNT_1">%s</xliff:g> minúty v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
       <item quantity="many">Telefón bude <xliff:g id="COUNT_1">%s</xliff:g> minúty v režime spätného tiesňového volania. Keď bude v tomto režime, nesmiete používať žiadne aplikácie využívajúce dátové pripojenie. Chcete ho ukončiť?</item>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"vybrať kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Hlasové volanie nie je podporované"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"vytáčanie"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrovať"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrovať"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizuálna hlasová schránka"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvuk"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Nastavenie kódu PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Zmena kódu PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Tón zvonenia a vibrovanie"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vstavané SIM karty"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Zapnúť videohovory"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Tiesňové volania iba na čísla"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Slot na SIM kartu: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Dostupnosť"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Prich. hovor cez Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Hovor cez Wi-Fi od:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Hovor cez Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Otvorte opätovným klepnutím"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Otvoríte opätovným klepnutím"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Pri dekódovaní správy sa vyskytla chyba"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM karta aktivovala vašu službu a aktualizovala možnosti roamingu vášho telefónu"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Prebieha príliš veľa aktívnych hovorov. Skôr ako uskutočníte nový hovor, ukončite existujúce hovory alebo ich zlúčte."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nedá sa pripojiť, vložte platnú SIM kartu."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Pripojenie Wi-Fi bolo stratené. Hovor bol ukončený."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Zmena kódu PIN hlasovej schránky"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Pokračovať"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Zrušiť"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potvrďte starý kód PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Ak chcete pokračovať, zadajte kód PIN hlasovej schránky."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Nastavte nový kód PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Kód PIN musí mať tento počet číslic: <xliff:g id="MIN">%1$d</xliff:g> – <xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potvrďte kód PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Kódy PIN sa nezhodujú"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Kód PIN hlasovej schránky bol aktualizovaný"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kód PIN sa nedá nastaviť"</string>
 </resources>
diff --git a/res/values-sl/config.xml b/res/values-sl/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sl/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 8bd42db..7a2bccf 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Prenos podatkov v mobilnih omrežjih"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobilni podatki"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Storitve telefona"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Klicalnik za nujne primere"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Manjkajoča številka glasovne pošte"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Na kartici SIM ni shranjena številka glasovne pošte."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Dodaj številko"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Nastavitve odzivnika lahko spremeni samo primarni uporabnik."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Kartica SIM je bila deblokirana. Telefon se odklepa ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN za odklep omrežja kartice SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Odkleni"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Zahteva za odklepanje omrežja ..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Zahteva za odklepanje omrežja neuspešna."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Odklepanje omrežja uspešno."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Nastavitve mobilnega omrežja niso na voljo za tega uporabnika"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Nastavitve mobilnega omrežja niso na voljo za tega uporabnika"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Nastavitve klicev GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Nastavitve klicanja za GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Nastavitve klicev CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Izvajaj klice z računom"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Izvajaj klice SIP z računom"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Prej vprašaj"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Na voljo ni nobenega omrežja"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Nastavitve"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Izbira računov"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Računi telefona"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Glasovna pošta"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Odzivnik (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Obvestila"</string>
     <string name="networks" msgid="8873030692174541976">"Omrežni operaterji"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Oddaje v sili"</string>
     <string name="call_settings" msgid="6112441768261754562">"Nastavitve klicev"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Pri nedosegljivosti"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Številka, ko nisem dosegljiv"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Preusmerjanje na <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Onemogočeno"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Izklopljeno"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Vaš operater ne podpira izklopa preusmeritve klicev, kadar je telefon nedosegljiv."</string>
     <string name="updating_title" msgid="6146755386174019046">"Nastavitve klicev"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Nastavitve klicanja lahko spremeni samo primarni uporabnik."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Nastavitve klicanja lahko spremeni samo uporabnik s skrbniškim dostopom."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Nastavitve (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Napaka nastavitev klicev"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Branje nastavitev …"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Narejena ni bila nobena sprememba."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Izberite storitev glasovne pošte"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Vaš operater"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Nastavitve mob. omrežja"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Stara koda PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Nova koda PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Počakajte."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Nova koda PIN je prekratka."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Nova koda PIN je predolga."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Nova koda PIN je prešibka. Zapleteno geslo ne sme vsebovati zaporednih ali ponavljajočih se števk."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Stara koda PIN se ne ujema."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Nova koda PIN vsebuje neveljavne znake."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Ni mogoče spremeniti kode PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Nepodprta vrsta sporočila, za poslušanje pokličite <xliff:g id="NUMBER">%s</xliff:g>."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Nastavitve mobi. omrežja"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilno omrežje"</string>
     <string name="label_available" msgid="1181658289009300430">"Razpoložljiva omrežja"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Iskanje ..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Najdeno ni bilo nobeno omrežje."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrirano v omrežju."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Izbira omrežnega operaterja"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Najdi vsa razpoložljiva omrežja"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Samodejna izbira"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Samodejna izbira prednostnega omrežja"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Samodejno izberi omrežje"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Omrežje"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Samodejna registracija ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Prednostna vrsta omrežja"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Sprememba načina delovanja omrežja"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Samo GSM"</item>
     <item msgid="3817924849415716259">"Prednostno GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Klicanje"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Omrežje"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Izboljšan način 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Napredno klicanje"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Uporaba storitev LTE za izboljšanje glas. in drugih komunikacij (priporočeno)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Podatki omogočeni"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Dovoli prenos podatkov"</string>
-    <string name="roaming" msgid="8871412572928323707">"Podatkovno gostovanje"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Opozorilo"</string>
+    <string name="roaming" msgid="7894878421600247140">"Gostovanje"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Med gostovanjem vzpostavi povezavo s podatkovnimi storitvami"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Med gostovanjem vzpostavi povezavo s podatkovnimi storitvami"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Podatkovna povezava ni mogoča, ker ste zapustili domače omrežje, podatkovno gostovanje pa je izklopljeno."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Stroški utegnejo biti veliki."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Želite dovoliti podatkovno gostovanje?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Prenesena količina podatkov"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"V obdobju <xliff:g id="ID_2">%2$s</xliff:g> je bilo v mobilnem omrežju prenesenih <xliff:g id="ID_1">%1$s</xliff:g> podatkov"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operater"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Prenos podatkov v mobilnem omrežju"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Dostop do podatkov prek mobilnega omrežja"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Klicanje prek Wi-Fi-ja"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videoklicanje prek operaterja"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Možnosti GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Možnosti CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Uporaba podatkov"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> omejitev presežena\nPodatki omejeni na <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ cikla potečenega\nNaslednje obdobje se začne čez <xliff:g id="USED_1">%2$d</xliff:g> dni (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Če je presežena omejitev porabe podatkov, se podatkovna hitrost zmanjša na <xliff:g id="USED">%1$d</xliff:g> Kb/s."</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Več informacij o pravilniku o uporabi podatkov v mobilnem omrežju vašega operaterja"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Več informacij o pravilniku o uporabi podatkov v mobilnem omrežju vašega operaterja"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Oddajni vmesnik SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Oddajni vmesnik SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Oddajni vmesnik SMS omogočen"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Dodaj stik"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Urejanje stika"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Izbriši stik"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Pokliči stik"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Vnesite kodo PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Ime"</string>
     <string name="number" msgid="7905950798349903858">"Številka"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Brisanje zapore odhodnega klica ..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Zapora odhodnega klica izbrisana."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN ni bil posodobljen, ker ste vnesli napačno kodo PIN."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ni bil posodobljen, ker število ne sme presegati 20 mest."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Funkcija FDN ni bila posodobljena, ker je številka prazna ali ima več kot 20 mest."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN ni bil posodobljen. Koda PIN2 je bila napačna ali pa je bila telefonska številka zavrnjena."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Postopek za omejeno klicanje ni uspel."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Branje kartice SIM ..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Neznana številka glasovne pošte"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ni storitve"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Izbrano omrežje (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ni na voljo"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Izklopite način za letalo, če želite opraviti klic."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Vklopite mobilno omrežje, izklopite način za letalo ali način za varčevanje z energijo akumulatorja, če želite opraviti klic."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Izklopite način za letalo, če želite opraviti klic."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Izklopite način za letalo ali se povežite v omrežje Wi-Fi, če želite opraviti klic."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Če ne gre za klic v sili, zaprite način za povratni klici v sili."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ni registrirano v omrežju."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobilno omrežje ni na voljo."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobilno omrežje ni na voljo. Povežite se v omrežje Wi-Fi, če želite opraviti klic."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Omrežje prenosnega telefona ni na voljo."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobilno omrežje ni na voljo. Če želite opraviti klic, vzpostavite povezavo z brezžičnim omrežjem."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Če želite opraviti klic, vnesite veljavno številko."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Klicanje ni mogoče."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Začetek zaporedja MMI ..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Klic ni uspel."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Klica trenutno ni mogoče dodati."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Storitev ni podprta"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Preklop med klici ni mogoč."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Ločitev klica ni mogoča."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konferenčni klici onemogočeni."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Zavrnitev klica ni mogoča."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Prevzem klicev ni mogoč."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Klicev ni mogoče zadržati."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Povežite se v omrežje Wi-Fi, če želite opraviti klic."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Če želite opraviti klic, omogočite klicanja prek Wi-Fi-ja."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Klic v sili"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Vklop radia …"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ni signala. Vnovičen poskus …"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Načina za letalo ni mogoče vklopiti med klicem v sili."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Klicanje ni mogoče. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ni številka za klic v sili."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Klicanje ni mogoče. Opravite klic v sili."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Za klicanje uporabite tipkovnico"</string>
@@ -464,8 +495,10 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Uvozi vse"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Uvažanje stikov s kartice SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Uvozi iz stikov"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Uvožen je bil stik"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Uvoz stika ni uspel"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Slušni pripomočki"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Vključi združljivost slušnega pripomočka"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Vključi združljivost s slušnim pripomočkom"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"Način TTY izklopljen"</item>
     <item msgid="3971695875449640648">"TTY poln"</item>
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Vnesen način za povratni klic v sili"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Način povratnega klica v sili"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Podatkovno povezovanje onemogočeno"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minuto</item>
-      <item quantity="two">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minuti</item>
-      <item quantity="few">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minute</item>
-      <item quantity="other">Podatkovne povezave ni <xliff:g id="COUNT_1">%s</xliff:g> minut</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Podatkovne povezave ne bo do <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minuto. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
       <item quantity="two">Telefon bo v načinu povratnega klica v sili <xliff:g id="COUNT_1">%s</xliff:g> minuti. V tem načinu ni mogoče uporabljati aplikacij, ki uporabljajo podatkovno povezavo. Ali želite zapreti?</item>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"izbira stika"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Glasovno klicanje ni podprto"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"klicanje"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibriraj"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibriraj"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizualno sporočilo v odzivniku"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Zvok"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Nastavitev kode PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Sprememba kode PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zvonjenje in vibriranje"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Vgrajene kartice SIM"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Vklop videoklicev"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Samo klicanje v sili"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Kartica SIM, reža: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Funkcije za ljudi s posebnimi potrebami"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Dohodni klic Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Klic prek Wi-Fi-ja osebe"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Klic Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Dotaknite se znova, če želite odpreti"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Znova se dotaknite, če želite odpreti"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Napaka pri dekodiranju sporočila."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Kartica SIM je aktivirala vašo storitev in posodobila zmožnosti telefona za gostovanje."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Preveč aktivnih klicev. Preden začnete nov klic, končajte ali združite obstoječe klice."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Povezave ni mogoče vzpostaviti, vstavite veljavno kartico SIM."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Povezava Wi-Fi je bila prekinjena. Klic je končan."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Sprememba kode PIN za sporočila v odzivniku"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Naprej"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Prekliči"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"V redu"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Potrditev stare kode PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Če želite nadaljevati, vnesite kodo PIN za sporočila v odzivniku."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Nastavitev nove kode PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Koda PIN mora imeti <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g> števk."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Potrditev kode PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Kodi PIN se ne ujemata"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Koda PIN za sporočila v odzivniku je posodobljena"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kode PIN ni mogoče nastaviti"</string>
 </resources>
diff --git a/res/values-sq-rAL/arrays.xml b/res/values-sq/arrays.xml
similarity index 100%
rename from res/values-sq-rAL/arrays.xml
rename to res/values-sq/arrays.xml
diff --git a/res/values-sq/config.xml b/res/values-sq/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sq/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq/strings.xml
similarity index 86%
rename from res/values-sq-rAL/strings.xml
rename to res/values-sq/strings.xml
index 2c8cae2..fd27703 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Të dhëna celulare"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Të dhëna celulare"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Shërbimet e telefonit"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Formuesi i numrit të urgjencës"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefoni"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Mungon numri i postës zanore"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Nuk ka numër të ruajtur në kartën SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Shto numër"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Cilësimet e postës zanore mund të modifikohen vetëm nga \"Përdoruesi kryesor\""</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Karta jote SIM u zhbllokua. Telefoni yt po shkyçet..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN-i i shkyçjes së rrjetit të kartës SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Shkyçe"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Po kërkon shkyçjen e rrjetit…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Kërkesa për shkyçjen e rrjetit ishte e pasuksesshme."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Shkyçja e rrjetit ishte e suksesshme."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Cilësimet e rrjetit celular nuk mundësohen për këtë përdorues"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Cilësimet e rrjetit celular nuk ofrohen për këtë përdorues"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Cilësimet e telefonatës GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Cilësimet e telefonatës GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Cilësimet e telefonatës CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Kryej telefonata me"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Kryej telefonata SIP me"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Pyet në fillim"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Nuk ka rrjet të arritshëm"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Cilësimet"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Zgjidh llogaritë"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Llogari telefoni"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Posta zanore"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Posta zanore (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Njoftimet"</string>
     <string name="networks" msgid="8873030692174541976">"Operatorët e rrjetit"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Transmetimet e urgjencës"</string>
     <string name="call_settings" msgid="6112441768261754562">"Cilësimet e telefonatës"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kur është e paarritshme"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numri, nëse linja është e paarritshme"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Transferim te <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Çaktivizuar"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Çaktivizuar"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatori yt nuk mbështet çaktivizimin e transferimit të telefonatës kur telefoni është i paarritshëm."</string>
     <string name="updating_title" msgid="6146755386174019046">"Cilësimet e telefonatës"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Cilësimet e telefonatës mund të ndryshohen vetëm nga përdoruesi kryesor."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Cilësimet e telefonatës mund të ndryshohen vetëm nga administratori."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Cilësimet (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Gabim në cilësimet e telefonatës"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Po lexon cilësimet…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Nuk u bë asnjë ndryshim."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Zgjidh shërbimin e postës zanore"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatori yt"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Cilësimet e rrjetit celular"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Kodi PIN i vjetër"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Kodi PIN i ri"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Prit..."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Kodi i ri PIN është shumë i shkurtër."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Kodi i ri PIN është shumë i gjatë."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Kodi i ri PIN është shumë i dobët. Një fjalëkalim i fortë nuk duhet të ketë rend të vazhdueshëm ose shifra të përsëritura."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Kodi PIN i vjetër nuk përputhet."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Kodi PIN i ri përmban karaktere të pavlefshme."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Kodi PIN nuk u ndryshua."</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Lloj mesazhi i pambështetur, telefono <xliff:g id="NUMBER">%s</xliff:g> për ta dëgjuar."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Cilësimet e rrjetit celular"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Rrjeti celular"</string>
     <string name="label_available" msgid="1181658289009300430">"Rrjete të arritshme"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Po kërkon..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Nuk u gjetën rrjete."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Regjistruar në rrjet."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Zgjidh një operator rrjeti"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Kërko të gjitha rrjetet e arritshme"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Zgjidh automatikisht"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Zgjidh automatikisht rrjetin e preferuar"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Zgjidh automatikisht rrjetin"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Rrjeti"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Regjistrim automatik…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Lloji i preferuar i rrjetit"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Ndrysho modalitetin e operimit të rrjetit"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Vetëm GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA i preferuar"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Po telefonon"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Rrjeti"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Modaliteti i përparuar 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Telefonatë e avancuar"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Përdor shërbimet LTE për të përmirësuar komunikimet zanore dhe të tjera (rekomandohet)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Të dhënat janë të aktivizuara"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Lejo përdorimin e të dhënave"</string>
-    <string name="roaming" msgid="8871412572928323707">"Të dhënat e roaming-ut"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Kujdes!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Lidhu me shërbimet e të dhënave kur je në roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Lidhu me shërbimin e të dhënave kur je në roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"E humbët lidhjen e të dhënave sepse sapo latë rrjetin e vendit tuaj dhe tani jeni me të dhëna roaming-u, të cilat ende nuk janë aktivizuar."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Mund të shkaktohen tarifa të larta."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Të lejohet përdorimi i të dhënave kur je në roaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Përdorimi i të dhënave"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> të dhëna celulare të përdorura mes datave <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatori celular"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Të dhënat celulare"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Qasu te të dhënat duke përdorur rrjetin celular"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Telefonata me Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Telefonata me video e operatorit celular"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Opsionet GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Opsionet CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Përdorimi i të dhënave"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"U kapërcye maksimumi i <xliff:g id="USED_0">%1$s</xliff:g>\nShpejtësia e të dhënave u pakësua deri në <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Ka kaluar <xliff:g id="USED_0">%1$d</xliff:g>٪ të ciklit\nPeriudha tjetër fillon për <xliff:g id="USED_1">%2$d</xliff:g> ditë (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Shpejtësia e të dhënave pakësohet në <xliff:g id="USED">%1$d</xliff:g> Kb/s nëse tejkalohet kufiri i përdorimit të të dhënave"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Më shumë informacion rreth politikës së përdorimit të të dhënave të rrjetit celular të operatorit tënd"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Më shumë informacion rreth politikës së përdorimit të të dhënave të rrjetit celular të operatorit tënd"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS-ja e \"Transmetimit celular\""</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS-ja e transmetimit celular"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS-ja e \"Transmetimit celular\" është e aktivizuar"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Shto kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Redakto kontaktin"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Fshi kontaktin"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Telefono kontaktin"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Shkruaj PIN2-shin"</string>
     <string name="name" msgid="7329028332786872378">"Emri"</string>
     <string name="number" msgid="7905950798349903858">"Numri"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Po fshin numrin me telefonim të përzgjedhur..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Numri me telefonim të përzgjedhur u fshi."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN-ja nuk u përditësua sepse shkrove një PIN të pasaktë."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN-ja nuk ishte i përditësuar sepse numri nuk mund të kalojë 20 shifra."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Funksioni FDN nuk u përditësua sepse numri është bosh ose i kalon 20 shifra."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN-ja nuk u përditësua. PIN2-shi ishte i pasaktë ose numri i telefonit u refuzua."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Operacioni FDN dështoi"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Po lexon nga karta SIM..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Numri i postës zanore është i panjohur"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Nuk ka shërbim"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Rrjeti i përzgjedhur (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) nuk mundësohet"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Çaktivizo modalitetin e aeroplanit për të bërë telefonata."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Aktivizo rrjetin celular, çaktivizo modalitetin e aeroplanit ose modalitetin e kursyesit të baterisë për të bërë një telefonatë."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Çaktivizo modalitetin e aeroplanit për të bërë telefonata."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Çaktivizo modalitetin e aeroplanit ose lidhu me ndonjë rrjet interneti valor për të bërë telefonata."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Dil nga modaliteti i kthimit të telefonatës së urgjencës për të bërë një telefonatë jo urgjente."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"I paregjistruar në rrjet."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Rrjeti celular nuk mundësohet."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Rrjeti celular nuk mundësohet. Lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Rrjeti celular nuk mundësohet."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Rrjeti celular nuk ofrohet. Lidhu me një rrjet pa tel për të bërë një telefonatë."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Nuk mund të telefonojë."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Po fillon sekuencën MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Thirrja dështoi."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Telefonata nuk mund të shtohet këtë herë."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Shërbimi nuk mbështetet"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Nuk mund të ndryshojë telefonatat."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Nuk mund të ndajë telefonatën."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Nuk mund të kryejë telefonatë konference."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Nuk mund të refuzojë telefonatën."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Nuk mund të lëshojë telefonatën(at)."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Telefonatat nuk mund të mbahen në pritje."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Lidhu me një rrjet me valë për të bërë një telefonatë."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktivizo telefonatat nëpërmjet rrjetit Wi-Fi për të bërë një telefonatë."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Telefonata e urgjencës"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Po aktivizon radion…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Nuk ka shërbim. Po provon sërish…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Nuk mund të hysh në modalitetin e aeroplanit gjatë telefonatave të urgjencës."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Nuk mund të telefonohet. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> nuk është numër urgjence."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Nuk mund të telefonohet. Formo një numër urgjence."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Përdor tastierën për të formuar numrin"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importoji të gjitha"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Po importon kontaktet e kartës SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importo nga kontaktet"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakti u importua"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Dështoi në importimin e kontaktit"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Aparatet e dëgjimit"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Aktivizo përputhshmërinë e aparateve të dëgjimit"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Hyri në modalitetin e \"Kthimit të telefonatës së urgjencës\""</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Modaliteti i \"Kthimit të telefonatës së urgjencës\""</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Lidhja me të dhënat është çaktivizuar"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Nuk ka të dhëna të lidhura për <xliff:g id="COUNT_1">%s</xliff:g> minuta</item>
-      <item quantity="one">Nuk ka të dhëna të lidhura për <xliff:g id="COUNT_0">%s</xliff:g> minutë</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Nuk ka lidhje të të dhënave deri në <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefoni do të përdoret në modalitetin e \"Kthimit të Telefonatës së Urgjencës\" për <xliff:g id="COUNT_1">%s</xliff:g> minuta. Ndërkohë që është në këtë modalitet, nuk mund të përdoret asnjë aplikacion duke përdorur lidhje të dhënash. Dëshiron të dalësh tani?</item>
       <item quantity="one">Telefoni do të jetë në modalitetin e \"Kthimit të telefonatës së urgjencës\" për <xliff:g id="COUNT_0">%s</xliff:g> minuta. Ndërkohë që është në këtë modalitet, nuk mund të përdoret asnjë aplikacion duke përdorur lidhje të dhënash. Dëshiron të dalësh tani?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"përzgjidh kontaktin"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Telefonata zanore nuk mbështetet"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"formo numrin"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dridhja"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dridhja"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Posta zanore vizuale"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tingulli"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Konfiguro kodin PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Ndrysho kodin PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Me zile dhe me dridhje"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Kartat e integruara SIM"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Aktivizo telefonatën me video"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Vetëm telefonata urgjence"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Karta SIM, foleja: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Qasshmëria"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Telefonatë hyrëse Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Telefonatë Wi-Fi nga"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Telefonatë me Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Prek sërish për ta hapur"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Trokit përsëri për ta hapur"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Ndodhi një gabim gjatë dekodimit të mesazhit."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Një kartë SIM ka aktivizuar shërbimin tënd dhe ka përditësuar aftësitë e roaming-ut të telefonit tënd."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Ka shumë thirrje aktive. Përfundo ose të bashko thirrjet ekzistuese para kryerjes së një thirrjeje të re."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Nuk mund të lidhet. Fut një kartë SIM të vlefshme."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Lidhja Wi-Fi ka humbur. Telefonata u mbyll."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Ndrysho kodin PIN të postës zanore"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Vazhdo"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Anulo"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Në rregull"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Konfirmo kodin PIN të vjetër"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Shkruaj kodin PIN të postës zanore për të vazhduar."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Cakto një kod të ri PIN."</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Kodi PIN duhet të ketë <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> shifra."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Konfirmo kodin tënd PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Kodet PIN nuk përputhen"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Kodi PIN i postës zanore u përditësua"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Kodi PIN nuk u caktua"</string>
 </resources>
diff --git a/res/values-sr/config.xml b/res/values-sr/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sr/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 5e0a2c5..be2f37a 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -16,11 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Подаци за мобилне уређаје"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Мобилни подаци"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефонске услуге"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Хитни позиви"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
-    <string name="fdnListLabel" msgid="8630418672279521003">"Листа бројева за фиксно бирање"</string>
+    <string name="fdnListLabel" msgid="8630418672279521003">"Бројеви за фиксно бирање"</string>
     <string name="unknown" msgid="6878797917991465859">"Непознато"</string>
     <string name="private_num" msgid="6713286113000232309">"Приватан број"</string>
     <string name="payphone" msgid="4793877574636445118">"Телефонска говорница"</string>
@@ -29,7 +29,7 @@
     <string name="ussdRunning" msgid="485588686340541690">"USSD кôд је покренут…"</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"MMI кôд је отказан"</string>
     <string name="cancel" msgid="5044513931633602634">"Откажи"</string>
-    <string name="enter_input" msgid="1810529547726803893">"USSD порука мора да има између <xliff:g id="MIN_LEN">%d</xliff:g> и <xliff:g id="MAX_LEN">%d</xliff:g> знакова. Покушајте поново."</string>
+    <string name="enter_input" msgid="1810529547726803893">"USSD порука мора да има између <xliff:g id="MIN_LEN">%d</xliff:g> и <xliff:g id="MAX_LEN">%d</xliff:g> знакова. Пробајте поново."</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Управљање конференцијским позивом"</string>
     <string name="ok" msgid="3811371167865772377">"Потврди"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Звучник"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Недостаје број за говорну пошту"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Није ускладиштен ниједан број говорне поште на SIM картици."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Додај број"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Само примарни корисник може да мења подешавања говорне поште."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Ваша SIM картица је одблокирана. Телефон се откључава..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN за откључавање мреже на SIM картици"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Откључај"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Тражење откључавања мреже"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Неуспешан захтев за закључавање мреже."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Успешно откључавање мреже"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Подешавања мобилне мреже нису доступна за овог корисника"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Подешавања мобилне мреже нису доступна за овог корисника"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Подешавања GSM позива"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Подешавања GSM позива (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA подешавања позива"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Подешавања CDMA позива (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"Називи приступних тачака"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Називи прист. тачака"</string>
     <string name="settings_label" msgid="3876743539816984008">"Мрежна подешавања"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Налози за позивање"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Упућујте позиве помоћу"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Упућујте SIP позиве помоћу"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Прво питај"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Мрежа није доступна"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Подешавања"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Изаберите налоге"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Налози на телефону"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Говорна пошта"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Гласовна пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Обавештења"</string>
     <string name="networks" msgid="8873030692174541976">"Мрежни оператери"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Хитни преноси"</string>
     <string name="call_settings" msgid="6112441768261754562">"Подешавања позива"</string>
@@ -106,18 +109,18 @@
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"Прослеђује се на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"Искључено"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Оператер не подржава онемогућавање преусмеравања позива када је телефон заузет."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"Кад се не јавите"</string>
-    <string name="messageCFNRy" msgid="672317899884380374">"Број кад се не јавите"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Кад се не јавим"</string>
+    <string name="messageCFNRy" msgid="672317899884380374">"Број кад се не јавим"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Прослеђује се на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Искључено"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Оператер не подржава онемогућавање преусмеравања позива када се на позив не одговори."</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"Када је недоступно"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Кад сам недоступан/а"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Број кад је недоступно"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Прослеђује се на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Онемогућено"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Искључено"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Мобилни оператер не подржава онемогућавање преусмеравања позива када је телефон недоступан."</string>
     <string name="updating_title" msgid="6146755386174019046">"Подешавања позива"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Само примарни корисник може да мења подешавања позива."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Само кориснику са администраторским правима је дозвољено да мења подешавања позива."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Подешавања (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Грешка у подешавањима позива"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Подешавања се учитавају…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Нису извршене никакве промене."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Одаберите услугу говорне поште"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Мобилни оператер"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Подешавања мобилне мреже"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Стари PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Нови PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Сачекајте."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Нови PIN је прекратак."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Нови PIN је предугачак."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Нови PIN је преслаб. Јака лозинка не треба да садржи узастопни низ ни поновљене цифре."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Стари PIN се не подудара."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Нови PIN садржи неважеће знакове."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Промена PIN-а није успела"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Неподржани тип поруке. Позовите <xliff:g id="NUMBER">%s</xliff:g> да бисте је преслушали."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Подешавања за моб. мрежу"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобилна мрежа"</string>
     <string name="label_available" msgid="1181658289009300430">"Доступне мреже"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Претражује се…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Нису пронађене мреже."</string>
@@ -154,12 +168,12 @@
     <string name="network_query_error" msgid="6828516148953325006">"Грешка током тражења мрежа."</string>
     <string name="register_on_network" msgid="9055203954040805084">"Регистровање на <xliff:g id="NETWORK">%s</xliff:g>…"</string>
     <string name="not_allowed" msgid="5613353860205691579">"SIM картица не дозвољава везу са овом мрежом."</string>
-    <string name="connect_later" msgid="2308119155752343975">"Тренутно није могуће повезати се са овом мрежом. Покушајте поново касније."</string>
+    <string name="connect_later" msgid="2308119155752343975">"Тренутно није могуће повезати се са овом мрежом. Пробајте поново касније."</string>
     <string name="registration_done" msgid="495135664535876612">"Регистровано на мрежи."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Изаберите мрежног оператера"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Потражи све доступне мреже"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Изабери аутоматски"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Аутоматски избор жељене мреже"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Аутоматски изабери мрежу"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Мрежа"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Аутоматска регистрација..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Жељени тип мреже"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Промена режима рада мреже"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Само GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA има предност"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Позивање"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Мрежа"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Побољшани 4G LTE режим"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Напредно позивање"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Коришћење LTE услуга за побољшање гласовних и других комуникација (препоручено)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Подаци су омогућени"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Омогућавање потрошње података"</string>
-    <string name="roaming" msgid="8871412572928323707">"Пренос података у ромингу"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Пажња"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роминг"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Повезивање са услугом за податке током роминга"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Повезивање са услугом за податке током роминга"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Веза за пренос података је прекинута зато што сте напустили кућну мрежу са искљученим преносом података у ромингу."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Могу да настану значајни трошкови."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Дозвољавате ли пренос података у ромингу?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Употреба података"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Потрошили сте <xliff:g id="ID_1">%1$s</xliff:g> мобилних података у периоду <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Мобилни оператер"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобилни подаци"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Користите податке преко мобилне мреже"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Позивање преко Wi-Fi-ја"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Видео позивање преко оператера"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Опције за GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA опције"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Коришћење података"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> максимум је премашен\nСтопа преноса података смањена је на <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪  је протекло од циклуса\nСледећи период почиње за <xliff:g id="USED_1">%2$d</xliff:g> дана (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Брзина преноса података смањена је на <xliff:g id="USED">%1$d</xliff:g> Kb/s ако је премашено ограничење за коришћење података"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Више информација о смерницама за коришћење података мобилне мреже оператера"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Више информација о смерницама за коришћење података мобилне мреже оператера"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS инфо сервиса"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS инфо сервиса"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Омогућен је SMS инфо сервиса"</string>
@@ -330,19 +356,19 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Активирање уређаја"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Подесите усл. преноса података"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Подешавања оператера"</string>
-    <string name="fdn" msgid="7878832555095183202">"Фиксни бирани бројеви"</string>
+    <string name="fdn" msgid="7878832555095183202">"Бројеви за фиксно бирање"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Бројеви за фиксно бирање (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Листа бројева за фиксно бирање"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Листа бројева за фиксно бирање (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN активација"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"Омогућени су фиксни бирани бројеви"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Онемогућени су фиксни бирани бројеви"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Омогућени су бројеви за фиксно бирање"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Онемогућени су бројеви за фиксно бирање"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Омогући број за фиксно бирање"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Онемогући број за фиксно бирање"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Промени PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Онемогући број за фиксно бирање"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Омогући број за фиксно бирање"</string>
-    <string name="sum_fdn" msgid="1959399454900272878">"Управљање фиксним бираним бројевима"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Управљање бројевима за фиксно бирање"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Промени PIN за приступ броју за фиксно бирање"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Управљање листом телефонских бројева"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Приватност гласа"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Додај контакт"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Измени контакт"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Избриши контакт"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Позови контакт"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Унесите PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Име"</string>
     <string name="number" msgid="7905950798349903858">"Број"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Брисање броја за фиксно бирање…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Избрисан је број за фиксно бирање."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Број за фиксно бирање није ажуриран јер сте унели нетачан PIN кôд."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Број за фиксно бирање није ажуриран јер број не сме да премашује 20 цифара."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Број за фиксно бирање није ажуриран јер је празан или има више од 20 цифара."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN није ажуриран. PIN2 је нетачан или је број телефона одбачен."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Радња са бројем за фиксно бирање није успела."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Чита се са SIM картице…"</string>
@@ -382,8 +409,8 @@
     <string name="oldPinLabel" msgid="5287773661246368314">"Стари PIN"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Нови PIN"</string>
     <string name="confirmPinLabel" msgid="257597715098070206">"Потврдите нови PIN"</string>
-    <string name="badPin" msgid="8955102849303984935">"Стари PIN кôд који сте унели је нетачан. Покушајте поново."</string>
-    <string name="mismatchPin" msgid="5923253370683071889">"PIN кодови које сте унели се не подударају. Покушајте поново."</string>
+    <string name="badPin" msgid="8955102849303984935">"Стари PIN кôд који сте унели је нетачан. Пробајте поново."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"PIN кодови које сте унели се не подударају. Пробајте поново."</string>
     <string name="invalidPin" msgid="5981171102258684792">"Откуцајте PIN који има од 4 до 8 бројева."</string>
     <string name="disable_sim_pin" msgid="3419351358300716472">"Брисање PIN-а за SIM"</string>
     <string name="enable_sim_pin" msgid="4845145659651484248">"Подешавање PIN-а за SIM"</string>
@@ -397,9 +424,9 @@
     <string name="oldPin2Label" msgid="8559146795026261502">"Стари PIN2"</string>
     <string name="newPin2Label" msgid="4573956902204349054">"Нови PIN2"</string>
     <string name="confirmPin2Label" msgid="8100319484454787708">"Потврдите нови PIN2"</string>
-    <string name="badPuk2" msgid="7910064009531541708">"PUK2 није тачан. Покушајте поново."</string>
-    <string name="badPin2" msgid="6646896629970023109">"Стари PIN2 није тачан. Покушајте поново."</string>
-    <string name="mismatchPin2" msgid="4177967478551851117">"PIN2 кодови се не подударају. Покушајте поново."</string>
+    <string name="badPuk2" msgid="7910064009531541708">"PUK2 није тачан. Пробајте поново."</string>
+    <string name="badPin2" msgid="6646896629970023109">"Стари PIN2 није тачан. Пробајте поново."</string>
+    <string name="mismatchPin2" msgid="4177967478551851117">"PIN2 кодови се не подударају. Пробајте поново."</string>
     <string name="invalidPin2" msgid="1757045131429105595">"Унесите PIN2 који садржи 4 до 8 цифара."</string>
     <string name="invalidPuk2" msgid="7059081153334815973">"Унесите PUK2 који садржи 8 цифара."</string>
     <string name="pin2_changed" msgid="3724522579945610956">"PIN2 је ажуриран"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Непознат број говорне поште"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Нема услуге"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Изабрана мрежа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) није доступна"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Искључите режим рада у авиону да бисте упутили позив."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Укључите мобилну мрежу и искључите режим рада у авиону или режим уштеде батерије да бисте упутили позив."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Искључите режим рада у авиону да бисте упутили позив."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Искључите режим рада у авиону или се повежите на бежичну мрежу да бисте упутили позив."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Изађите из режима хитног повратног позива да бисте упутили позив који није хитан."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Није регистровано на мрежи."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобилна мрежа није доступна."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобилна мрежа није доступна. Повежите се на бежичну мрежу да бисте упутили позив."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Мобилна мрежа није доступна."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобилна мрежа није доступна. Повежите се на бежичну да бисте упутили позив."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Да бисте упутили позив, унесите важећи број."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Позив није успео."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Покретање MMI секвенце"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Позив није успео."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Тренутно није могуће додати позив."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Услуга није подржана"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Замена позива није успела."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Раздвајање позива није успело."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Конференцијски позиви нису могући."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Одбијање позива није успело."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Успостављање позива није успело."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Није могуће стављати позиве на чекање."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Повежите се на бежичну мрежу да бисте упутили позив."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Омогућите позивање преко Wi-Fi-ја да бисте упутили позив."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Хитан позив"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Укључивање радија…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Нема мреже. Поновни покушај…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Улазак у режим рада у авиону није могућ током хитног позива."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Позив није успео. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> није број за хитне случајеве."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Позив није успео. Позовите број за хитне случајеве."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Користите тастатуру за позивање"</string>
@@ -464,10 +495,12 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Увези све"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Увоз SIM контаката"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Увези из контаката"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Контакт је увезен"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Увоз контакта није успео"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Слушни апарат"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Укључи компатибилност са слушним апаратом"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY искључено"</item>
+    <item msgid="512950011423868021">"TTY је искључен"</item>
     <item msgid="3971695875449640648">"TTY је пун"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
@@ -495,20 +528,16 @@
     <string name="ota_progress" msgid="460876637828044519">"Телефон се програмира…"</string>
     <string name="ota_failure" msgid="7713756181204620397">"Програмирање телефона није успело"</string>
     <string name="ota_successful" msgid="1880780692887077407">"Телефон је сада активиран. Можда ће бити потребно највише 15 минута да би се услуга покренула."</string>
-    <string name="ota_unsuccessful" msgid="8072141612635635357">"Телефон се није активирао. \nМожда је потребно да пронађете област са бољом покривеношћу (близу прозора или напољу). \n\nПокушајте поново или позовите корисничку подршку за још опција."</string>
+    <string name="ota_unsuccessful" msgid="8072141612635635357">"Телефон се није активирао. \nМожда је потребно да пронађете област са бољом покривеношћу (близу прозора или напољу). \n\nПробајте поново или позовите корисничку подршку за још опција."</string>
     <string name="ota_spc_failure" msgid="3909983542575030796">"СЛУЧАЈНА SPC ГРЕШКА"</string>
     <string name="ota_call_end" msgid="4537279738134612388">"Назад"</string>
-    <string name="ota_try_again" msgid="7685477206465902290">"Покушај поново"</string>
+    <string name="ota_try_again" msgid="7685477206465902290">"Пробај поново"</string>
     <string name="ota_next" msgid="3904945374358235910">"Следеће"</string>
     <string name="ecm_exit_dialog" msgid="4448531867763097533">"Дијалог за излазак из режима хитног повратног позива"</string>
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Унет је режим за хитан повратни позив"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Режим за хитан повратни позив"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Веза за пренос података је онемогућена"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
-      <item quantity="few">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
-      <item quantity="other">Нема везе за пренос података <xliff:g id="COUNT_1">%s</xliff:g> минута</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Веза за пренос података неће бити доступна до <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT_1">%s</xliff:g> минут. Док је у овом режиму не можете да користите апликације које користе везу за пренос података. Желите ли одмах да изађете из овог режима?</item>
       <item quantity="few">Телефон ће бити у Режиму хитног повратног позива <xliff:g id="COUNT_1">%s</xliff:g> минута. Док је у овом режиму не можете да користите апликације које користе везу за пренос података. Желите ли одмах да изађете из овог режима?</item>
@@ -529,15 +558,14 @@
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Није подешено&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Друга подешавања позива"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"Позивање преко <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
-    <string name="contactPhoto" msgid="4713193418046639466">"фотографија контакта"</string>
+    <string name="contactPhoto" msgid="4713193418046639466">"слика контакта"</string>
     <string name="goPrivate" msgid="865837794424530980">"иди на приватно"</string>
     <string name="selectContact" msgid="781975788478987237">"изаберите контакт"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Аудио позиви нису подржани"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"бирање"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вибрација"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вибрација"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Визуелна говорна пошта"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Подесите PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Промените PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Мелодија звона и вибрација"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Уграђене SIM картице"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Укључи видео позиве"</string>
@@ -548,9 +576,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Само за хитне позиве"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM картица, отвор: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Приступачност"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Долазни Wi-Fi позив"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi позив од"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi позив"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Додирните поново да бисте отворили"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Додирните поново да бисте отворили"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Дошло је до грешке при декодирању поруке."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM картица је активирала услугу и ажурирала функције роминга на телефону."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Има превише активних позива. Завршите или обједините постојеће позиве пре него што упутите нови."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Повезивање није успело, убаците важећу SIM картицу."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi веза је прекинута. Позив је завршен."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Промените PIN кôд говорне поште"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Настави"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Откажи"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Потврди"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Потврдите стари PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"кôд говорне поште да бисте наставили."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Подесите нови PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Број цифара које PIN мора да садржи: <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Потврдите PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-ови се не подударају"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN кôд говорне поште је ажуриран"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Подешавање PIN-а није успело"</string>
 </resources>
diff --git a/res/values-sv/config.xml b/res/values-sv/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sv/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 3282288..765b7a3 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobildata"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobildata"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefontjänster"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Nödsamtal"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nummer till röstbrevlåda saknas"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Det finns inget nummer till röstbrevlådan sparat på SIM-kortet."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Lägg till nummer"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Endast den primära användaren får ändra röstbrevlådans inställningar."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM-kortets spärr har tagits bort. Låser upp telefonen…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN-kod för upplåsning av SIM-nätverk"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Lås upp"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Försöker låsa upp nätverket…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Det gick inte att låsa upp nätverket."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Nätverket upplåst"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Inställningarna för mobilnätverk är inte tillgängliga för den här användaren"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Inställningarna för mobilnätverk är inte tillgängliga för den här användaren"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Samtalsinst. för GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Samtalsinställningar för GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Samtalsinst. för CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Ring med"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Ring SIP-samtal med"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Fråga först"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Det finns inget tillgängligt nätverk"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Inställningar"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Välj konton"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Konton på mobilen"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Röstbrevlåda"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Röstbrevlåda (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"RB:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Aviseringar"</string>
     <string name="networks" msgid="8873030692174541976">"Nätverksoperatörer"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Nödsändningar"</string>
     <string name="call_settings" msgid="6112441768261754562">"Samtalsinställningar"</string>
@@ -92,9 +95,9 @@
     <string name="labelCW" msgid="6120513814915920200">"Samtal väntar"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"Meddela mig om inkommande samtal under pågående samtal"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"Meddela mig om inkommande samtal under pågående samtal"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Inställningar för Vidarebefordra samtal"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Inställningar vidarebefordning"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Inställningar för vidarebefordran av samtal (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"Vidarebefordra samtal"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Vidarekoppla samtal"</string>
     <string name="labelCFU" msgid="8147177368148660600">"Vidarebefordra alltid"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Använd alltid detta nummer"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Vidarebefordra alla samtal"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"När jag inte kan nås"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Använd nummer"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Vidarebefordrar till <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Inaktiverat"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Av"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatören stöder inte inaktivering av vidarebefordran av samtal när det inte går att nå telefonen."</string>
     <string name="updating_title" msgid="6146755386174019046">"Samtalsinställningar"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Det är bara den primära användaren som kan ändra samtalsinställningar."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Det är bara administratören som kan ändra samtalsinställningar."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Inställningar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Felaktiga samtalsinställningar"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Läser inställningar…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Du har inte gjort några ändringar."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Välj tjänst för röstbrevlådan"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Din operatör"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Inställningar för mobilnätverk"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Gammal pinkod"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Ny pinkod"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Vänta."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Den nya pinkoden är för kort."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Den nya pinkoden är för lång."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Den nya pinkoden är för svag. Ett säkert lösenord bör inte ha siffror i ordningsföljd eller upprepade siffror."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Den gamla pinkoden stämmer inte."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Den nya pinkoden innehåller ogiltiga tecken."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Det gick inte att ändra pinkoden"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Meddelandetypen stöds inte, ring <xliff:g id="NUMBER">%s</xliff:g> om du vill lyssna."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobila nätverksinställningar"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobilnätverk"</string>
     <string name="label_available" msgid="1181658289009300430">"Tillgängliga nätverk"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Söker…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Hittade inga nätverk."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Registrerad på nätverk."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Välj en nätverksoperatör"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Sök efter alla tillgängliga nätverk"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Välj automatiskt"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Välj önskat nätverk automatiskt"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Välj nätverk automatiskt"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Nätverk"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Automatisk registrering ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Önskad nätverkstyp"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Ändra nätverksläge"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Endast GSM"</item>
     <item msgid="3817924849415716259">"Föredrar GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Ringer upp"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Nätverk"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Förbättrat 4G LTE-läge"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Avancerade samtal"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Använd LTE-tjänster för att förbättra bl.a. röstkommunikation (rekommenderas)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data är aktiverat"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Tillåt dataanvändning"</string>
-    <string name="roaming" msgid="8871412572928323707">"Dataroaming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Obs!"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Anslut till datatjänster vid roaming"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Anslut till datatjänster vid roaming"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Du förlorade dataanslutningen eftersom du lämnade ditt hemnätverk utan att aktivera dataroaming."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Detta kan leda till höga kostnader."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vill du tillåta dataroaming?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Dataanvändning"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> mobildata använt mellan <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatör"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobildata"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Få åtkomst till data via mobilt nätverk"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi-samtal"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Videosamtal via operatören"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Alternativ för GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA-alternativ"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Dataanvändning"</string>
@@ -224,7 +250,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Datahastigheten sänks till <xliff:g id="USED">%1$d</xliff:g> kbit/s om dataanvändningsgränsen överskrids"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Mer information om operatörens dataanvändningspolicy för mobilnätverket"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Mer information om operatörens dataanvändningspolicy för mobilnätverket"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Cell Broadcast SMS aktiverat"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Lägg till kontakt"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Redigera kontakt"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Ta bort kontakt"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Ring kontakt"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Ange PIN2-kod"</string>
     <string name="name" msgid="7329028332786872378">"Namn"</string>
     <string name="number" msgid="7905950798349903858">"Nummer"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Tar bort fast nummer…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Det fasta numret har tagits bort."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN uppdaterades inte eftersom du skrev en felaktig PIN-kod."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN uppdaterades inte eftersom numret inte får ha mer än 20 siffror."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Det fasta uppringningsnumret (FDN) uppdaterades inte eftersom det är tomt eller överskriver 20 siffror."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN uppdaterades inte. Antingen har du angivit fel PIN2, eller så avvisades telefonnumret."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Det gick inte att ringa till fast uppringningsnummer."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Läser från SIM-kort…"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nummer till röstbrevlåda okänt"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ingen tjänst"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Det valda nätverket (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) är inte tillgängligt"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Inaktivera flygplansläget om du vill ringa."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Aktivera mobilt nätverk, stäng av flygplansläget eller batterisparläget för att ringa ett samtal."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Inaktivera flygplansläget om du vill ringa."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Inaktivera flygplansläget eller anslut till ett trådlöst nätverk om du vill ringa."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Avsluta läget för återuppringning vid nödsamtal om du vill ringa ett vanligt samtal."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Inte registrerat på nätverk."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Det finns inget mobilnät tillgängligt."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Det finns inga tillgängliga mobilnätverk. Anslut till ett trådlöst nätverk om du vill ringa."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Inget mobilt nätverk är tillgängligt."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Det finns inga tillgängliga mobilnätverk. Anslut till ett trådlöst nätverk om du vill ringa."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ange ett giltigt nummer om du vill ringa ett samtal."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Det gick inte att ringa."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Startar sekvens för MMI-kod…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Det gick inte att koppla samtalet."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Det går inte att lägga till samtalet just nu."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Tjänsten stöds inte"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Det gick inte att växla mellan samtal."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Det gick inte att koppla isär samtalen."</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Det gick inte att ringa konferenssamtal."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Det gick inte att avvisa samtalet."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Det gick inte att släppa samtal."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Det går inte att hålla kvar samtal."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Anslut till ett trådlöst nätverk om du vill ringa."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Aktivera Wi-Fi-samtal för att ringa."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Nödsamtal"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Sätter på radion…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ingen tjänst. Försök igen …"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Det går inte att aktivera flygplansläge under nödsamtal."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Det gick inte att ringa. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> är inget nödnummer."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Det gick inte att ringa. Slå ett nödnummer."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Använd tangentbordet om du vill ringa"</string>
@@ -470,6 +501,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Importera alla"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Importera SIM-kontakter"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Importera från Kontakter"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Importerad kontakt"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Det gick inte att importera kontakter"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Hörapparater"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Aktivera kompatibilitet med hörapparat"</string>
   <string-array name="tty_mode_entries">
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Starta läget Återuppringning vid nödsamtal"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Läget Återuppringning vid nödsamtal"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Dataanslutning inaktiverad"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Ingen dataanslutning i <xliff:g id="COUNT_1">%s</xliff:g> minuter</item>
-      <item quantity="one">Ingen dataanslutning i <xliff:g id="COUNT_0">%s</xliff:g> minut</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Ingen dataanslutning förrän <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Mobilen försätts i nödsamtalsläge i <xliff:g id="COUNT_1">%s</xliff:g> minuter. I det här läget går det inte att använda några appar där en dataanslutning används. Vill du avsluta nu?</item>
       <item quantity="one">Mobilen försätts i nödsamtalsläge i <xliff:g id="COUNT_0">%s</xliff:g> minut. I det här läget går det inte att använda några appar där en dataanslutning används. Vill du avsluta nu?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"välj kontakt"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Röstsamtal stöds inte"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ring upp"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Vibrera"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Vibrera"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuell röstbrevlåda"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ljud"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Ställ in pinkod"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Byt pinkod"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringsignal och vibrera"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Inbyggda SIM-kort"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Aktivera videosamtal"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Endast nödsamtal"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-kortsplats: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Tillgänglighet"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Inkommande Wi-Fi-samtal"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi-samtal från"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi-samtal"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Tryck igen för att öppna"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Tryck igen för att öppna"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Ett fel inträffade när meddelandet avkodades."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Ett SIM-kort har använts för att aktivera tjänsten och uppdatera roamingfunktionerna i mobilen."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Det finns för många aktiva samtal. Avsluta eller slå samman pågående samtal innan du ringer ett nytt."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Det går inte att ansluta. Sätt i ett giltigt SIM-kort."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi-anslutningen bruten. Samtal avslutat."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Ändra röstbrevlådans pinkod"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Fortsätt"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Avbryt"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Bekräfta den gamla pinkoden"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Ange pinkoden till röstbrevlådan för att fortsätta."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Ange en ny pinkod"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Pinkoden måste ha <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> siffror."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Bekräfta pinkod"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Pinkoderna matchar inte"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Röstbrevlådans pinkod bekräftad"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Det går inte att ställa in pinkod"</string>
 </resources>
diff --git a/res/values-sw/config.xml b/res/values-sw/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-sw/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 27fc006..3ade57f 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Data ya Simu za Mkononi"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Data ya Simu"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Huduma za Simu"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Kipigaji cha Dhararu"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Simu"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nambari ya sauti inayokosekana"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Hakuna nambari ya ujumbe wa sauti iliyohifadhiwa katika SIM kadi."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Ongeza nambari"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Mipangilio ya ujumbe wa sauti inaweza kubadilishwa na Mtumiaji wa Msingi Pekee."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Kadi yako ya simu imefunguliwa. Simu yangu inafungua…."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN ya kufungua mtandao wa SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Fungua"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Inaomba mtandao ufunguliwe…."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ombi la kufungua mtandao halijafaulu."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Umefaulu kufungua mtandao."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Mipangilio ya mitandao ya simu za mkononi haipatikani kwa mtumiaji huyu"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Mipangilio ya mtandao wa simu za mkononi haipatikani kwa mtumiaji huyu"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Mipangilio ya simu ya GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Mipangilio ya simu ya GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Mipangilio ya simu ya CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Piga simu kutumia"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Piga simu za SIP kwa"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Uliza kwanza"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Hakuna mtandao unaopatikana"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Mipangilio"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Chagua akaunti"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Akaunti za simu"</string>
@@ -72,9 +74,10 @@
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Chagua akaunti ambazo zinaweza kupiga simu"</string>
     <string name="wifi_calling" msgid="739018212480165598">"Upigaji simu kwa Wi-Fi"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"Huduma ya muunganisho iliyojengewa ndani"</string>
-    <string name="voicemail" msgid="8693759337917898954">"Barua ya sauti"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Ujumbe wa sauti"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ujumbe wa sauti (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Arifa"</string>
     <string name="networks" msgid="8873030692174541976">"Kampuni zinazotoa huduma"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Matangazo ya dharura"</string>
     <string name="call_settings" msgid="6112441768261754562">"Mipangilio ya simu"</string>
@@ -85,13 +88,13 @@
     <string name="sum_cdma_call_settings" msgid="284753265979035549">"Mipangilio ya ziada ya simu ya CDMA tu"</string>
     <string name="labelNwService" msgid="4699970172021870983">"Mipangilio ya huduma ya mtandao"</string>
     <string name="labelCallerId" msgid="3888899447379069198">"Kitambulisho cha mpigaji SIM"</string>
-    <string name="sum_loading_settings" msgid="1826692909391168620">"Inapakia mipangilio..."</string>
+    <string name="sum_loading_settings" msgid="1826692909391168620">"Mipangilio inapakia..."</string>
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Nambari imefichwa kwa simu unayopiga"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Namba inaonekana kwa simu zinazopigwa"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Tumia mipangilio ya kiendesha chaguo-msingi kuonyesha namba kwa simu zinazopigwa"</string>
-    <string name="labelCW" msgid="6120513814915920200">"Simu inasubiriwa"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Wakati wa simu, niarifu juu ya simu zinazoingia"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Wakati wa simu, niarifu kuhusu simu zinazoingia"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Simu inayosubiri kupokewa"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Wakati ninapokea simu, niarifu kuhusu simu zingine zinazoingia"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Wakati ninapokea simu, niarifu kuhusu simu zingine zinazoingia"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"Mipangilio ya kusambaza simu"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Mipangilio ya kusambaza simu (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"Kusambaza simu"</string>
@@ -100,35 +103,35 @@
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Inasambaza  simu zote"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"Inasambaza simu zote kwa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Nambari haipatikani"</string>
-    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Umezimwa"</string>
+    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Imezimwa"</string>
     <string name="labelCFB" msgid="6139853033106283172">"Wakati nina shughuli"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Wakati namba inatumika"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"Inasambaza kwa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Umezimwa"</string>
+    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Imezimwa"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Mtoa huduma wako haauni ulemezaji wa kusambaza simu wakati simu yako inashughuli."</string>
     <string name="labelCFNRy" msgid="1736067178393744351">"Nisipojibu"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Weka namba wakati haijajibiwa"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"Inasambaza kwa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Umezimwa"</string>
+    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Imezimwa"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Mtoa huduma wako haauni ulemezaji wa kusambaza simu wakati simu yako haijibu."</string>
     <string name="labelCFNRc" msgid="2614827454402079766">"Ikiwa sipatikani"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Wakati namba haipatikani"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Inasambaza kwa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Kimezimwa"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Imezimwa"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Mtoa huduma wako haauni ulemezaji wa kusambaza simu wakati simu yako haifikiwi."</string>
     <string name="updating_title" msgid="6146755386174019046">"Mipangilio ya simu"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Mipangilio ya simu inaweza kubadilishwa na mtumiaji wa msingi pekee."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Mipangilio ya simu inaweza kubadilishwa na mtumiaji wa akaunti ya msimamizi."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Mipangilio (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Hitlafu ya mipangilio ya kupiga simu"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Hitilafu ya mipangilio ya kupiga simu"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Inasoma mipangilio…."</string>
     <string name="updating_settings" msgid="8171225533884883252">"Inaboresha mipangilio…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Inageuza mipangilio..."</string>
     <string name="response_error" msgid="6674110501330139405">"Jibu lisilotarajiwa kutoka kwa mtandao."</string>
-    <string name="exception_error" msgid="7027667130619518211">"Hitilafu ya Mtandao au SIM kadi"</string>
+    <string name="exception_error" msgid="7027667130619518211">"Hitilafu ya mtandao au SIM kadi."</string>
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"Ombi la SS limebadilishwa kuwa ombi la DIAL."</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"Ombi la SS limebadilishwa kuwa ombi la USSD."</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"Ombi la SS limebadilishwa kuwa ombi jipya la SS."</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"Mpangilio wa programu ya simu yako wa Kupigia Nambari Fulani Pekee umewashwa. Kutokana na hayo, baadhi ya vipengele vinavyohusiana na simu havifanyi kazi."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"Mipangilio ya programu ya simu yako ya nambari za simu zilizobainishwa pekee imewashwa. Kutokana na hayo, baadhi ya vipengele vya kupiga simu havifanyi kazi."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"Washa redio kabla ya kutazama mipangilio hii."</string>
     <string name="close_dialog" msgid="2365884406356986917">"Sawa"</string>
     <string name="enable" msgid="7248657275000173526">"Washa"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Hakuna mabadiliko yaliyofanywa"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Chagua huduma ya barua ya sauti"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Mtoa huduma wako"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mipangilio ya mitandao ya simu za mkononi"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN ya zamani"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN mpya"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Tafadhali subiri."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN mpya ni fupi mno."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN mpya ni ndefu mno."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN mpya ni dhaifu mno. Nenosiri thabiti halifai kuwa na herufi zinazofuatana mfululizo au tarakimu zinazorudiwa."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"PIN ya zamani si sahihi."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"PIN mpya ina herufi zisizostahiki."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Imeshindwa kubadilisha PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Huwezi kuona ujumbe wa aina hii; piga <xliff:g id="NUMBER">%s</xliff:g> ili uusikilize."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mipangilio ya mtandao wa simu"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mtandao wa simu"</string>
     <string name="label_available" msgid="1181658289009300430">"Mitandao inayopatikana"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Inatafuta…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Hakuna mitandao iliyopatikana."</string>
@@ -158,12 +172,12 @@
     <string name="registration_done" msgid="495135664535876612">"Imesajiliwa katika mtandao"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Chagua mtoa huduma"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Tafuta mitandao yote inayopatikana"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Chagua kiotomatiki"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Chagua mtandao unaoupendelea kiotomatiki"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Chagua mtandao kiotomatiki"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Mtandao"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Usajili otomatiki..."</string>
-    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Aina ya mtandao unaopendelewa"</string>
+    <string name="preferred_network_mode_title" msgid="2336624679902659306">"Aina ya mtandao unaoupendelea"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Badilisha gumzo ya utendaji wa mtandao"</string>
-    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Aina ya mtandao unaopendelewa"</string>
+    <string name="preferred_network_mode_dialogtitle" msgid="4048082093347807230">"Aina ya mtandao unaoupendelea"</string>
     <string name="preferred_network_mode_wcdma_perf_summary" msgid="8521677230113533809">"Modi pendekezwa ya mtandao: WCDMA pendekezwa"</string>
     <string name="preferred_network_mode_gsm_only_summary" msgid="3352445413437453511">"Modi pendekezwa ya mtandao: GSM  pekee"</string>
     <string name="preferred_network_mode_wcdma_only_summary" msgid="2836897236221063413">"Modi pendekezwa ya mtandao: WCDMA pekee"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM pekee"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA inapendelewa"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Kupiga simu"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Mtandao"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Hali Iliyoimarishwa ya 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Upigaji Simu Ulioimarishwa"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Tumia huduma za LTE ili uboreshe sauti na mawasiliano mengine (inapendekezwa)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Data imewashwa"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Ruhusu matumizi ya data"</string>
-    <string name="roaming" msgid="8871412572928323707">"Utumiaji data nje ya mtandao wako wa kawaida"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Ilani"</string>
+    <string name="roaming" msgid="7894878421600247140">"Matumizi ya mitandao mingine"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Unganisha huduma ya data wakati niko nje ya mtandao wangu wa kawaida"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Unganisha huduma ya data wakati niko nje ya mtandao wangu wa kawaida"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Umepoteza muunganisho wa data kwa sababu uliondoka kwenye mtandao wako wa kawaida ukiwa umezima utumiaji data nje ya mtandao wa kawaida."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Unaweza kutozwa gharama kubwa."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Je, ungependa kuruhusu matumizi ya intaneti ukiwa nje ya mtandao wako wa kawaida?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Matumizi ya data"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> za data ya simu zimetumika kati ya <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Mtoa huduma"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Data ya Mtandao wa Simu"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Tumia data ya mtandao wa simu"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Kupiga simu kupitia Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Kupiga simu kupitia kampuni ya simu"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Chaguo za GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Chaguo za CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Matumizi ya data"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Upeo wa <xliff:g id="USED_0">%1$s</xliff:g> umepitwa\nKasi ya data imepunguzwa hadi kilobaiti <xliff:g id="USED_1">%2$d</xliff:g> kwa sekunde"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ya mzunguko imekamilika\nMuda ufuatao unaanza baada ya siku <xliff:g id="USED_1">%2$d</xliff:g> (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Kasi ya data imepunguzwa hadi kilibaiti <xliff:g id="USED">%1$d</xliff:g> kwa sekunde kama kiwango cha matumizi ya data kimepitwa"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Maelezo zaidi kuhusu sera ya matumizi ya data ya mtandao wa simu za mkononi ya mtoa huduma wako"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Maelezo zaidi kuhusu sera ya matumizi ya data ya mtandao wa mtoa huduma wako"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS ya Matangazo ya Simu"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS ya Kutangaza Seli"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"SMS ya Kutangaza Seli imewezeshwa"</string>
@@ -287,7 +313,7 @@
     <string name="lodgings_disable" msgid="3387879742320682391">"Nyumba zimelemzwa"</string>
     <string name="enable_disable_retail_directory" msgid="1357809784475660303">"Saraka ya Rejareja"</string>
     <string name="retail_directory_enable" msgid="3280626290436111496">"Saraka ya Rejareja imewezeshwa"</string>
-    <string name="retail_directory_disable" msgid="6479739816662879027">"Saraka ya Rejareja imelemazwa"</string>
+    <string name="retail_directory_disable" msgid="6479739816662879027">"Saraka ya Rejareja imezimwa"</string>
     <string name="enable_disable_advertisements" msgid="5999495926176182128">"Matangazo"</string>
     <string name="advertisements_enable" msgid="2050305021264683786">"Matangazo yamewezeshwa"</string>
     <string name="advertisements_disable" msgid="8350985908788707935">"Matangazo yamelemazwa"</string>
@@ -310,7 +336,7 @@
     <string name="network_4G" msgid="2723512640529983138">"4G (inapendekezwa)"</string>
     <string name="network_global" msgid="1323190488685355309">"Ulimwenguni Kote"</string>
     <string name="cdma_system_select_title" msgid="5757657769327732833">"Chagua mfumo"</string>
-    <string name="cdma_system_select_summary" msgid="60460043745797517">"Badilisha hali ya urandaji ya CDMA"</string>
+    <string name="cdma_system_select_summary" msgid="60460043745797517">"Badilisha mipangilio ya kupiga simu kwa kutumia CDMA"</string>
     <string name="cdma_system_select_dialogtitle" msgid="6083355415165359075">"Chagua mfumo"</string>
   <string-array name="cdma_system_select_choices">
     <item msgid="176474317493999285">"Nyumbani tu"</item>
@@ -330,21 +356,21 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Wezesha kifaa"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Sanidi huduma ya data"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Mipangilio ya mtoa huduma"</string>
-    <string name="fdn" msgid="7878832555095183202">"Nambari za kupiga zisizobadilishwa"</string>
-    <string name="fdn_with_label" msgid="187084204115493366">"Nambari za Kupiga Simu Zisizobadilika (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="fdn" msgid="7878832555095183202">"Nambari za simu zilizobainishwa"</string>
+    <string name="fdn_with_label" msgid="187084204115493366">"Nambari za simu zilizobainishwa pekee (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Orodha ya FDN"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Orodha ya Nambari za Kupiga Simu Zisizobadilika (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Uwezeshaji wa FDN"</string>
-    <string name="fdn_enabled" msgid="5238109009915521240">"Nambari za upigaji simu zilizobanwa zimelemazwa"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Nambari za upigaji simu zilizobanwa zimelemazwa"</string>
+    <string name="fdn_enabled" msgid="5238109009915521240">"Nambari za simu zilizobainishwa zinatumika"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Nambari za simu zilizobainishwa hazitumiki"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Washa FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Lemaza FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Badilisha PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"Lemaza FDN"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"Washa FDN"</string>
-    <string name="sum_fdn" msgid="1959399454900272878">"Dhibiti nambari Za Upigaji simu Zilizobanwa"</string>
+    <string name="sum_fdn" msgid="1959399454900272878">"Dhibiti nambari za simu zilizobainishwa"</string>
     <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Badilisha nenosiri la kufikia FDN"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Dhibiti orodha ya nambari ya simu"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Dhibiti orodha ya nambari za simu"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Faragha ya sauti"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Wezesha gumzo ya faragha iliyoboreshwa"</string>
     <string name="tty_mode_option_title" msgid="9033098925144434669">"Hali ya TTY"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Ongeza anwani"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Hariri anwani"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Futa anwani"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Piga nambari ya unayewasiliana naye"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Chapa PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Jina"</string>
     <string name="number" msgid="7905950798349903858">"Nambari"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Inafuta nambari ya upigaji simu uliobanwa..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Nambari ya upigaji simu uliobanwa imefutwa"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN haikusasishwa kwa sababu uliweka PIN isiyo sahihi."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN haikusasishwa kwa sababu namba haiwezi kuzidisha herufi 20."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN haikusasishwa kwa sababu nambari haina kitu au inazidi tarakimu 20."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN haikusasishwa. PIN2 haikuwa sahihi, au namba ya simu ilikataliwa."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Utendakazi wa FDN ulishindwa."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Inasoma kutoka kwa SIM kadi…"</string>
@@ -394,7 +421,7 @@
     <string name="pin_changed" msgid="4455736268023261662">"PIN imesasishwa"</string>
     <string name="puk_requested" msgid="5921393215789090200">"Nenosiri si sahihi. PIN sasa imezuiwa. PUK imeombwa."</string>
     <string name="enter_pin2_text" msgid="8339444124477720345">"PIN2"</string>
-    <string name="oldPin2Label" msgid="8559146795026261502">"Nenosiri la zamani"</string>
+    <string name="oldPin2Label" msgid="8559146795026261502">"PIN2 ya zamani"</string>
     <string name="newPin2Label" msgid="4573956902204349054">"Nenosiri la 2 mpya"</string>
     <string name="confirmPin2Label" msgid="8100319484454787708">"Thibitisha nenosiri la pili mpya"</string>
     <string name="badPuk2" msgid="7910064009531541708">"PUK2 si sahihi. Jaribu tena."</string>
@@ -409,7 +436,7 @@
     <string name="puk2_blocked" msgid="3150263853077280049">"PUK2 Imezuiwa kabisa."</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"Una majaribio <xliff:g id="NUMBER">%d</xliff:g> yaliyobaki."</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 sasa haijazuiwa"</string>
-    <string name="pin2_error_exception" msgid="1088689322248996699">"Hitilafu ya Mtandao au SIM kadi"</string>
+    <string name="pin2_error_exception" msgid="1088689322248996699">"Hitilafu ya mtandao au SIM kadi"</string>
     <string name="doneButton" msgid="2859593360997984240">"Kwisha"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Nambari ya ujumbe wa sauti"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"Inapiga"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Nambari ya ujumbe wa sauti haijulikani."</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Hakuna huduma"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Mtandao uliochaguliwa <xliff:g id="OPERATOR_NAME">%s</xliff:g> haupatikani"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Zima hali ya ndegeni ili upige simu."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Washa mtandao wa simu, zima hali ya ndegeni au uzime hali ya kiokoa betri ili upige simu."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Zima hali ya ndegeni ili upige simu."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Zima hali ya ndegeni au uunganishe kwenye mtandao pasiwaya ili upige simu."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Ondoka kwenye hali ya kupiga simu za dharura ili upige simu zisizokuwa za dharura."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Haijasajiliwa kwa mitandao"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mitandao ya simu za mkononi haipatikani"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Huduma ya mtandao wa simu za mkononi haupatikani. Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mtandao wa simu haupatikani."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mtandao wa simu za mkononi haupatikani. Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ili upige simu, weka nambari sahihi."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Haiwezi kupiga simu."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Inaanzisha msururu wa MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Imeshindwa kupiga simu."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hangout haiwezi kuongezwa kwa wakati huu."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Huduma haiwezi kutumika."</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Haiwezi kubadili simu."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Haiwezi kutenganisha simu."</string>
@@ -442,12 +470,15 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Imeshindwa kupigia watu wengi."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Haiwezi kukataa simu."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Haiwezi kutoa simu."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Haiwezi kushikilia simu."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Washa kipengele cha kupiga simu kupitia Wi-Fi ili upige simu."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Simu ya dharura"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Inawasha redio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Hakuna huduma. Inajaribu tena..."</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Huwezi kuingia katika hali ya ndegeni huku simu ya dharura inaendelea."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Haiwezi kupiga simu. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> si nambari ya dharura."</string>
-    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Haiwezi kupiga simu. Piga simu nambari ya dharura."</string>
+    <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Haiwezi kupiga simu. Piga nambari ya dharura."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Tumia kibodi kubonyeza"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"Shikilia"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"Mwisho"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Leta zote"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Inaleta anwani za SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Ingiza kutoka kwa anwani"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Imeingiza anwani"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Imeshindwa kuingiza anwani"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Vifaa vya kusaidia kusikia"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Washa utangamano wa kifaa cha kusaidia kusikia"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Umeingia katika gumzo ya kupiga tena simu ya Dharura"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"hali ya kupiga tena simu ya Dharura"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Muunganisho wa data umelemazwa"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Hakuna muunganisho wa data kwa dakika <xliff:g id="COUNT_1">%s</xliff:g></item>
-      <item quantity="one">Hakuna muunganisho wa data kwa dakika <xliff:g id="COUNT_0">%s</xliff:g> </item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Hakuna muunganisho wa data mpaka <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_1">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumiwa. Je, unataka kuondoka sasa?</item>
       <item quantity="one">Simu itakuwa katika hali ya Simu ya Dharura kwa dakika <xliff:g id="COUNT_0">%s</xliff:g>. Ukiwa katika hali hii hakuna programu zinazotumia muunganisho wa data zinazoweza kutumiwa. Je, unataka kuondoka sasa?</item>
@@ -522,7 +552,7 @@
     <string name="alert_dialog_no" msgid="1476091437797628703">"Hapana"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Ondoa"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Huduma"</string>
-    <string name="voicemail_settings" msgid="72448049107749316">"Sanidi"</string>
+    <string name="voicemail_settings" msgid="72448049107749316">"Weka mipangilio"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Haijawekwa&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Mipangilio mingine ya simu"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"Inapiga kupitia <xliff:g id="PROVIDER_NAME">%s</xliff:g>"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"chagua anwani"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Upigaji simu za sauti hauhimiliwi"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"piga simu"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Mtetemo"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Mtetemo"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Ujumbe wa Sauti Unaoonekana"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Sauti"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Weka PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Badilisha PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Mlio wa simu na Mtetemo"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"SIM kadi zilizojengewa ndani"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Washa Hangout ya video"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Simu za dharula pekee"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kadi, nafasi: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Zana za walio na matatizo ya kuona au kusikia"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Simu ya Wi-Fi inayoingia"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Simu ya Wi-Fi kutoka kwa"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Simu ya Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Gusa tena ili ufungue"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Gonga tena ili ufungue"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Hitilafu imetokea wakati wa usimbuaji wa ujumbe."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM kadi yako imeanzisha huduma yako na kusasisha uwezo wa simu yako wa kutumia mitandao mingine."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Kuna simu nyingi mno zinazoendelea. Tafadhali kata au uunganishe simu zinazoendelea kabla hujapiga nyingine."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Imeshindwa kuunganisha, tafadhali ingiza SIM kadi sahihi."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Muunganisho wa Wi-Fi umekatika. Simu imekatika."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Badilisha PIN ya Ujumbe wa Sauti"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Endelea"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Ghairi"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Sawa"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Thibitisha PIN yako ya awali"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Weka PIN yako ya ujumbe wa sauti ili uendelee."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Weka PIN mpya"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN lazima iwe na nambari <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Thibitisha PIN yako"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN hazilingani"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN ya ujumbe wa sauti imesasishwa"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Imeshindwa kuweka PIN"</string>
 </resources>
diff --git a/res/values-ta-rIN/arrays.xml b/res/values-ta/arrays.xml
similarity index 100%
rename from res/values-ta-rIN/arrays.xml
rename to res/values-ta/arrays.xml
diff --git a/res/values-ta/config.xml b/res/values-ta/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ta/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta/strings.xml
similarity index 86%
rename from res/values-ta-rIN/strings.xml
rename to res/values-ta/strings.xml
index 83445af..7362132 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"செல்லுலார் தரவு"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"மொபைல் தரவு"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ஃபோன் சேவைகள்"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"அவசரகால டயலர்"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"மொபைல்"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"குரலஞ்சல் எண் இல்லை"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"சிம் கார்டில் குரலஞ்சலுக்கான எண் எதுவும் சேமிக்கப்படவில்லை."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"எண்ணைச் சேர்"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"முதன்மை பயனர் மட்டுமே குரலஞ்சல் அமைப்புகளை மாற்ற முடியும்."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"சிம் கார்டின் தடுப்பு நீக்கப்பட்டது. மொபைல் திறக்கப்படுகிறது…"</string>
     <string name="label_ndp" msgid="780479633159517250">"சிம் நெட்வொர்க்கின் தடைநீக்க பின்"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"தடைநீக்கு"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"நெட்வொர்க் தடைநீக்கத்தைக் கோருகிறது…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"நெட்வொர்க் தடைநீக்கத்திற்கான கோரிக்கை தோல்வி."</string>
     <string name="unlock_success" msgid="6770085622238180152">"நெட்வொர்க்கின் தடைநீக்கப்பட்டது."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"இவரால் செல்லுலார் நெட்வொர்க் அமைப்புகளை மாற்ற முடியாது"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"இவரால் மொபைல் நெட்வொர்க் அமைப்புகளை மாற்ற முடியாது"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM அழைப்பு அமைப்பு"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM அழைப்பு அமைப்புகள் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA அழைப்பு அமைப்பு"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"இதன் மூலம் அழை"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"இதன் மூலம் SIP அழைப்புகளைச் செய்"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"முதலில் கேள்"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"நெட்வொர்க் இல்லை"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"அமைப்புகள்"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"கணக்குகளைத் தேர்வுசெய்க"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ஃபோன் கணக்குகள்"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"குரலஞ்சல்"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"குரலஞ்சல் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"அறிவிப்புகள்"</string>
     <string name="networks" msgid="8873030692174541976">"நெட்வொர்க் ஆபரேட்டர்கள்"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"அவசரகால அலைபரப்புகள்"</string>
     <string name="call_settings" msgid="6112441768261754562">"அழைப்பு அமைப்பு"</string>
@@ -92,10 +95,10 @@
     <string name="labelCW" msgid="6120513814915920200">"அழைப்பு காத்திருப்பு"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"அழைப்பில் இருக்கும்போது, உள்வரும் அழைப்புகளை எனக்குத் தெரிவி"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"அழைப்பில் இருக்கும்போதும் உள்வரும் அழைப்புகளைப் பற்றி எனக்குத் தெரிவி"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"அழைப்பு பகிர்தலுக்கான அமைப்பு"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"அழைப்பு பகிர்விற்கான அமைப்புகள் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"அழைப்பைத் திருப்பிவிடுதல்"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"அழைப்பைத் திருப்பிவிடுதல் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCF" msgid="2574386948026924737">"அழைப்புப் பகிர்வு"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"எப்போதும் பகிர்"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"எப்போதும் திருப்பிவிடு"</string>
     <string name="messageCFU" msgid="3560082430662923687">"எப்போதும் இதைப் பயன்படுத்து"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"எல்லா அழைப்புகளையும் பகிர்"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"<xliff:g id="PHONENUMBER">{0}</xliff:g> க்கு எல்லா அழைப்புகளையும் பகிர்"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"தொடர்புகொள்ள முடியாமல் இருக்கும்போது"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"தொடர்பு கிடைக்காதபோது:"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> க்குப் பகிர்"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"முடக்கப்பட்டது"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"முடக்கப்பட்டுள்ளது"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"மொபைல் தொடர்புகொள்ள முடியாத இடத்தில் இருக்கும்போது, அழைப்பு பகிர்தலை முடக்குவதை ஆபரேட்டர் ஆதரிக்கவில்லை."</string>
     <string name="updating_title" msgid="6146755386174019046">"அழைப்பு அமைப்பு"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"முதன்மை பயனர் மட்டுமே அழைப்பிற்கான அமைப்புகளை மாற்ற முடியும்."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"நிர்வாகிப் பயனர் மட்டுமே அழைப்பிற்கான அமைப்புகளை மாற்ற முடியும்."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"அமைப்புகள் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"அழைப்பு அமைப்புகளில் பிழை"</string>
     <string name="reading_settings" msgid="1920291699287055284">"அமைப்புகளைப் படிக்கிறது…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"மாற்றங்கள் எவையும் செய்யப்படவில்லை."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"குரலஞ்சல் சேவையைத் தேர்வுசெய்க"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"உங்கள் மொபைல் நிறுவனம்"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"செல்லுலார் நெட்வொர்க் அமைப்பு"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"பழைய பின்"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"புதிய பின்"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"காத்திருக்கவும்."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"புதிய பின் மிகவும் சிறியதாக உள்ளது."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"புதிய பின் மிகவும் நீளமாக உள்ளது."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"புதிய பின் மிகவும் வலுவற்றதாக உள்ளது. வலுவான கடவுச்சொல்லில் தொடர்வரிசையோ மீண்டும் மீண்டும் வரும் இலக்கங்களோ இருக்கக்கூடாது."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"பழைய பின் பொருந்தவில்லை."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"புதிய பின்னில் தவறான எழுத்துக்குறிகள் உள்ளன."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"பின்னை மாற்ற முடியவில்லை"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ஆதரிக்கப்படாத செய்தி வகை, தகவலைக் கேட்க <xliff:g id="NUMBER">%s</xliff:g> என்ற எண்ணிற்கு அழைக்கவும்."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"மொபைல் நெட்வொர்க் அமைப்பு"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"மொபைல் நெட்வொர்க்"</string>
     <string name="label_available" msgid="1181658289009300430">"கிடைக்கின்ற நெட்வொர்க்குகள்"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"தேடுகிறது..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"நெட்வொர்க்குகள் இல்லை."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"நெட்வொர்க்கில் பதிவுசெய்யப்பட்டது."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"நெட்வொர்க் ஆபரேட்டரைத் தேர்வுசெய்யவும்"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"கிடைக்கும் எல்லா நெட்வொர்க்குகளையும் தேடுக"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"தானாகவே தேர்வுசெய்"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"தானாகவே தேர்வுசெய்த நெட்வொர்க்கைத் தேர்வுசெய்க"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"நெட்வொர்க்கைத் தானாகத் தேர்ந்தெடு"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"நெட்வொர்க்"</string>
     <string name="register_automatically" msgid="6017849844573519637">"தானியங்கு பதிவு…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"தேர்ந்தெடுத்த நெட்வொர்க் வகை"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"நெட்வொர்க் செயல்பாட்டிற்கான பயன்முறையை மாற்று"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM மட்டும்"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA பரிந்துரைக்கப்பட்டது"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"அழைப்பு"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"நெட்வொர்க்"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"மேம்பட்ட 4G LTE பயன்முறை"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"மேம்பட்ட அழைப்பு"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"குரல் மற்றும் பிற தொடர்புமுறைகளை மேம்படுத்த, LTE சேவைகளைப் பயன்படுத்தவும் (பரிந்துரைக்கப்பட்டது)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"தரவு இயக்கப்பட்டது"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"தரவுப் பயன்பாட்டை அனுமதி"</string>
-    <string name="roaming" msgid="8871412572928323707">"தரவு ரோமிங்"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"கவனம் தேவை"</string>
+    <string name="roaming" msgid="7894878421600247140">"ரோமிங்"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"ரோமிங்கின் போது தரவு சேவைகளுடன் இணை"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"ரோமிங்கின் போது தரவு சேவைகளுடன் இணை"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"உள்ளூர் நெட்வொர்க்கில் தரவு ரோமிங்கை முடக்கிய நிலையில் வெளியேறியுள்ளதால், தரவு இணைப்பை இழந்துவிட்டீர்கள்."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"குறிப்பிடத்தக்க கட்டணங்கள் இருக்கலாம்."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"தரவு ரோமிங்கை அனுமதிக்கவா?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"தரவுப் பயன்பாடு"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g>க்குள் <xliff:g id="ID_1">%1$s</xliff:g> மொபைல் தரவு பயன்படுத்தப்பட்டது"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"தொலைத்தொடர்பு நிறுவனம்"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"மொபைல் தரவு"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"மொபைல் நெட்வொர்க்கைப் பயன்படுத்தி, தரவை அணுகு"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"வைஃபை அழைப்பு"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"தொலைத்தொடர்பு நிறுவன வீடியோ அழைப்பு"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS விருப்பங்கள்"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA விருப்பங்கள்"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"தரவு பயன்பாடு"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> அதிகபட்சத்தை மீறிவிட்டது\n<xliff:g id="USED_1">%2$d</xliff:g> Kb/s க்குத் தரவு கட்டணம் குறைந்தது"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ சுழற்சி கடந்துவிட்டன\nஅடுத்த காலம் <xliff:g id="USED_1">%2$d</xliff:g> நாட்களில் தொடங்கும் (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"தரவு பயன்பாட்டிற்கான வரம்பு மீறிவிட்டால், தரவு மதிப்பு <xliff:g id="USED">%1$d</xliff:g> Kb/s இல் குறையும்"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"மொபைல் நிறுவனத்தின் செல்லுலார் நெட்வொர்க் தரவு பயன்பாட்டிற்கான கொள்கை குறித்த கூடுதல் தகவல்"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"மொபைல் நிறுவனத்தின் மொபைல் நெட்வொர்க் தரவு பயன்பாட்டிற்கான கொள்கை குறித்து மேலும் அறிக"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"செல் பிராட்காஸ்ட் SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"மொபைல் அலைபரப்பு SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"செல் பிராட்காஸ்ட் SMS இயக்கப்பட்டது"</string>
@@ -330,7 +356,7 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"சாதனத்தைச் செயல்படுத்தவும்"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"தரவு சேவையை அமை"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"மொபைல் நிறுவன அமைப்பு"</string>
-    <string name="fdn" msgid="7878832555095183202">"நிலையான அழைப்பிற்கான எண்கள்"</string>
+    <string name="fdn" msgid="7878832555095183202">"நிலையான அழைப்பு எண்கள்"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"நிலையான அழைப்பு எண்கள் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"FDN பட்டியல்"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN பட்டியல் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"தொடர்பைச் சேர்"</string>
     <string name="menu_edit" msgid="7143003705504672374">"தொடர்பை மாற்று"</string>
     <string name="menu_delete" msgid="3977150783449642851">"தொடர்பை நீக்கு"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"தொடர்பை அழை"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 ஐ உள்ளிடுக"</string>
     <string name="name" msgid="7329028332786872378">"பெயர்"</string>
     <string name="number" msgid="7905950798349903858">"எண்"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"நிலையான அழைப்பு எண்ணை நீக்குகிறது…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"நிலையான அழைப்பு எண் நீக்கப்பட்டது."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"தவறான பின்னை உள்ளிட்டுள்ளதால், FDN புதுப்பிக்கப்படவில்லை."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"20 இலக்கங்களுக்கு மேல் எண் இருக்கக்கூடாது என்பதால், FDN புதுப்பிக்கப்படவில்லை."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"எண் எதையும் உள்ளிடாததால் அல்லது உள்ளிட்ட எண் 20 இலக்கங்களுக்கும் அதிகமாக உள்ளதால் FDN புதுப்பிக்கப்படவில்லை."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN புதுப்பிக்கப்படவில்லை. PIN2 தவறானது அல்லது மொபைல் எண் நிராகரிக்கப்பட்டது."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN செயல்பாடு தோல்வி."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"சிம் கார்டில் இருப்பதைப் படிக்கிறது…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"குரலஞ்சல் எண் அறியப்படவில்லை"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"சேவை இல்லை"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"தேர்ந்தெடுத்த நெட்வொர்க் (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) கிடைக்கவில்லை"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"அழைக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"அழைக்க, மொபைல் நெட்வொர்க்கை இயக்கவும், விமானப் பயன்முறை அல்லது பேட்டரி சேமிப்பான் பயன்முறையை முடக்கவும்."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"அழைக்க, விமானப் பயன்முறையை முடக்கவும்."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"அழைக்க, விமானப் பயன்முறையை முடக்கவும் அல்லது வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"வழக்கமான அழைப்பிற்கு, அவசரகாலத் திரும்ப அழைக்கும் பயன்முறையிலிருந்து வெளியேறவும்."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"செல்லுலார் நெட்வொர்க் கிடைக்கவில்லை. அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை. அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"அழைக்க, சரியான எண்ணை உள்ளிடவும்."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"அழைக்க முடியாது."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI வரிசையைத் தொடங்குகிறது..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"அழைப்பு தோல்வியடைந்தது."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"இப்போது அழைப்பைச் சேர்க்க முடியாது."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"சேவை ஆதரிக்கப்படவில்லை"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"அழைப்புகளில் மாற முடியாது."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"அழைப்பைப் பிரிக்க முடியாது."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"குழு அழைப்புகளை மேற்கொள்ள முடியவில்லை."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"அழைப்பை நிராகரிக்க முடியாது."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"அழைப்பை(அழைப்புகளை) விடுவிக்க முடியாது."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"அழைப்புகளை ஹோல்டு செய்ய முடியாது."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"அழைக்க, வைஃபை அழைப்பை இயக்கவும்."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"அவசரகால அழைப்பு"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ரேடியோவை இயக்குகிறது…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"சேவை இல்லை. மீண்டும் முயற்சிக்கிறது…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"அவசர அழைப்பின் போது, விமானப் பயன்முறையை இயக்க முடியாது."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> அவசர அழைப்பு எண் இல்லை என்பதால் அழைக்க முடியாது."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"அழைக்க முடியாது. அவசர அழைப்பு எண்ணை அழைக்கவும்."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"டயல் செய்வதற்கு விசைப்பலகையைப் பயன்படுத்துக"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"எல்லாவற்றையும் இறக்குமதி செய்"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"சிம் தொடர்புகளிலிருந்து இறக்குமதி செய்கிறது"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"தொடர்புகளிலிருந்து இறக்குமதி செய்"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"தொடர்பு இறக்கப்பட்டது"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"தொடர்பை இறக்க முடியவில்லை"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"கேட்பதற்கான சாதனங்கள்"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"கேட்கும் சாதனத்தின் இணக்கத்தன்மையை இயக்கு"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"அவசரகால திரும்ப அழைக்கும் பயன்முறை இயக்கப்பட்டது"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"அவசரகால திரும்ப அழைக்கும் பயன்முறை"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"தரவு இணைப்பு முடக்கப்பட்டது"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> நிமிடங்களுக்குத் தரவு இணைப்பு இருக்காது</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> நிமிடத்திற்குத் தரவு இணைப்பு இருக்காது</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> வரை தரவு இணைப்பு இருக்காது"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> நிமிடங்களுக்கு மொபைல் அவசரகால திரும்ப அழைக்கும் பயன்முறையில் இருக்கும். இந்தப் பயன்முறையில், தரவு இணைப்பைப் பயன்படுத்தாத பயன்பாடுகளைப் பயன்படுத்தலாம். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
       <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> நிமிடத்திற்கு மொபைல் அவசரகால திரும்ப அழைக்கும் பயன்முறையில் இருக்கும். இந்தப் பயன்முறையில், தரவு இணைப்பைப் பயன்படுத்தாத பயன்பாடுகளைப் பயன்படுத்தலாம். இப்போது வெளியேற விரும்புகிறீர்களா?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"தொடர்பைத் தேர்ந்தெடுக்கவும்"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"குரல் அழைப்பு ஆதரிக்கப்படவில்லை"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"டயல்"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"அதிர்வு"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"அதிர்வு"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"விஷூவல் குரலஞ்சல்"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ஒலி"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"பின்னை அமை"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"பின்னை மாற்றவும்"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"ரிங்டோன் &amp; அதிர்வு"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"உள்ளமைந்த சிம் கார்டுகள்"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"வீடியோ அழைப்பை இயக்கு"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"அவசர அழைப்பு மட்டுமே"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"சிம் கார்டு, ஸ்லாட்: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"அணுகல் தன்மை"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"உள்வரும் வைஃபை அழைப்பு"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"வைஃபை அழைப்பு:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"வைஃபை அழைப்பு"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"திறக்க, மீண்டும் தட்டவும்"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"திறக்க, மீண்டும் தட்டவும்"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"செய்தியைக் குறிவிலக்கும்போது பிழை ஏற்பட்டது."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ஏற்கனவே சிம் கார்டைப் பயன்படுத்தி சேவை இயக்கப்பட்டது மற்றும் மொபைலின் ரோமிங் செயல்திறன்கள் புதுப்பிக்கப்பட்டன."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"மிகவும் அதிக அளவிலான அழைப்புகள் செயலில் உள்ளன. புதிய அழைப்பை மேற்கொள்ளும் முன், ஏற்கனவேயுள்ள அழைப்புகளைத் துண்டிக்கவும் அல்லது ஒன்றாகப் பிணைக்கவும்."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"இணைக்க முடியவில்லை, சரியான சிம் கார்டைச் செருகவும்."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"வைஃபை இணைப்பு துண்டிக்கப்பட்டதால், அழைப்பு முடிந்தது."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"குரலஞ்சல் பின்னை மாற்றவும்"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"தொடர்க"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ரத்துசெய்"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"சரி"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"பழைய பின்னை உறுதிப்படுத்தவும்"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"தொடர, குரலஞ்சல் பின்னை உள்ளிடவும்."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"புதிய பின்னை அமைக்கவும்"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"பின்னில் <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> இலக்கங்கள் இருக்க வேண்டும்."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"பின்னை உறுதிசெய்யவும்"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"பின்கள் பொருந்தவில்லை"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"குரலஞ்சல் பின் மாற்றப்பட்டது"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"பின்னை அமைக்க முடியவில்லை"</string>
 </resources>
diff --git a/res/values-te-rIN/arrays.xml b/res/values-te/arrays.xml
similarity index 100%
rename from res/values-te-rIN/arrays.xml
rename to res/values-te/arrays.xml
diff --git a/res/values-te/config.xml b/res/values-te/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-te/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te/strings.xml
similarity index 86%
rename from res/values-te-rIN/strings.xml
rename to res/values-te/strings.xml
index 7c04c3c..a5eba1d 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"సెల్యులార్ డేటా"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"మొబైల్ డేటా"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"ఫోన్ సేవలు"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"అత్యవసర డయలర్"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"ఫోన్"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"వాయిస్ మెయిల్ నంబర్ లేదు"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"సిమ్ కార్డులో వాయిస్ మెయిల్ నంబర్ ఏదీ నిల్వ చేయబడలేదు."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"నంబర్‌ను జోడించు"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"వాయిస్ మెయిల్ సెట్టింగ్‌లను ప్రాథమిక వినియోగదారు మాత్రమే సవరించగలరు."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"మీ SIM కార్డు అన్‌బ్లాక్ చేయబడింది. మీ ఫోన్ అన్‌లాక్ చేయబడుతోంది…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM నెట్‌వర్క్ అన్‌లాక్ పిన్‌"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"అన్‌లాక్ చేయి"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"నెట్‌వర్క్ అన్‌లాక్‌ను అభ్యర్థిస్తోంది…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"నెట్‌వర్క్ అన్‌లాక్ అభ్యర్థన విఫలమైంది."</string>
     <string name="unlock_success" msgid="6770085622238180152">"నెట్‌వర్క్ అన్‌లాక్ విజయవంతమైంది."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"ఈ వినియోగదారుకి సెల్యులార్ నెట్‌వర్క్ సెట్టింగ్‌లు అందుబాటులో లేవు"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"ఈ వినియోగదారుకు మొబైల్ నెట్‌వర్క్ సెట్టింగ్‌లు అందుబాటులో లేవు"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM కాల్ సెట్టింగ్‌లు"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM కాల్ సెట్టింగ్‌లు (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA కాల్ సెట్టింగ్‌లు"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"CDMA కాల్ సెట్టింగ్‌లు (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"ప్రాప్యత స్థానం పేర్లు"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"ప్రాప్యత పాయింట్ పేర్లు"</string>
     <string name="settings_label" msgid="3876743539816984008">"నెట్‌వర్క్ సెట్టింగ్‌లు"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"కాల్ చేయగల ఖాతాలు"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"దీనితో కాల్‌లు చేయి"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"దీనితో SIP కాల్‌లను చేయి"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ముందుగానే అడుగు"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"నెట్‌వర్క్ ఏదీ అందుబాటులో లేదు"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"సెట్టింగ్‌లు"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"ఖాతాలను ఎంచుకోండి"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ఫోన్ ఖాతాలు"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"వాయిస్ మెయిల్"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"వాయిస్ మెయిల్ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"నోటిఫికేషన్‌లు"</string>
     <string name="networks" msgid="8873030692174541976">"నెట్‌వర్క్ ఆపరేటర్‌లు"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"అత్యవసర ప్రసారాలు"</string>
     <string name="call_settings" msgid="6112441768261754562">"కాల్ సెట్టింగ్‌లు"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"చేరుకోలేనప్పుడు"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"చేరుకోవడం సాధ్యపడనప్పుడు నంబర్"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g>కి ఫార్వార్డ్ చేస్తోంది"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"నిలిపివేయబడింది"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ఆఫ్‌లో ఉంది"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"మీ ఫోన్‌ను చేరుకోవడం సాధ్యపడనప్పుడు కాల్ ఫార్వర్డింగ్‌ను నిలిపివేయడానికి మీ క్యారియర్ మద్దతు ఇవ్వదు."</string>
     <string name="updating_title" msgid="6146755386174019046">"కాల్ సెట్టింగ్‌లు"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"కాల్ సెట్టింగ్‌లను ప్రాథమిక వినియోగదారు మాత్రమే మార్చగలరు."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"కాల్ సెట్టింగ్‌లను నిర్వాహక వినియోగదారు మాత్రమే మార్చగలరు."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"సెట్టింగ్‌లు (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"కాల్ సెట్టింగ్‌ల లోపం"</string>
     <string name="reading_settings" msgid="1920291699287055284">"సెట్టింగ్‌లను చదువుతోంది…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"మార్పులు ఏవీ చేయబడలేదు."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"వాయిస్ మెయిల్ సేవను ఎంచుకోండి"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"మీ క్యారియర్"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"సెల్యులార్ నెట్‌వర్క్ సెట్టింగ్‌లు"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"పాత PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"కొత్త PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"దయచేసి వేచి ఉండండి."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"కొత్త PIN చాలా చిన్నదిగా ఉంది."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"కొత్త PIN చాలా పొడవు ఉంది."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"కొత్త PIN చాలా బలహీనంగా ఉంది. శక్తివంతమైన పాస్‌వర్డ్‌లో వరుస శ్రేణిలో అక్షరాలు/అంకెలు లేదా పునరావృత అంకెలు ఉండకూడదు."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"పాత PIN సరిపోలలేదు."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"కొత్త PIN చెల్లని అక్షరాలను కలిగి ఉంది."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PINని మార్చడం సాధ్యపడలేదు"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"మద్దతులేని సందేశ రకం, వినడానికి <xliff:g id="NUMBER">%s</xliff:g>కి కాల్ చేయండి."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"మొబైల్ నెట్‌వర్క్ సెట్టింగ్‌లు"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"మొబైల్ నెట్‌వర్క్"</string>
     <string name="label_available" msgid="1181658289009300430">"అందుబాటులో ఉన్న నెట్‌వర్క్‌లు"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"శోధిస్తోంది..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"నెట్‌వర్క్‌లు కనుగొనబడలేదు."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"నెట్‌వర్క్‌లో నమోదు అయింది."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"నెట్‌వర్క్ ఆపరేటర్‌ను ఎంచుకోండి"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"అందుబాటులో ఉన్న అన్ని నెట్‌వర్క్‌ల కోసం శోధించండి"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"స్వయంచాలకంగా ఎంచుకోండి"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"స్వయంచాలకంగా ప్రాధాన్య నెట్‌వర్క్‌ను ఎంచుకోండి"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"నెట్‌వర్క్‌ను స్వయంచాలకంగా ఎంచుకోండి"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"నెట్‌వర్క్"</string>
     <string name="register_automatically" msgid="6017849844573519637">"స్వయంచాలక నమోదు…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ప్రాధాన్య నెట్‌వర్క్ రకం"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"నెట్‌వర్క్ ఆపరేటింగ్ మోడ్‌ను మార్చండి"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM మాత్రమే"</item>
     <item msgid="3817924849415716259">"GSM/WCDMAకు ప్రాధాన్యత"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"కాలింగ్"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"నెట్‌వర్క్"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"మెరుగుపరిచిన 4G LTE మోడ్"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"అధునాతన కాలింగ్"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"వాయిస్, ఇతర కమ్యూనికే. మెరుగుపరచడానికి LTE సేవలను ఉపయోగించు (సిఫార్సు చేయబడింది)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"డేటా ప్రారంభించబడింది"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"డేటా వినియోగాన్ని అనుమతించు"</string>
-    <string name="roaming" msgid="8871412572928323707">"డేటా రోమింగ్"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"హెచ్చరిక"</string>
+    <string name="roaming" msgid="7894878421600247140">"రోమింగ్"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"రోమింగ్‌లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"మీరు డేటా రోమింగ్ ఆపివేసి, మీ హోమ్ నెట్‌వర్క్ నుండి నిష్క్రమించినందున మీరు డేటా కనెక్టివిటీని కోల్పోయారు."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"మీకు గణనీయ ఛార్జీలు విధించబడవచ్చు."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"డేటా రోమింగ్‌ను అనుమతించాలా?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"డేటా వినియోగం"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> మధ్య కాలంలో <xliff:g id="ID_1">%1$s</xliff:g> మొబైల్ డేటా ఉపయోగించబడింది"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"క్యారియర్"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"మొబైల్ డేటా"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"మొబైల్ నెట్‌వర్క్‌ను ఉపయోగించి డేటాను ప్రాప్యత చేయండి"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi కాలింగ్"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"క్యారియర్ వీడియో కాలింగ్"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS ఎంపికలు"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA ఎంపికలు"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"డేటా వినియోగం"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> గరిష్ట పరిమితి మించిపోయింది\nడేటా రేట్ <xliff:g id="USED_1">%2$d</xliff:g> Kb/sకి తగ్గించబడింది"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"సైకిల్‌లో <xliff:g id="USED_0">%1$d</xliff:g>٪ గడిచిపోయింది\nతదుపరి వ్యవధి <xliff:g id="USED_1">%2$d</xliff:g> రోజుల్లో (<xliff:g id="USED_2">%3$s</xliff:g>) ప్రారంభమవుతుంది"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"డేటా వినియోగ పరిమితి మించిపోయినప్పుడు డేటా రేట్ <xliff:g id="USED">%1$d</xliff:g> Kb/sకి తగ్గించబడుతుంది"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"మీ క్యారియర్ యొక్క సెల్యులార్ నెట్‌వర్క్ డేటా వినియోగ విధానం గురించి మరింత సమాచారం"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"మీ క్యారియర్ యొక్క మొబైల్ నెట్‌వర్క్ డేటా వినియోగ విధానం గురించి మరింత సమాచారం"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"సెల్ ప్రసార SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"సెల్ ప్రసార SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"సెల్ ప్రసార SMS ప్రారంభించబడింది"</string>
@@ -339,11 +365,11 @@
     <string name="fdn_disabled" msgid="4700049736675368279">"ఫిక్సెడ్ డయలింగ్ నంబర్‌లు నిలిపివేయబడ్డాయి"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"FDNని ప్రారంభించు"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"FDNని నిలిపివేయి"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"PIN2ని మార్చు"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"పిన్2ని మార్చు"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"FDNని నిలిపివేయి"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"FDNని ప్రారంభించు"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"ఫిక్స్‌డ్ డయలింగ్ నంబర్‌లను నిర్వహించండి"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ప్రాప్యత కోసం PINను మార్చండి"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"FDN ప్రాప్యత కోసం పిన్‌ను మార్చండి"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"ఫోన్ నంబర్ జాబితాను నిర్వహించండి"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"వాయిస్ గోప్యత"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"మెరుగైన గోప్యతా మోడ్‌ను ప్రారంభించండి"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"పరిచయాన్ని జోడించు"</string>
     <string name="menu_edit" msgid="7143003705504672374">"పరిచయాన్ని సవరించు"</string>
     <string name="menu_delete" msgid="3977150783449642851">"పరిచయాన్ని తొలగించు"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"పరిచయానికి డయల్ చేయి"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2ని టైప్ చేయండి"</string>
     <string name="name" msgid="7329028332786872378">"పేరు"</string>
     <string name="number" msgid="7905950798349903858">"నంబర్"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"ఫిక్స్‌డ్ డయలింగ్ నంబర్‌ను తొలగిస్తోంది..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ఫిక్స్‌డ్ డయలింగ్ నంబర్ తొలగించబడింది."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"మీరు చెల్లని PINను టైప్ చేసినందున FDN నవీకరించబడలేదు."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"నంబర్ 20 అంకెలను మించి లేనందున FDN నవీకరించబడలేదు."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"నంబర్ ఖాళీగా వదలిపెట్టినందున లేదా 20 అంకెలను మించినందున FDN నవీకరించబడలేదు."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN నవీకరించబడలేదు. PIN2 చెల్లదు లేదా ఫోన్ నంబర్ తిరస్కరించబడింది."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN చర్య విఫలమైంది."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM కార్డు నుండి చదువుతోంది…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"వాయిస్ మెయిల్ నంబర్ తెలియదు"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"సేవ లేదు"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"ఎంచుకున్న నెట్‌వర్క్ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) అందుబాటులో లేదు"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"కాల్ చేయడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"కాల్ చేయడానికి మొబైల్ నెట్‌వర్క్‌ను ఆన్ చేయండి, అలాగే ఎయిర్‌ప్లైన్ మోడ్ లేదా బ్యాటరీ సేవర్ మోడ్ ఆన్‌లో ఉంటే ఆఫ్ చేయండి."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"కాల్ చేయడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"కాల్ చేయడానికి ఎయిర్‌ప్లైన్ మోడ్‌ను ఆఫ్ చేయండి లేదా వైర్‌లెస్ నెట్‌వర్క్‌కు కనెక్ట్ చేయండి."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"సాధారణ కాల్ చేయడానికి అత్యవసర కాల్‌బ్యాక్ మోడ్ నుండి నిష్క్రమించండి."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"నెట్‌వర్క్‌లో నమోదు కాలేదు."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"సెల్యులార్ నెట్‌వర్క్ అందుబాటులో లేదు."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"సెల్యులార్ నెట్‌వర్క్ అందుబాటులో లేదు. కాల్ చేయడానికి వైర్‌లెస్ నెట్‌వర్క్‌కి కనెక్ట్ చేయండి."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"మొబైల్ నెట్‌వర్క్ అందుబాటులో లేదు."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"మొబైల్ నెట్‌వర్క్ అందుబాటులో లేదు. కాల్ చేయడానికి వైర్‌లెస్ నెట్‌వర్క్‌కు కనెక్ట్ చేయండి."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్‌ను నమోదు చేయండి."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"కాల్ చేయలేరు."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI శ్రేణిని ప్రారంభిస్తోంది…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"కాల్ విఫలమైంది."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ఈ సమయంలో కాల్‌ను జోడించడం సాధ్యపడదు."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"సేవకు మద్దతు లేదు"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"కాల్‌లను మార్చలేరు."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"కాల్‌ను వేరు చేయలేరు."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"కాన్ఫరెన్స్ కాల్‌లు చేయడం సాధ్యపడలేదు."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"కాల్‌ను తిరస్కరించలేరు."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"కాల్(ల)ను విడిచిపెట్టలేరు."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"కాల్‌లను హోల్డ్ చేయలేరు."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"కాల్ చేయడానికి వైర్‌లెస్ నెట్‌వర్క్‌కు కనెక్ట్ చేయండి."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"కాల్‌ను చేయడానికి Wi-Fi కాలింగ్‌ను ప్రారంభించండి."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"అత్యవసర కాల్"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"రేడియోను ప్రారంభిస్తోంది…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"సేవ లేదు. మళ్లీ ప్రయత్నిస్తోంది…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"అత్యవసర కాల్‌లో ఉన్నప్పుడు ఎయిర్‌ప్లైన్ మోడ్‌లోకి ప్రవేశించలేరు."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"కాల్ చేయలేరు. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> అత్యవసర నంబర్ కాదు."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"కాల్ చేయలేరు. అత్యవసర నంబర్‌ను డయల్ చేయండి."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"డయల్ చేయడానికి కీబోర్డ్‌ను ఉపయోగించండి"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"అన్నింటినీ దిగుమతి చేయి"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM పరిచయాలను దిగుమతి చేస్తోంది"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"పరిచయాల నుండి దిగుమతి చేయి"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"పరిచయం దిగుమతి చేయబడింది"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"పరిచయాన్ని దిగుమతి చేయడంలో విఫలమైంది"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"వినికిడి సహాయక సాధనాలు"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"వినికిడి సహాయక సాధనం అనుకూలతను ప్రారంభించండి"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"అత్యవసర కాల్‌బ్యాక్ మోడ్‌లోకి ప్రవేశించింది"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"అత్యవసర కాల్‌బ్యాక్ మోడ్"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"డేటా కనెక్షన్ నిలిపివేయబడింది"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు డేటా కనెక్షన్ ఉండదు</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు డేటా కనెక్షన్ ఉండదు</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> వరకు డేటా కనెక్షన్ ఉండదు"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">ఫోన్ <xliff:g id="COUNT_1">%s</xliff:g> నిమిషాల పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
       <item quantity="one">ఫోన్ <xliff:g id="COUNT_0">%s</xliff:g> నిమిషం పాటు అత్యవసర కాల్‌బ్యాక్ మోడ్‌లో ఉంటుంది. ఈ మోడ్‌లో ఉన్నప్పుడు, డేటా కనెక్షన్‌ను ఉపయోగించే అనువర్తనాలు ఏవీ ఉపయోగించబడవు. మీరు ఇప్పుడు నిష్క్రమించాలనుకుంటున్నారా?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"పరిచయాన్ని ఎంచుకోండి"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"వాయిస్ కాలింగ్‌కు మద్దతు లేదు"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"డయల్ చేయి"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"వైబ్రేట్"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"వైబ్రేట్"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"దృశ్యమాన వాయిస్‌మెయిల్"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"ధ్వని"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PINని సెట్ చేయండి"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PINను మార్చు"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"రింగ్‌టోన్ &amp; వైబ్రేట్"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"అంతర్నిర్మిత SIM కార్డులు"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"వీడియో కాలింగ్‌ని ఆన్ చేయండి"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"అత్యవసర కాలింగ్ మాత్రమే"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM కార్డ్, స్లాట్: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ప్రాప్యత సామర్థ్యం"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"ఇన్‌కమింగ్ Wi-Fi కాల్"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"వీరి నుండి Wi-Fi కాల్"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi కాల్"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"తెరవడానికి మళ్లీ తాకండి"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"తెరవడానికి మళ్లీ నొక్కండి"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"సందేశాన్ని డీకోడ్ చేస్తున్నప్పుడు లోపం సంభవించింది."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM కార్డ్ మీ సేవను సక్రియం చేసింది మరియు మీ ఫోన్ రోమింగ్ సామర్థ్యాలను నవీకరించింది."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"చాలా ఎక్కువ కాల్‌లు సక్రియంగా ఉన్నాయి. దయచేసి మరొక కొత్త కాల్ చేసే ముందు ఇప్పటికే ఉన్న కాల్‌లను ముగించండి లేదా విలీనం చేయండి."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"కనెక్ట్ చేయడం సాధ్యపడలేదు, దయచేసి చెల్లుబాటు అయ్యే SIM కార్డ్‌ను చొప్పించండి."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi కనెక్షన్ పోయింది. కాల్ ముగిసింది."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"వాయిస్ మెయిల్ PINని మార్చండి"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"కొనసాగించు"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"రద్దు చేయి"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"సరే"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"మీ పాత PINని నిర్ధారించండి"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"కొనసాగించడానికి మీ వాయిస్ మెయిల్ PINని నమోదు చేయండి."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"కొత్త PINని సెట్ చేయండి"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN తప్పనిసరిగా <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> అంకెల మధ్య ఉండాలి."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"మీ PINని నిర్ధారించండి"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PINలు సరిపోలలేదు"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"వాయిస్ మెయిల్ PIN నవీకరించబడింది"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PINని సెట్ చేయడం సాధ్యపడలేదు"</string>
 </resources>
diff --git a/res/values-th/config.xml b/res/values-th/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-th/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2a30062..541933d 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"ข้อมูลมือถือ"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"ข้อมูลมือถือ"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"บริการโทรศัพท์"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"โปรแกรมโทรออกฉุกเฉิน"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"โทรศัพท์"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"ไม่มีหมายเลขข้อความเสียง"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"ไม่มีหมายเลขข้อความเสียงจัดเก็บอยู่ในซิมการ์ด"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"เพิ่มหมายเลข"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"ผู้ใช้หลักเท่านั้นที่สามารถเปลี่ยนการตั้งค่าข้อความเสียงได้"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"ยกเลิกการปิดกั้นซิมการ์ดแล้ว กำลังปลดล็อกโทรศัพท์ของคุณ..."</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN ปลดล็อกเครือข่ายซิม"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"ปลดล็อก"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"กำลังขอปลดล็อกเครือข่าย..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"คำขอปลดล็อกเครือข่ายไม่สำเร็จ"</string>
     <string name="unlock_success" msgid="6770085622238180152">"ปลดล็อกเครือข่ายไม่สำเร็จ"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"การตั้งค่าเครือข่ายมือถือไม่พร้อมใช้งานสำหรับผู้ใช้รายนี้"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"การตั้งค่าเครือข่ายมือถือไม่พร้อมใช้งานสำหรับผู้ใช้รายนี้"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"การตั้งค่าการโทร GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"การตั้งค่าการโทร GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"การตั้งค่าการโทร CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"โทรด้วย"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"โทรผ่าน SIP ด้วย"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"ถามก่อน"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"ไม่มีเครือข่ายที่ใช้งานได้"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"การตั้งค่า"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"เลือกบัญชี"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"บัญชีโทรศัพท์"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"ข้อความเสียง"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"ข้อความเสียง (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"การแจ้งเตือน"</string>
     <string name="networks" msgid="8873030692174541976">"ผู้ให้บริการเครือข่าย"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"การเผยแพร่ข้อมูลฉุกเฉิน"</string>
     <string name="call_settings" msgid="6112441768261754562">"การตั้งค่าการโทร"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"เมื่อติดต่อไม่ได้"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"หมายเลขเมื่อติดต่อไม่ได้"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"โอนสายไปที่ <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"ถูกปิดใช้งาน"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"ปิด"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"ผู้ให้บริการของคุณไม่สนับสนุนการปิดใช้งานการโอนสายเมื่อติดต่อไม่ได้"</string>
     <string name="updating_title" msgid="6146755386174019046">"การตั้งค่าการโทร"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"มีเพียงผู้ใช้หลักเท่านั้นที่สามารถเปลี่ยนการตั้งค่าการโทรได้"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"ผู้ใช้ระดับผู้ดูแลระบบเท่านั้นที่สามารถเปลี่ยนแปลงการตั้งค่าการโทรได้"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"การตั้งค่า (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"ข้อผิดพลาดในการตั้งค่าการโทร"</string>
     <string name="reading_settings" msgid="1920291699287055284">"กำลังประมวลการตั้งค่า…"</string>
@@ -128,7 +131,7 @@
     <string name="stk_cc_ss_to_dial_error" msgid="2816779198916570502">"คำขอ SS ที่แก้ไขเป็นคำขอ DIAL"</string>
     <string name="stk_cc_ss_to_ussd_error" msgid="7490626178582654236">"คำขอ SS ที่แก้ไขเป็นคำขอ USSD"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="5057846756489053759">"คำขอ SS ที่แก้ไขเป็นคำขอ SS ใหม่"</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"เนื่องจากมีการเปิดใช้การตั้งค่าการจำกัดหมายเลขโทรออกของแอปโทรศัพท์ จึงเป็นผลให้คุณลักษณะที่เกี่ยวกับการโทรบางอย่างไม่ทำงาน"</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"เนื่องจากมีการเปิดใช้การตั้งค่าการจำกัดหมายเลขโทรออกของแอปโทรศัพท์ จึงเป็นผลให้ฟีเจอร์ที่เกี่ยวกับการโทรบางอย่างไม่ทำงาน"</string>
     <string name="radio_off_error" msgid="2304459933248513376">"เปิดวิทยุก่อนดูการตั้งค่าเหล่านี้"</string>
     <string name="close_dialog" msgid="2365884406356986917">"ตกลง"</string>
     <string name="enable" msgid="7248657275000173526">"เปิด"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"ไม่มีการเปลี่ยนแปลง"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"เลือกบริการข้อความเสียง"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"ผู้ให้บริการของคุณ"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"การตั้งค่าเครือข่ายมือถือ"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"PIN เก่า"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"PIN ใหม่"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"โปรดรอสักครู่"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"PIN ใหม่สั้นเกินไป"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"PIN ใหม่ยาวเกินไป"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"PIN ใหม่เดาง่ายเกินไป รหัสผ่านที่เดายากไม่ควรมีตัวเลขที่เรียงค่ากันหรือตัวเลขซ้ำๆ"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"PIN เก่าไม่ถูกต้อง"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"PIN ใหม่มีอักขระที่ไม่ถูกต้อง"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"ไม่สามารถเปลี่ยน PIN ได้"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"ไม่รองรับข้อความประเภทนี้ โปรดโทร <xliff:g id="NUMBER">%s</xliff:g> เพื่อฟังข้อความเสียง"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"การตั้งค่าเครือข่ายมือถือ"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"เครือข่ายมือถือ"</string>
     <string name="label_available" msgid="1181658289009300430">"เครือข่ายที่ใช้งานได้"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"กำลังค้นหา…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"ไม่พบเครือข่าย"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"ลงทะเบียนบนเครือข่ายแล้ว"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"เลือกผู้ให้บริการเครือข่าย"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"ค้นหาเครือข่ายทั้งหมดที่ใช้ได้"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"เลือกโดยอัตโนมัติ"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"เลือกเครือข่ายที่ต้องการอัตโนมัติ"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"เลือกเครือข่ายโดยอัตโนมัติ"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"เครือข่าย"</string>
     <string name="register_automatically" msgid="6017849844573519637">"การลงทะเบียนอัตโนมัติ..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ประเภทเครือข่ายที่ต้องการ"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"เปลี่ยนโหมดปฏิบัติการของเครือข่าย"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM เท่านั้น"</item>
     <item msgid="3817924849415716259">"ต้องการ GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"กำลังโทร"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"เครือข่าย"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"โหมด 4G LTE ที่ปรับปรุงแล้ว"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"การโทรขั้นสูง"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"ใช้บริการ LTE เพื่อปรับปรุงเสียงและการติดต่อสื่อสารด้วยวิธีอื่นๆ (แนะนำ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"เปิดใช้งานข้อมูลแล้ว"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"อนุญาตการใช้ข้อมูล"</string>
-    <string name="roaming" msgid="8871412572928323707">"การโรมมิ่งข้อมูล"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"เชื่อมต่อบริการข้อมูลขณะโรมมิ่ง"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"โปรดทราบ"</string>
+    <string name="roaming" msgid="7894878421600247140">"โรมมิ่ง"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"เชื่อมต่ออินเทอร์เน็ตมือถือขณะโรมมิ่ง"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"เชื่อมต่ออินเทอร์เน็ตมือถือขณะโรมมิ่ง"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"การเชื่อมต่อข้อมูลของคุณหายไปเนื่องจากคุณออกจากเครือข่ายที่บ้านโดยปิดการโรมมิ่งข้อมูลไว้"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"คุณอาจต้องเสียค่าใช้จ่ายมาก"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"อนุญาตการโรมมิ่งอินเทอร์เน็ตไหม"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ปริมาณการใช้อินเทอร์เน็ต"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"เน็ตมือถือ <xliff:g id="ID_1">%1$s</xliff:g> ที่ใช้ระหว่าง <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"ผู้ให้บริการ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"เน็ตมือถือ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"เข้าถึงข้อมูลโดยใช้เครือข่ายมือถือ"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"การโทรผ่าน Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"การโทรวิดีโอผ่านผู้ให้บริการ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"ตัวเลือก GSM//UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"ตัวเลือก CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"การใช้ข้อมูล"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g>เกินจำนวนสูงสุด\nอัตราการส่งข้อมูลถูกลดเหลือ<xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ของรอบผ่านไป \n ช่วงถัดไปจะเริ่มในอีก <xliff:g id="USED_1">%2$d</xliff:g> วัน (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"อัตราการส่งข้อมูลถูกลดเหลือ <xliff:g id="USED">%1$d</xliff:g> Kb/s เมื่อใช้ข้อมูลเกินขีดจำกัดแล้ว"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"ข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการใช้ข้อมูลผ่านเครือข่ายมือถือของผู้ให้บริการ"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"ข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการใช้ข้อมูลของเครือข่ายมือถือจากผู้ให้บริการของคุณ"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS แจ้งเครือข่ายที่ใช้งาน"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS แจ้งเครือข่ายที่ใช้งาน"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"เปิดการใช้งาน SMS แจ้งเครือข่ายที่ใช้งานแล้ว"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"เพิ่มรายชื่อติดต่อ"</string>
     <string name="menu_edit" msgid="7143003705504672374">"แก้ไขรายชื่อติดต่อ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"ลบรายชื่อติดต่อ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"โทรติดต่อ"</string>
     <string name="get_pin2" msgid="8204677063922225311">"พิมพ์ PIN2"</string>
     <string name="name" msgid="7329028332786872378">"ชื่อ"</string>
     <string name="number" msgid="7905950798349903858">"หมายเลข"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"กำลังลบการจำกัดหมายเลขโทรออก…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"ลบการจำกัดหมายเลขโทรออกแล้ว"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN ไม่อัปเดตเพราะคุณป้อน PIN ไม่ถูกต้อง"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN ไม่อัปเดตเพราะหมายเลขจะมีจำนวนเกิน 20 หลักไม่ได้"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN ไม่อัปเดตเพราะหมายเลขว่างเปล่าหรือมีจำนวนเกิน 20 หลัก"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"ไม่ได้อัปเดต FDN เพราะ PIN2 ไม่ถูกต้องหรือหมายเลขโทรศัพท์ถูกปฏิเสธ"</string>
     <string name="fdn_failed" msgid="540018079008319747">"การปลดล็อกด้วย FDN ล้มเหลว"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"กำลังอ่านจากซิมการ์ด…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"ไม่ทราบหมายเลขข้อความเสียง"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"ไม่มีบริการ"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"เครือข่ายที่เลือกไว้ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) ไม่พร้อมใช้งาน"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"ปิดโหมดบนเครื่องบินเพื่อโทรออก"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"เปิดเครือข่ายมือถือ ปิดโหมดบนเครื่องบิน หรือปิดโหมดประหยัดแบตเตอรี่เพื่อโทรออก"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"ปิดโหมดบนเครื่องบินเพื่อโทรออก"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"ปิดโหมดบนเครื่องบินหรือเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"โปรดออกจากโหมดการโทรกลับกรณีฉุกเฉินเพื่อโทรไปยังหมายเลขที่ไม่ใช่หมายเลขฉุกเฉิน"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"ยังไม่ได้ลงทะเบียนบนเครือข่าย"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"เครือข่ายมือถือใช้งานไม่ได้"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"เครือข่ายมือถือไม่พร้อมใช้งาน โปรดเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"เครือข่ายมือถือใช้งานไม่ได้"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"เครือข่ายมือถือไม่พร้อมใช้งาน โปรดเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"ไม่สามารถโทรได้"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"กำลังเริ่มต้นลำดับ MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"การโทรล้มเหลว"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"ไม่สามารถเพิ่มสายได้ในขณะนี้"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"บริการนี้ไม่ได้รับการสนับสนุน"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"ไม่สามารถสลับสายได้"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"ไม่สามารถแยกสายได้"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"ประชุมทางโทรศัพท์ไม่ได้"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"ไม่สามารถปฏิเสธสายได้"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"ไม่สามารถเริ่มการโทรได้"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"ไม่สามารถถือสายรอได้"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"เชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"เปิดใช้การโทรผ่าน Wi-Fi เพื่อโทรออก"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"หมายเลขฉุกเฉิน"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"กำลังเปิดวิทยุ…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"ไม่มีบริการ โปรดลองอีกครั้ง…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ไม่สามารถเข้าสู่โหมดบนเครื่องบินระหว่างการโทรหมายเลขฉุกเฉินได้"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"ไม่สามารถโทรได้ <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ไม่ใช่หมายเลขฉุกเฉิน"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"ไม่สามารถโทรออก โทรหมายเลขฉุกเฉิน"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ใช้แป้นพิมพ์กดหมายเลขโทรศัพท์"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"นำเข้าทั้งหมด"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"กำลังนำเข้าสมุดโทรศัพท์ในซิม"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"นำเข้าจากสมุดโทรศัพท์"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"นำเข้ารายชื่อติดต่อแล้ว"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"ไม่สามารถนำเข้ารายชื่อติดต่อ"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"เครื่องช่วยฟัง"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"เปิดการช่วยฟัง"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"เข้าสู่โหมดติดต่อกลับฉุกเฉิน"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"โหมดติดต่อกลับฉุกเฉิน"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ปิดใช้งานการเชื่อมต่อเครือข่าย"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT_1">%s</xliff:g> นาที</item>
-      <item quantity="one">ไม่มีการเชื่อมต่อข้อมูลนาน <xliff:g id="COUNT_0">%s</xliff:g> นาที</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"ไม่มีการเชื่อมต่ออินเทอร์เน็ตมือถือจนถึง <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">โทรศัพท์จะเข้าโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT_1">%s</xliff:g> นาที ขณะใช้โหมดนี้ จะไม่สามารถใช้แอปพลิเคชันที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการออกตอนนี้ไหม</item>
       <item quantity="one">โทรศัพท์จะเข้าโหมดติดต่อกลับฉุกเฉินเป็นเวลา <xliff:g id="COUNT_0">%s</xliff:g> นาที ขณะใช้โหมดนี้ จะไม่สามารถใช้แอปที่ใช้การเชื่อมต่อข้อมูลได้ คุณต้องการออกตอนนี้ไหม</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"เลือกรายชื่อติดต่อ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"ไม่สนับสนุนการโทรออกด้วยเสียง"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"หมุนหมายเลข"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"สั่น"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"สั่น"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"ข้อความเสียงพร้อมภาพ"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"เสียง"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"ตั้งค่า PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"เปลี่ยน PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"เสียงเรียกเข้าและสั่น"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"ซิมการ์ดในตัว"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"เปิดแฮงเอาท์วิดีโอ"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"เฉพาะหมายเลขฉุกเฉินเท่านั้น"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"ซิมการ์ด ช่อง: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"การเข้าถึง"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"สายโทรเข้าผ่าน Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"โทรผ่าน Wi-Fi จาก"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"การโทรผ่าน Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"แตะอีกครั้งเพื่อเปิด"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"แตะอีกครั้งเพื่อเปิด"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"เกิดข้อผิดพลาดขณะถอดรหัสข้อความ"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"ซิมการ์ดได้เปิดใช้บริการของคุณและอัปเดตความสามารถในการโรมมิ่งของโทรศัพท์"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"มีสายที่ใช้งานอยู่มากเกินไป โปรดวางสายหรือรวมสายที่มีก่อนโทรออกครั้งใหม่"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"ไม่สามารถเชื่อมต่อ โปรดใส่ซิมการ์ดที่ถูกต้อง"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"การเชื่อมต่อ Wi-Fi ถูกตัด วางสายแล้ว"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"เปลี่ยน PIN ข้อความเสียง"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"ดำเนินการต่อ"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"ยกเลิก"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ตกลง"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"ยืนยัน PIN เก่าของคุณ"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"ป้อน PIN ข้อความเสียงเพื่อดำเนินการต่อ"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"ตั้งค่า PIN ใหม่"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN ต้องยาวระหว่าง <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> หลัก"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"ยืนยัน PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN ไม่ตรงกัน"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"อัปเดต PIN ข้อความเสียงแล้ว"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"ไม่สามารถตั้งค่า PIN"</string>
 </resources>
diff --git a/res/values-tl/config.xml b/res/values-tl/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-tl/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 6f70fe8..ce85b71 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Cellular Data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Data sa Mobile"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Mga Serbisyo sa Telepono"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Pang-emergency na Dialer"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telepono"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Nawawala ang numero ng voicemail"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Walang nakaimbak na numero ng voicemail sa SIM card."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Magdagdag ng numero"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Maaari lang baguhin ng Pangunahing User ang Mga Setting ng Voicemail."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Naalis sa pagkaka-block ang iyong SIM card. Nag-a-unlock ang iyong telepono…"</string>
     <string name="label_ndp" msgid="780479633159517250">"PIN na pang-unlock ng SIM network"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"I-unlock"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Humihiling ng pag-unlock sa network…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Hindi matagumpay ang kahilingan na i-unlock ang network."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Matagumpay ang pag-unlock ng network."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Hindi available ang mga setting ng cellular network para sa user na ito"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Hindi available ang mga setting ng mobile network para sa user na ito"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Mga setting ng tawag ng GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Mga setting ng tawag gamit ang GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Mga setting ng CDMA na tawag"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Tumawag gamit ang"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Tumawag sa pamamagitan ng SIP gamit ang"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Itanong muna"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Walang available na network"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Mga Setting"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Pumili ng mga account"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Mga account ng telepono"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Voicemail"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Voicemail (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Mga Notification"</string>
     <string name="networks" msgid="8873030692174541976">"Mga network operator"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Mga pang-emergency na broadcast"</string>
     <string name="call_settings" msgid="6112441768261754562">"Mga setting ng tawag"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Kapag hindi makontak"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Numero kapag hindi makontak"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Pinapasa sa <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Hindi pinagana"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Naka-off"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Hindi sinusuportahan ng iyong carrier ang hindi pagpapagana ng pagpasa ng tawag kapag hindi maabot ang iyong telepono."</string>
     <string name="updating_title" msgid="6146755386174019046">"Mga setting ng tawag"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Ang pangunahing user lang ang makakapagbago ng mga setting ng tawag."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Ang admin user lang ang maaaring magbago sa mga setting ng tawag."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Mga Setting (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Error sa mga setting ng tawag"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Binabasa ang mga setting…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Walang ginawang mga pagbabago."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Piliin ang serbisyo ng voicemail"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Ang iyong carrier"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Setting ng cellular network"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Lumang PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Bagong PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Pakihintay."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Masyadong maikli ang bagong PIN."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Masyadong mahaba ang bagong PIN."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Masyadong mahina ang bagong PIN. Ang isang malakas na password ay hindi dapat magkaroon ng tuloy-tuloy na sequence o paulit-ulit na mga digit."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Hindi tumutugma ang lumang PIN."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Ang bagong PIN ay naglalaman ng mga di-wastong character."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Hindi nabago ang PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Hindi sinusuportahang uri ng mensahe, tawagan ang <xliff:g id="NUMBER">%s</xliff:g> upang pakinggan."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mga setting ng mobile network"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobile network"</string>
     <string name="label_available" msgid="1181658289009300430">"Mga available na network"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Naghahanap…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Walang nakitang mga network."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Nakarehistro sa network."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Pumili ng network operator"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Hanapin ang lahat ng mga available na network"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Awtomatikong pumili"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Awtomatikong pumili ng gustong network"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Awtomatikong piliin ang network"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Network"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Awtomatikong pagpaparehistro..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Gustong uri ng network"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Baguhin ang network operating mode"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"GSM lang"</item>
     <item msgid="3817924849415716259">"Ninanais ang GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Tumatawag"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Network"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Enhanced 4G LTE Mode"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Advanced na Pagtawag"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Gamitin ang LTE upang pahusayin ang voice at ibang komunikasyon (inirerekomenda)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Pinagana ang data"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Payagan ang paggamit ng data"</string>
-    <string name="roaming" msgid="8871412572928323707">"Roaming ng data"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Bigyang-pansin"</string>
+    <string name="roaming" msgid="7894878421600247140">"Roaming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Kumonekta sa mga serbisyo ng data kapag nagro-roam"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Kumonekta sa mga serbisyo ng data kapag nagro-roam"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Nawalan ka ng pagkonekta sa data dahil iniwan mo ang iyong home network na naka-off ang roaming ng data."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Maaari kang magkaroon ng malaking bayarin."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Payagan ang roaming ng data?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Paggamit ng data"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> na mobile data ang nagamit sa pagitan ng <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Carrier"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobile Data"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"I-access ang data gamit ang mobile network"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Pagtawag gamit ang Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Pakikipag-video call gamit ang carrier"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Mga pagpipilian sa GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Mga pagpipiliian sa CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Paggamit ng data"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Ang <xliff:g id="USED_0">%1$s</xliff:g> na maximum ay lumagpas sa\nBinabaan ang rate ng data sa <xliff:g id="USED_1">%2$d</xliff:g> Kb/s"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ ng cycle ay lumagpas sa\nMagsisimula ang susunod na tagal ng panahon sa loob ng <xliff:g id="USED_1">%2$d</xliff:g> (na) araw (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Ibinaba ang rate ng data sa <xliff:g id="USED">%1$d</xliff:g> Kb/s kung nalagpasan ang limitasyon sa paggamit ng data"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Higit pang impormasyon tungkol sa patakaran sa paggamit ng data sa cellular network ng iyong carrier"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Higit pang impormasyon tungkol sa patakaran sa paggamit ng data sa mobile network ng iyong carrier"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Pinagana ang Cell Broadcast SMS"</string>
@@ -252,9 +278,9 @@
     <string name="list_language_title" msgid="2841683501919760043">"Wika"</string>
     <string name="list_language_summary" msgid="8109546531071241601">"Piliin ang wika ng balita"</string>
   <string-array name="list_language_entries">
-    <item msgid="6137851079727305485">"Ingles"</item>
+    <item msgid="6137851079727305485">"English"</item>
     <item msgid="1151988412809572526">"French"</item>
-    <item msgid="577840534704312665">"Espanyol"</item>
+    <item msgid="577840534704312665">"Spanish"</item>
     <item msgid="8385712091143148180">"Japanese"</item>
     <item msgid="1858401628368130638">"Korean"</item>
     <item msgid="1933212028684529632">"Chinese"</item>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Magdagdag ng contact"</string>
     <string name="menu_edit" msgid="7143003705504672374">"I-edit ang contact"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Tanggalin ang contact"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"I-dial ang contact"</string>
     <string name="get_pin2" msgid="8204677063922225311">"I-type ang PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Pangalan"</string>
     <string name="number" msgid="7905950798349903858">"Numero"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Tinatanggal ang fixed dialing number…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Tinanggal ang fixed dialing number."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Hindi na-update ang FDN dahil maling PIN ang iyong na-type."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Hindi pa na-update ang FDN dahil hindi maaaring humigit sa 20 digit ang numero."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Hindi na-update ang FDN dahil walang inilagay na numero o lampas ito sa 20 digit."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Hindi na-update ang FDN. Hindi wasto ang PIN2, o tinanggihan ang numero ng telepono."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Nagbigo ang operasyon ng FDN."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Nagbabasa mula sa SIM card…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Hindi kilala ang numero ng voicemail"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Walang serbisyo"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Hindi available ang mga piniling network (<xliff:g id="OPERATOR_NAME">%s</xliff:g>)"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"I-off ang airplane mode upang makatawag."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"I-on ang mobile network, i-off ang airplane mode o i-off ang battery saver mode upang tumawag."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"I-off ang airplane mode upang makatawag."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"I-off ang airplane mode o kumonekta sa isang wireless network upang makatawag."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Lumabas sa emergency callback mode upang makapagsagawa ng hindi pang-emergency na pagtawag."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Hindi nakarehistro sa network."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Hindi available ang cellular network"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hindi available ang cellular network. Kumonekta sa isang wireless network upang makatawag."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Hindi available ang mobile network."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Hindi available ang mobile network. Kumonekta sa isang wireless network upang tumawag."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Upang tumawag, maglagay ng wastong numero."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Hindi makatawag."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Sinisimulan ang pagkakasunud-sunod ng MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Nabigo ang tawag."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hindi maidaragdag ang tawag sa oras na ito."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Hindi sinusuportahan ang serbisyo"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Hindi mailipat ang mga tawag."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Hindi mapaghiwalay ang tawag"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Hindi nagawang i-conference ang mga tawag."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Hindi matanggihan ang tawag."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Hindi mailabas ang (mga) tawag."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Hindi makakapag-hold ng mga tawag."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kumonekta sa isang wireless network upang makatawag."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"I-enable ang pagtawag sa Wi-Fi upang tumawag."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Emergency na tawag"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ino-on ang radyo…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Walang serbisyo. Sinusubukang muli…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Hindi maaaring ilagay sa ariplane mode habang nasa isang emergency na tawag."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Hindi makatawag. Ang <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ay hindi isang emergency na numero."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Hindi makatawag. Mag-dial ng emergency na numero."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Gamitin ang keyboard upang mag-dial"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"I-import lahat"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Ini-import ang mga contact sa SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"I-import mula sa mga contact"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Na-import ang contact"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Hindi na-import ang contact"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Mga hearing aid"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"I-on ang compatibility ng hearing aid"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ipinasok na Emergency Callback Mode"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Emergency Callback Mode"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Hindi pinagana ang koneksyon ng data"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Walang koneksyon ng data sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> minuto</item>
-      <item quantity="other">Walang koneksyon ng data sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> na minuto</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Walang koneksyon sa data hanggang <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Mapupunta sa Emergency Callback mode ang telepono sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> minuto. Habang nasa mode na ito, walang magagamit na mga application na gumagamit ng koneksyon ng data. Gusto mo bang lumabas ngayon?</item>
       <item quantity="other">Mapupunta sa Emergency Callback mode ang telepono sa loob ng <xliff:g id="COUNT_1">%s</xliff:g> na minuto. Habang nasa mode na ito, walang magagamit na mga application na gumagamit ng koneksyon ng data. Gusto mo bang lumabas ngayon?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"pumili ng contact"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Hindi suportado ang voice calling"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"Mag-dial"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Mag-vibrate"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Mag-vibrate"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Tunog"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Magtakda ng PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Baguhin ang PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone at Pag-vibrate"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Mga built-in na SIM card"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"I-on ang video calling"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Emergency na pagtawag lang"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM card, slot: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Pagiging Naa-access"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Papasok na tawag sa Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Tawag sa Wi-Fi mula kay"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Tawag sa Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Pinduting muli upang buksan"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"I-tap muli upang buksan"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Nagkaroon ng error habang dine-decode ang mensahe."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Na-activate ng isang SIM card ang iyong serbisyo at na-update ang mga kakayahang roaming ng iyong telepono."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Masyadong maraming aktibong tawag. Mangyaring tapusin o pagsamahin ang mga umiiral na tawag bago gumawa ng bago."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Hindi nakakonekta, pakipasok ang isang wastong SIM card."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Nawala ang koneksyon sa Wi-Fi. Natapos ang tawag."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Baguhin ang PIN sa Voicemail"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Magpatuloy"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Kanselahin"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Ok"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Kumpirmahin ang luma mong PIN"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Ilagay ang iyong PIN sa voicemail upang magpatuloy."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Magtakda ng bagong PIN"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Ang PIN ay dapat <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> (na) digit."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Kumpirmahin ang iyong PIN"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Hindi tugma ang mga PIN"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"In-update ang PIN sa voicemail"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Hindi naitakda ang PIN"</string>
 </resources>
diff --git a/res/values-tr/config.xml b/res/values-tr/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-tr/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 59d1fc4..dab7099 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Hücresel Veriler"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobil Veriler"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon Hizmetleri"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Acil Durum Çeviricisi"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Eksik sesli mesaj numarası"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartta depolanan sesli mesaj numarası yok."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Numara ekle"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Sesli Mesaj Ayarları yalnızca Birincil Kullanıcı tarafından değiştirilebilir."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"SIM kartınızın engellemesi kaldırıldı. Telefonunuzun kilidi açılıyor..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM ağı kilit açma PIN kodu"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Kilit Aç"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Ağ kilidini açma isteği yapılıyor..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Ağ kilidi açma isteği başarısız."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ağ kilidi açılamadı."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Bu kullanıcı için hücresel ağ ayarları kullanılamıyor"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Bu kullanıcı için mobil ağ ayarları kullanılamıyor"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM çağrı ayarları"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM çağrı ayarları (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA çağrı ayarları"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Aramaları şu hesapla yap:"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP aramalarını şu hesapla yap:"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Önce sor"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Kullanılabilir ağ yok"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Ayarlar"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Hesapları seç"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefon hesapları"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Sesli mesaj"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Sesli mesaj (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Bildirimler"</string>
     <string name="networks" msgid="8873030692174541976">"Ağ operatörleri"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Acil durum yayınları"</string>
     <string name="call_settings" msgid="6112441768261754562">"Çağrı ayarları"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Ulaşılamadığında"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Ulaşılamadığında kullanılacak numara"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Şuraya yönlendiriliyor: <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Devre dışı"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Kapalı"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Operatörünüz, telefonunuza ulaşılamadığında çağrı yönlendirmenin devre dışı bırakılmasını desteklemiyor."</string>
     <string name="updating_title" msgid="6146755386174019046">"Çağrı ayarları"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Çağrı ayarları sadece birincil kullanıcı tarafından değiştirilebilir."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Çağrı ayarları sadece yönetici tarafından değiştirilebilir."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Ayarlar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Çağrı ayarları hatası"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Ayarlar okunuyor..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Hiçbir değişiklik yapılmadı."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Sesli mesaj hizmetini seç"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Operatörünüz"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Hücresel ağ ayarları"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Eski PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yeni PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Lütfen bekleyin."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yeni PIN çok kısa."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yeni PIN çok uzun."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yeni PIN çok zayıf. Güçlü bir şifrede birbirini sıralı şekilde takip eden veya yinelenen rakamlar bulunmamalıdır."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Eski PIN eşleşmiyor."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Yeni PIN, geçersiz karakterler içeriyor."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN değiştirilemedi"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Desteklenmeyen mesaj türü. Dinlemek için <xliff:g id="NUMBER">%s</xliff:g> numaralı telefonu arayın."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Mobil ağ ayarları"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobil ağ"</string>
     <string name="label_available" msgid="1181658289009300430">"Kullanılabilir ağlar"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Aranıyor..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Hiçbir ağ bulunamadı."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Ağa kaydedildi."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Bir ağ operatörü seçin"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Kullanılabilen tüm ağları ara"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Otomatik olarak seç"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Tercih edilen ağı otomatik olarak seç"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Ağı otomatik seç"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Ağ"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Otomatik kayıt..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tercih edilen ağ türü"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Ağın çalışma modunu değiştir"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Yalnızca GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA tercih edilen"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Çağrı"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Ağ"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Geliştirilmiş 4G LTE Modu"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Gelişmiş Çağrı"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Sesi ve diğer iletişimleri iyileştirmek için LTE hizmetlerini kullanın (önerilir)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Veri etkin"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Veri kullanımına izin ver"</string>
-    <string name="roaming" msgid="8871412572928323707">"Veri dolaşımı"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Dikkat"</string>
+    <string name="roaming" msgid="7894878421600247140">"Dolaşım"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Dolaşımdayken veri hizmetlerine bağlan"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Dolaşımdayken veri hizmetlerine bağlan"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Veri dolaşımı kapalıyken ev ağınızdan ayrıldığınız için veri bağlantısını kaybettiniz."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Kayda değer ücretler ödeyebilirsiniz."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Veri dolaşımına izin verilsin mi?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Veri kullanımı"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> arasında <xliff:g id="ID_1">%1$s</xliff:g> mobil veri kullanıldı"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatör"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobil Veri"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Verilere mobil ağ üzerinden erişim"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Kablosuz çağrı"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operatör görüntülü görüşmesi"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS Seçenekleri"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA Seçenekleri"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Veri kullanımı"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Maksimum değer <xliff:g id="USED_0">%1$s</xliff:g> aşıldı\nVeri hızı <xliff:g id="USED_1">%2$d</xliff:g> Kb/s\'ye düşürüldü"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"Dönemin tamamlanan bölümü:٪ <xliff:g id="USED_0">%1$d</xliff:g>\nBir sonraki dönem <xliff:g id="USED_1">%2$d</xliff:g> gün sonra başlıyor (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Veri kullanım sınırı aşılırsa veri hızı <xliff:g id="USED">%1$d</xliff:g> Kb/s\'ye düşürülür"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Operatörünüzün hücresel ağ üzerinden veri kullanımı politikası hakkında daha fazla bilgi edinin"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Operatörünüzün mobil ağ üzerinden veri kullanımı politikası hakkında daha fazla bilgi edinin"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Hücre Yayını SMS\'i"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Hücre Yayını SMS\'i"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Hücre Yayını SMS\'si etkinleştirildi"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Kişi ekle"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Kişiyi düzenle"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Kişiyi sil"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Kişiye telefon et"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2\'yi yazın"</string>
     <string name="name" msgid="7329028332786872378">"Ad"</string>
     <string name="number" msgid="7905950798349903858">"Numara"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Sabit arama numarası siliniyor..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Sabit arama numarası silindi."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Yanlış PIN girdiğiniz için FDN güncellenmedi."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Sayı 20 basamaktan uzun olamayacağından FDN güncellenmedi."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Sayı boş veya 20 basamaktan uzun olduğundan FDN güncellenmedi."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN güncellenmedi. PIN2 doğru değildi veya telefon numarası reddedildi."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN işlemi başarısız oldu."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM karttan okunuyor..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Sesli mesaj numarası bilinmiyor"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Hizmet yok"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Seçili ağ (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) kullanılamıyor"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Telefon etmek için uçak modunu kapatın."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Telefon etmek için mobil ağı açın, uçak modunu veya pil tasarrufu modunu kapatın."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Telefon etmek için uçak modunu kapatın."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Telefon etmek için uçak modunu kapatın veya kablosuz ağa bağlanın."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Acil durum çağrısı dışında bir çağrı yapmak için acil durumda geri aranma modundan çıkın."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ağda kayıtlı değil."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Hücresel ağ kullanılamıyor."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hücresel ağ kullanılamıyor. Telefon etmek için kablosuz ağa bağlanın."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mobil ağ kullanılamıyor."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobil ağ kullanılamıyor. Telefon etmek için kablosuz ağa bağlanın."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Arama yapmak için geçerli bir numara girin."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Arama yapılamıyor."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI dizisi başlatılıyor..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Sesli arama başarısız oldu."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Çağrı şu anda eklenemiyor."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Hizmet desteklenmiyor"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Çağrı geçişi yapılamıyor."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Çağrı ayrılamıyor."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Çağrılar konferans görüşmesi olarak birleştirilemiyor."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Çağrı reddedilemiyor."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Çağrılar bırakılamıyor."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Çağrılar beklemeye alınamıyor."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Telefon etmek için kablosuz ağa bağlanın."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Telefon etmek için Kablosuz çağrı\'yı etkinleştirin."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Acil durum çağrısı"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radyo açılıyor..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Servis yok. Tekrar deneniyor…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Acil durum çağrısı sırasında uçak moduna geçilemez."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Aranamıyor. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> bir acil durum numarası değil."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Aranamıyor. Bir acil durum numarasını arayın."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Çevirmek için klavyeyi kullan"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Tümünü içe aktar"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM kişileri içe aktarılıyor"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Kişilerden içe aktar"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kişi içe aktarıldı"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kişi içe aktarılamadı"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"İşitme cihazları"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"İşitme cihazı uyumluluğunu aç"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Acil Geri Arama Moduna Girildi"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Acil Geri Arama Modu"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Veri bağlantısı devre dışı bırakıldı"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> dakika boyunca veri bağlantısı yok</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> dakika boyunca veri bağlantısı yok</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Şu saate kadar veri bağlantısı olmayacak: <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefon <xliff:g id="COUNT_1">%s</xliff:g> dakika boyunca bu modda olacak. Bu moddayken veri bağlantısı kullanan hiçbir uygulama kullanılamaz. Şimdi çıkmak istiyor musunuz?</item>
       <item quantity="one">Telefon <xliff:g id="COUNT_0">%s</xliff:g> dakika boyunca bu modda olacak. Bu moddayken veri bağlantısı kullanan hiçbir uygulama kullanılamaz. Şimdi çıkmak istiyor musunuz?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"kişi seçin"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Sesli arama desteklenmiyor"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"çevir"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Titreşim"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Titreşim"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Görsel Sesli Mesaj"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ses"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN\'i ayarlayın"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN\'i değiştirin"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Zil Sesi ve Titreşim"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Yerleşik SIM kartlar"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Video görüşmesini aç"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Yalnızca acil durum çağrısı"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM kart, yuva: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Erişilebilirlik"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Gelen kablosuz çağrı"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Gelen çağrı (kablosuz):"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Kablosuz çağrı"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Açmak için tekrar dokunun"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Açmak için tekrar dokunun"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"İletinin kodu çözülürken bir hata oluştu."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Bir SIM kart, hizmetinizi etkinleştirdi ve telefonunuzun dolaşım özelliklerini güncelledi."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Etkin çağrıların sayısı çok fazla. Yeni bir çağrı yapmadan önce lütfen mevcut çağrıları sonlandırın veya birleştirin."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Bağlantı kurulamadı. Lütfen geçerli bir SIM kart takın."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Kablosuz bağlantı koptu. Çağrı sona erdi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Sesli Mesaj PIN\'ini Değiştirin"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Devam"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"İptal"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Tamam"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Eski PIN\'inizi onaylayın"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Devam etmek için sesli mesaj PIN\'inizi girin."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Yeni PIN oluşturun"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN, <xliff:g id="MIN">%1$d</xliff:g> ila <xliff:g id="MAX">%2$d</xliff:g> basamaklı olmalıdır."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN\'inizi onaylayın"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN\'ler eşleşmiyor"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Sesli mesaj PIN\'i güncellendi"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN ayarlanamadı"</string>
 </resources>
diff --git a/res/values-uk/config.xml b/res/values-uk/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-uk/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 91546ca..cb7743c 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Мобільні дані"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Мобільні дані"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Телефонні служби"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Аварійний телефон"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Телефон"</string>
@@ -26,7 +26,7 @@
     <string name="payphone" msgid="4793877574636445118">"Таксофон"</string>
     <string name="onHold" msgid="9035493194749959955">"Очікує"</string>
     <string name="mmiStarted" msgid="6347869857061147003">"Код MMI запущено"</string>
-    <string name="ussdRunning" msgid="485588686340541690">"Запуск. код USSD..."</string>
+    <string name="ussdRunning" msgid="485588686340541690">"Виконується запит USSD…"</string>
     <string name="mmiCancelled" msgid="2771923949751842276">"Код MMI скасовано"</string>
     <string name="cancel" msgid="5044513931633602634">"Скасувати"</string>
     <string name="enter_input" msgid="1810529547726803893">"Кількість символів повідомлення USSD має становити від <xliff:g id="MIN_LEN">%d</xliff:g> до <xliff:g id="MAX_LEN">%d</xliff:g>. Повторіть спробу."</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Відстуній номер голосової пошти"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"На SIM-карті немає збереж. номерів голос. пошти."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Додати номер"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Налаштування голосової пошти може змінювати лише основний користувач."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Вашу SIM-карту розблоковано. Ваш телефон розблоковується..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Розбл. PIN-код мережі SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Розблок."</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Запитув. розблок. мережі..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Не здійсн. запит розблокування мережі"</string>
     <string name="unlock_success" msgid="6770085622238180152">"Мережу успішно розблоковано."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Налаштування мобільної мережі недоступні для цього користувача"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Налаштування мобільної мережі недоступні для цього користувача"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Налаштування викликів GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Налаштування викликів GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Налашт. викл. в CDMA"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Налаштування викликів CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Назва точки доступу"</string>
-    <string name="settings_label" msgid="3876743539816984008">"Налашт-ння мережі"</string>
+    <string name="settings_label" msgid="3876743539816984008">"Налаштування мережі"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Обл. записи для дзвінків"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Здійснювати дзвінки за допомогою"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Здійснювати дзвінки SIP за допомогою"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Спершу запитувати"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Немає доступних мереж"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Налаштування"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Вибрати облікові записи"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Облікові записи на телефоні"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Голосова пошта"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Голосова пошта (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"ГП:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Сповіщення"</string>
     <string name="networks" msgid="8873030692174541976">"Оператори мережі"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Повідомлення екстрених служб"</string>
     <string name="call_settings" msgid="6112441768261754562">"Виклики"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Коли недоступно"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Переадресовувати на цей номер"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Переадресація на <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Вимкнено"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Вимкнено"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Ваш оператор не підтримує вимкнення переадресації викликів, коли телефон недосяжний."</string>
     <string name="updating_title" msgid="6146755386174019046">"Налаштування викликів"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Налаштування виклику може змінити лише основний користувач."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Налаштування викликів може змінювати лише адміністратор."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Налаштування (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Помилка налаштування викликів"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Читання налаштувань…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Не здійсн. жодних змін."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Вибер. службу голос. пошти"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Ваш оператор"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Налаштування моб. мереж"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Старий PIN-код"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Новий PIN-код"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Зачекайте."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Новий PIN-код закороткий."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Новий PIN-код задовгий."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Новий PIN-код недостатньо надійний. Надійний PIN-код не має містити прямих послідовностей або повторюваних цифр."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Старий PIN-код неправильний."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Новий PIN-код містить недійсні символи"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Не вдалося змінити PIN-код"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Повідомлення непідтримуваного типу. Зателефонуйте на номер <xliff:g id="NUMBER">%s</xliff:g>, щоб прослухати."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Налаштування мобільної мережі"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Мобільна мережа"</string>
     <string name="label_available" msgid="1181658289009300430">"Доступні мережі"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Пошук…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Не знайд. жодних мереж."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Зареєстровано у мережі"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Виберіть оператора мережі"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Пошук усіх доступних мереж"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Вибирати автоматично"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Автоматично вибирати основну мережу"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Автоматично вибирати мережу"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Мережа"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Автоматична реєстрація..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Тип мережі"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Змінити режим роботи мережі"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Лише GSM"</item>
     <item msgid="3817924849415716259">"Рекомендовано GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Виклики"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Мережа"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Розширений режим 4G LTE"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Дзвінки з розширеними можливостями"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Використ. служби LTE для покращення голосового й інших типів зв’язку (рекоменд.)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Передавання даних"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Дозволити використання даних"</string>
-    <string name="roaming" msgid="8871412572928323707">"Роумінг даних"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Увага"</string>
+    <string name="roaming" msgid="7894878421600247140">"Роумінг"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Підключатися до служб передавання даних у роумінгу"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Підключатися до служб передавання даних у роумінгу"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Доступ до даних утрачено, оскільки ви вийшли з домашньої мережі з вимкненим роумінгом даних."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Може стягуватися значна плата."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Дозволити роумінг даних?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Використання трафіку"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> мобільного трафіку використано в період <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Оператор"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>: <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Мобільний трафік"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Доступ до Інтернету в мобільній мережі"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Дзвінки через Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Відеодзвінки в мережі оператора"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Параметри GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Параметри CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Викор. даних"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> макс. перевищ.\nШв. перед. дан. скор. до <xliff:g id="USED_1">%2$d</xliff:g> КБ/сек"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ з циклу здійсн.\nНаст. період почин. через <xliff:g id="USED_1">%2$d</xliff:g> дн. (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Шв. перед. скор. до <xliff:g id="USED">%1$d</xliff:g> КБ/сек, якщо перев. ліміт викор. даних"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Докладніше про політику використання мобільних даних вашого оператора"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Докладніше про політику викор. даних мобільної мережі вашого оператора"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Ф-ц. Cell Broadcast SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Ф-ц. Cell Broadcast SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Ф-ц/ Cell Broadcast SMS увімк."</string>
@@ -347,14 +373,15 @@
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Керувати списком номерів"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Конфіденційність Voice"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Увімкн. режим розшир. конфіденц."</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"Режим TTY"</string>
-    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Устан. режим TTY"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"Режим телетайпа"</string>
+    <string name="tty_mode_option_summary" msgid="1073835131534808732">"Установити режим телетайпа"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Автоповтор"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Увімкнути режим автоповтору"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Під час відеодзвінка заборонено змінювати режим TTY"</string>
     <string name="menu_add" msgid="1882023737425114762">"Додати контакт"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Змінити контакт"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Видалити контакт"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Зателефонувати контакту"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Введіть PIN2-код"</string>
     <string name="name" msgid="7329028332786872378">"Ім\'я"</string>
     <string name="number" msgid="7905950798349903858">"Номер"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Видалення номеру фікс. набору…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Номер фікс. набору видалено."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"Фіксований номер (FDN) не оновлено, оскільки введено неправильний PIN-код."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"Фіксований номер (FDN) не оновлено, оскільки кількість цифр не може перевищувати 20."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN не оновлено (номер не вказаний або довший за 20 цифр)."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"Фіксований номер (FDN) не оновлено. PIN2-код неправильний або номер телефону відхилено."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Помилка набору фіксованого номера."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Читання із SIM-карти…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Невідомий номер голосової пошти"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Нема служби"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Вибрана мережа (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) недоступна"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Щоб зателефонувати, вимкніть режим польоту."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Щоб зателефонувати, увімкніть мобільну мережу, вимкніть режим польоту або режим економії заряду."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Щоб зателефонувати, вимкніть режим польоту."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Щоб зателефонувати, вимкніть режим польоту або під’єднайтеся до бездротової мережі."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Щоб зателефонувати на звичайний номер, вимкніть режим екстрених викликів."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Не зареєстровано в мережі."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Мобільна мережа недоступна."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Мобільна мережа недоступна. Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Мобільна мережа недоступна."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Мобільна мережа недоступна. Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Щоб зателефонувати, введіть дійсний номер."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Неможливо зателефонувати."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Запуск ряду MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Не вдалося здійснити виклик."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Зараз не можна додати виклик."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Служба не підтримується"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Неможливо переключитися між викликами."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Неможливо розділити виклик."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Неможл. створ. конференц-викл."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Неможливо відхилити виклик."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Неможливо телефонувати."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Не можна призупиняти виклики."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Щоб мати змогу телефонувати, увімкніть виклики через Wi-Fi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Аварійний виклик"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Увімкнення радіо…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Зв’язку немає. Повторна спроба…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Неможливо перейти в режим польоту під час екстреного виклику."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Неможливо зателефонувати. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> – не є екстреним номером."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Неможливо зателефонувати. Наберіть екстрений номер."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Викор. клав. для набору"</string>
@@ -464,13 +495,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Імпорт. всі"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Імпорт контактів SIM-карти"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Імпортув. з контактів"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Імпортований контакт"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Контакт не імпортовано"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Слухові апарати"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Увімкнути функцію НАС"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY вимк."</item>
-    <item msgid="3971695875449640648">"TTY повн."</item>
-    <item msgid="1937509904407445684">"HCO TTY"</item>
-    <item msgid="5644925873488772224">"TTY VCO"</item>
+    <item msgid="512950011423868021">"Телетайп вимкнено"</item>
+    <item msgid="3971695875449640648">"Повнофункціональний телетайп"</item>
+    <item msgid="1937509904407445684">"Телетайп з можливістю чути співрозмовника"</item>
+    <item msgid="5644925873488772224">"Телетайп з можливістю передачі голосу"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"Сигнали DTMF"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"Установити довжину сигналів DTMF"</string>
@@ -504,12 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Увійд. в реж. авар. зворот. виклику"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Реж. авар. зворот. виклику"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Передавання даних вимкнено"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилини</item>
-      <item quantity="few">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
-      <item quantity="many">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
-      <item quantity="other">Передавання даних недоступне протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Немає мобільного Інтернету до <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилини. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
       <item quantity="few">Телефон перебуватиме в режимі екстреного виклику протягом <xliff:g id="COUNT_1">%s</xliff:g> хвилин. У цьому режимі не працюватимуть додатки, які передають дані. Вийти?</item>
@@ -527,7 +555,7 @@
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Так"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Ні"</string>
     <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Відхилити"</string>
-    <string name="voicemail_provider" msgid="5135942703327136909">"Служба"</string>
+    <string name="voicemail_provider" msgid="5135942703327136909">"Обслуговування"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Налаштування"</string>
     <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Не встановлено&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Інші налаштування виклику"</string>
@@ -537,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"вибрати контакт"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Голосові дзвінки не підтримуються"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"дзвонити"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Вібросигнал"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Вібросигнал"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Візуальна голосова пошта"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Звук"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Установити PIN-код"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Змінити PIN-код"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Сигнал дзвінка та вібросигнал"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Вбудовані SIM-карти"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Увімкнути відеодзвінки"</string>
@@ -551,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Лише екстрені виклики"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM-карта, роз’єм: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Спеціальні можливості"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Вхід. дзвінок через Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Виклик Wi-Fi від"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Дзвінок через Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Торкніться знову, щоб відкрити"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Торкніться знову, щоб відкрити"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Під час розшифрування повідомлення сталася помилка."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Коли ви вставили SIM-карту, було активовано мобільний зв’язок і оновлено можливості роумінгу вашого телефона."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Забагато активних викликів. Перш ніж зателефонувати новому абоненту, завершіть або об’єднайте поточні виклики."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Не вдається підключитися. Вставте дійсну SIM-карту."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Утрачено з’єднання Wi-Fi. Виклик завершено."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Змінити PIN-код голосової пошти"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Продовжити"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Скасувати"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Підтвердьте старий PIN-код"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Щоб продовжити, введіть PIN-код голосової пошти."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Введіть новий PIN-код"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Рекомендована кількість цифр у PIN-коді: <xliff:g id="MIN">%1$d</xliff:g>–<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Підтвердьте свій PIN-код"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN-коди не збігаються"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"PIN-код голосової пошти змінено"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Не вдалося встановити PIN-код"</string>
 </resources>
diff --git a/res/values-ur-rPK/arrays.xml b/res/values-ur/arrays.xml
similarity index 100%
rename from res/values-ur-rPK/arrays.xml
rename to res/values-ur/arrays.xml
diff --git a/res/values-ur/config.xml b/res/values-ur/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-ur/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur/strings.xml
similarity index 86%
rename from res/values-ur-rPK/strings.xml
rename to res/values-ur/strings.xml
index 1cbd91d..7e3babf 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"سیلولر ڈیٹا"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"موبائل ڈیٹا"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"فون سروسز"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"ہنگامی ڈائلر"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"فون"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"صوتی میل نمبر درج نہیں ہے"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"‏SIM کارڈ پر کوئی بھی صوتی میل نمبر اسٹور نہیں ہے۔"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"نمبر شامل کریں"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"صرف بنیادی صارف ہی صوتی میل کی ترتیبات تبدیل کر سکتا ہے۔"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"‏آپ کا SIM کارڈ غیر مسدود ہوگیا ہے۔ آپ کا فون غیر مقفل ہو رہا ہے…"</string>
     <string name="label_ndp" msgid="780479633159517250">"‏SIM نیٹ ورک غیر مقفل کرنے کا PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"غیر مقفل کریں"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"نیٹ ورک غیر مقفل کرنے کی درخواست کر رہا ہے…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"نیٹ ورک غیر مقفل کرنے کی درخواست ناکام ہوگئی۔"</string>
     <string name="unlock_success" msgid="6770085622238180152">"نیٹ ورک غیر مقفل کرنا کامیاب رہا۔"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"اس صارف کیلئے سیلولر نیٹ ورک کی ترتیبات دستیاب نہیں ہیں"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"اس صارف کیلئے موبائل نیٹ ورک کی ترتیبات دستیاب نہیں ہیں"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"‏GSM کال کی ترتیبات"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"‏GSM کال کی ترتیبات (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"‏CDMA کال کی ترتیبات"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"کالز کریں مع"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"‏SIP کالز کریں مع"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"پہلے پوچھیں"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"کوئی نیٹ ورک دستیاب نہیں"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"ترتیبات"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"اکاؤنٹس منتخب کریں"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"فون اکاؤنٹس"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"صوتی میل"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"صوتی میل (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"اطلاعات"</string>
     <string name="networks" msgid="8873030692174541976">"نیٹ ورک آپریٹرز"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"ہنگامی براڈکاسٹس"</string>
     <string name="call_settings" msgid="6112441768261754562">"کال کی ترتیبات"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"ناقابل رسائی ہونے پر"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"ناقابل رسائی ہونے پر نمبر"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> کو آگے بھیج رہا ہے"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"غیر فعال"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"آف"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"آپ کا کیریئر آپ کا فون ناقابل رسائی ہونے پر کال آگے منتقل کرنے کو غیر فعال کرنے کا تعاون نہیں کرتا ہے۔"</string>
     <string name="updating_title" msgid="6146755386174019046">"کال کی ترتیبات"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"صرف بنیادی صارف ہی کال کی ترتیبات تبدیل کر سکتا ہے۔"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"صرف منتظم صارف ہی کال کی ترتیبات تبدیل کر سکتا ہے۔"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"ترتیبات (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"کال کی ترتیبات کی خرابی"</string>
     <string name="reading_settings" msgid="1920291699287055284">"ترتیبات کو پڑھ رہا ہے…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"کوئی تبدیلیاں نہیں ہوئی تھیں۔"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"صوتی میل سروس کا انتخاب کریں"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"آپ کا کیریئر"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"سیلولر نیٹ ورک کی ترتیبات"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"‏پرانا PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"‏نیا PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"براہ کرم انتظار کریں۔"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"‏نیا PIN بہت ہی مختصر ہے۔"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"‏نیا PIN بہت ہی طویل ہے۔"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"‏نیا PIN بہت ہی کمزور ہے۔ مضبوط پاسورڈ میں مسلسل ترتیب یا دہرے عدد نہیں ہونے چاہئیں۔"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"‏پرانا PIN مماثل نہیں ہے۔"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"‏نئے PIN میں غلط کریکٹرز شامل ہیں۔"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"‏PIN تبدیل کرنے سے قاصر"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"پیغام کی غیر تعاون یافتہ قسم، سننے کیلئے <xliff:g id="NUMBER">%s</xliff:g> پر کال کریں۔"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"موبائل نیٹ ورک کی ترتیبات"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"موبائل نیٹ ورک"</string>
     <string name="label_available" msgid="1181658289009300430">"دستیاب نیٹ ورکس"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"تلاش کر رہا ہے…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"کوئی نیٹ ورکس نہیں ملے۔"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"نیٹ ورک پر رجسٹرڈ ہوگیا۔"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"ایک نیٹ ورک آپریٹر منتخب کریں"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"سبھی دستیاب نیٹ ورکس تلاش کریں"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"خود کار طور پر منتخب کریں"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"ترجیحی نیٹ خود کار طور پر منتخب کریں"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"نیٹ ورک خودکار طور پر منتخب کریں"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"نیٹ ورک"</string>
     <string name="register_automatically" msgid="6017849844573519637">"خود کار رجسٹریشن…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"ترجیحی نیٹ ورک کی قسم"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"نیٹ ورک آپریٹنگ طرز تبدیل کریں"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"‏صرف GSM"</item>
     <item msgid="3817924849415716259">"‏GSM/WCDMA ترجیحی"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"کال کی جا رہی ہے"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"نیٹ ورک"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"‏Enhanced 4G LTE وضع"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"اعلی درجے کی کالنگ"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"‏صوتی اور دیگر مواصلات کو بہتر بنانے کیلئے LTE سروسز استعمال کریں (تجویز کردہ)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"ڈیٹا فعال ہوگیا"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"ڈیٹا کے استعمال کی اجازت دیں"</string>
-    <string name="roaming" msgid="8871412572928323707">"ڈیٹا رومنگ"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"توجہ دیں"</string>
+    <string name="roaming" msgid="7894878421600247140">"رومنگ"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"رومنگ کے وقت ڈیٹا سروسز سے مربوط ہوں"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"رومنگ کے وقت ڈیٹا سروسز سے مربوط ہوں"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"آپ ڈیٹا کی حالت رسائی سے محروم ہوگئے کیونکہ آپ نے ڈیٹا رومنگ آف ہونے کے ساتھ اپنا ہوم نیٹ ورک چھوڑ دیا۔"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"آپ پر خاطر خواہ چارجز لگ سکتے ہیں۔"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"ڈیٹا رومنگ کی اجازت دیں؟"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"ڈیٹا کا استعمال"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> موبائل ڈیٹا جو <xliff:g id="ID_2">%2$s</xliff:g> کے درمیان استعمال ہوا"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"کیریئر"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"موبائل ڈیٹا"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"موبائل نیٹ ورک استعمال کرکے ڈیٹا تک رسائی حاصل کریں"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"‏Wi-Fi کالنگ"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"کیرئیر ویڈیو کالنگ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"‏GSM/UMTS کے اختیارات"</string>
     <string name="cdma_options" msgid="4016822858172249884">"‏CDMA کے اختیارات"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"ڈیٹا کا استعمال"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"‏<xliff:g id="USED_0">%1$s</xliff:g> زیادہ سے زیادہ سے تجاوز کرگیا\nڈیٹا کی شرح گھٹ کر <xliff:g id="USED_1">%2$d</xliff:g> Kb/s ہوگئی"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ از دور ختم ہوگیا\nاگلی مدت <xliff:g id="USED_1">%2$d</xliff:g> دنوں میں شروع ہو گی (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"‏اگر ڈیٹا کے استعمال کی حد سے تجاوز ہو جاتا ہے تو ڈیٹا شرح گھٹ کر <xliff:g id="USED">%1$d</xliff:g> Kb/s ہوجاتی ہے"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"آپ کے کیریئر کے سیلولر نیٹ ورک کے ڈیٹا کے استعمال کی پالیسی کے بارے میں مزید معلومات"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"آپ کے کیریئر کے موبائل نیٹ ورک کے ڈیٹا کے استعمال کی پالیسی کے بارے میں مزید معلومات"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"‏سیل نشریہ SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"‏سیل نشریہ SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"‏سیل نشریہ SMS فعال ہوگیا"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"رابطہ شامل کریں"</string>
     <string name="menu_edit" msgid="7143003705504672374">"رابطہ میں ترمیم کریں"</string>
     <string name="menu_delete" msgid="3977150783449642851">"رابطہ حذف کریں"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"رابطہ ڈائل کریں"</string>
     <string name="get_pin2" msgid="8204677063922225311">"‏PIN2 ٹائپ کریں"</string>
     <string name="name" msgid="7329028332786872378">"نام"</string>
     <string name="number" msgid="7905950798349903858">"نمبر"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"فکسڈ ڈائلنگ نمبر حذف کر رہا ہے…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"فکسڈ ڈائلنگ نمبر حذف ہوگیا۔"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"‏FDN اپ ڈیٹ نہیں ہوا تھا کیونکہ آپ نے ایک غلط PIN ٹائپ کر دیا۔"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"‏FDN اپ ڈیٹ نہیں ہوا تھا کیونکہ نمبر 20 ہندسوں سے زائد نہیں ہوسکتا۔"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"‏FDN اپ ڈیٹ نہیں ہوا کیونکہ نمبر خالی ہے یا 20 ہندسوں سے زائد ہے۔"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"‏FDN اپ ڈیٹ نہیں ہوا تھا کیونکہ PIN2 غلط تھا یا فون نمبر مسترد کر دیا گیا تھا۔"</string>
     <string name="fdn_failed" msgid="540018079008319747">"‏FDN کا عمل ناکام ہوگیا۔"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"‏SIM کارڈ سے پڑھ رہا ہے…"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"صوتی میل نمبر نامعلوم ہے"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"کوئی سروس نہیں ہے"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"منتخب کردہ نیٹ ورک (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) دستیاب نہیں ہے"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"کال کرنے کیل‏ئے موبائل نیٹ ورک آن کریں، ہوائی جہاز موڈ یا بیٹری سیور موڈ آف کریں۔"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں۔"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"کال کرنے کیلئے ہوائی جہاز وضع آف کریں یا کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"غیر ہنگامی کال کرنے کیلئے ہنگامی کال بیک موڈ سے اخراج کریں۔"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"نیٹ ورک پر رجسٹرڈ نہیں ہے۔"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"سیلولر نیٹ ورک دستیاب نہیں ہے۔"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"سیلولر نیٹ ورک دستیاب نہیں ہے۔ کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"موبائل نیٹ ورک دستیاب نہیں ہے۔"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"موبائل نیٹ ورک دستیاب نہیں ہے۔ کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"کال کرنے کیلئے، ایک درست نمبر درج کریں۔"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"کال نہیں کر سکتے۔"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"‏MMI ترتیب شروع ہو رہی ہے…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"کال ناکام ہوگئی۔"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"اس وقت کال شامل نہیں ہو سکتی۔"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"سروس تعاون یافتہ نہیں ہے"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"کالز سوئچ نہیں کر سکتے۔"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"کال کو الگ نہیں کر سکتے۔"</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"کانفرنس کالیں کرنے سے قاصر ہے۔"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"کال مسترد نہیں کی جا سکتی۔"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"کال(ز) ریلیز نہیں کر سکتے۔"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"کالز کو ہولڈ نہیں کیا جا سکتا۔"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"‏کال کرنے کیلئے Wi-Fi کالنگ فعال کریں۔"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"ہنگامی کال"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"ریڈیو آن کر رہا ہے…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"کوئی سروس نہیں ہے۔ دوبارہ کوشش کی جا رہی ہے…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"ہنگامی کال کے دوران ہوائی جہاز موڈ میں داخل نہیں ہو سکتا۔"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"کال نہیں کی جا سکتی۔ <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> ایک ہنگامی نمبر نہیں ہے۔"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"کال نہیں کی جا سکتی۔ ایک ہنگامی نمبر ڈائل کریں۔"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"ڈائل کرنے کیلئے کی بورڈ استعمال کریں"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"سبھی کو درآمد کریں"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"‏SIM کے رابطے درآمد کر رہا ہے"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"رابطوں سے درآمد کریں"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"درآمد کردہ رابطہ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"رابطہ درآمد کرنے میں ناکام"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"سماعتی آلات"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"سماعتی آلہ کی ہم آہنگی آن کریں"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"ہنگامی کال بیک طرز میں داخل ہو گیا"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"ہنگامی کال بیک طرز"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"ڈیٹا کنکشن غیر فعال ہوگیا"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> منٹ تک کوئی ڈیٹا کنکشن نہیں ہے</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> منٹ تک کوئی ڈیٹا کنکشن نہیں ہے</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> تک کوئی ڈیٹا کنکشن نہیں"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">فون <xliff:g id="COUNT_1">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کسی بھی ایپلیکیشنز کا استعمال نہیں کیا جا سکتا ہے۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
       <item quantity="one">فون <xliff:g id="COUNT_0">%s</xliff:g> منٹ تک ہنگامی کال بیک وضع میں رہے گا۔ اس وضع میں رہتے ہوئے ڈیٹا کنکشن کا استعمال کرنے والی کسی بھی ایپس کا استعمال نہیں کیا جا سکتا ہے۔ کیا آپ ابھی باہر نکلنا چاہتے ہیں؟</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"رابطہ منتخب کریں"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"صوتی کالنگ تعاون یافتہ نہیں ہے"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"ڈائل کریں"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"وائبریٹ"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"وائبریٹ"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"بصری صوتی میل"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"آواز"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"‏PIN سیٹ کریں"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"‏PIN تبدیل کریں"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"رنگ ٹون اور وائبریٹ"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"‏پہلے سے شامل SIM کارڈز"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"ویڈیو کالنگ کو آن کریں"</string>
@@ -544,10 +573,25 @@
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"ہنگامی کالز"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"صرف ہنگامی کالنگ"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"‏SIM کارڈ، سلاٹ: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
-    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Accessibility"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"‏آنے والی Wi-Fi کال"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"ایکسیسبیلٹی"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"‏Wi-Fi کال منجانب"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"‏Wi-Fi کال"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"کھولنے کیلئے دوبارہ ٹچ کریں"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"کھولنے کیلئے دوبارہ تھپتھپائیں"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"پیغام کو ڈیکوڈ کرتے وقت ایک خرابی پیش آ گئی۔"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"‏ایک SIM کارڈ نے آپ کی سروس فعال کر دی ہے اور آپ کے فون کی رومنگ اہلیتیں اپ ڈیٹ کر دی ہیں۔"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"بہت زیادہ فعال کالیں ہیں۔ براہ کرم نئی کال کرنے سے پہلے موجودہ کالوں کو ضم کریں یا ختم کریں۔"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"‏منسلک کرنے سے قاصر، براہ کرم ایک درست SIM کارڈ داخل کریں۔"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"‏Wi-Fi کنکشن کھو گیا۔ کال ختم ہو گئی۔"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"‏صوتی میل PIN تبدیل کریں"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"جاری رکھیں"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"منسوخ کریں"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"ٹھیک ہے"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"‏اپنی پرانی PIN کی توثیق کریں"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"‏جاری رکھنے کیلئے اپنی صوتی میل PIN داخل کریں۔"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"‏ایک نئی PIN سیٹ کریں"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"‏PIN <xliff:g id="MAX">%2$d</xliff:g>-<xliff:g id="MIN">%1$d</xliff:g> اعداد کی ہونی چاہئیے۔"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"‏اپنے PIN کی توثیق کریں"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"‏PINs مماثل نہیں ہیں"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"‏صوتی میل PIN اپ ڈیٹ ہو گئی"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"‏PIN سیٹ کرنے سے قاصر"</string>
 </resources>
diff --git a/res/values-uz-rUZ/arrays.xml b/res/values-uz/arrays.xml
similarity index 100%
rename from res/values-uz-rUZ/arrays.xml
rename to res/values-uz/arrays.xml
diff --git a/res/values-uz/config.xml b/res/values-uz/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-uz/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz/strings.xml
similarity index 82%
rename from res/values-uz-rUZ/strings.xml
rename to res/values-uz/strings.xml
index d72c06b..0b19358 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz/strings.xml
@@ -16,13 +16,13 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Mobil internet"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobil internet"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon – xizmatlar"</string>
-    <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Favqulodda tergich"</string>
+    <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Favqulodda chaqiruv"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
     <string name="fdnListLabel" msgid="8630418672279521003">"Ruxsat etilgan raqamlar"</string>
     <string name="unknown" msgid="6878797917991465859">"Noma’lum"</string>
-    <string name="private_num" msgid="6713286113000232309">"Shaxsiy raqam"</string>
+    <string name="private_num" msgid="6713286113000232309">"Yashirin raqam"</string>
     <string name="payphone" msgid="4793877574636445118">"Taksofon"</string>
     <string name="onHold" msgid="9035493194749959955">"Kutmoqda"</string>
     <string name="mmiStarted" msgid="6347869857061147003">"MMI kodi ishga tushirildi"</string>
@@ -45,24 +45,26 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Ovozli pochta raqami ko‘rsatilmagan"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM kartada birorta ham ovozli pochta raqami yo‘q."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Raqam qo‘shish"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Ovozli pochta sozlamalarini faqat bosh foydalanuvchi o‘zgartira oladi."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"To‘sib qo‘yilgan SIM kartangiz ochildi. Telefoningiz qulfdan chiqarilmoqda…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM kartani tarmoqdagi qulfidan chiqarish PIN kodi"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Qulfdan chiqarish"</string>
-    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Rad qilish"</string>
+    <string name="sim_ndp_dismiss_text" msgid="1604823375752456947">"Rad etish"</string>
     <string name="requesting_unlock" msgid="6412629401033249351">"Tarmoqni qulfdan chiqarish so‘ralmoqda…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Tarmoqni qulfdan chiqarish so‘rovi muvaffaqiyatli amalga oshmadi."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Tarmoqni qulfdan chiqarish muvaffaqiyatli amalga oshdi."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Ushbu foydalanuvchi uchun mobil tarmoq sozlamalari mavjud emas"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Ushbu foydalanuvchi uchun mobil tarmoq sozlamalari mavjud emas"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM tarmog‘i qo‘ng‘iroq sozlamalari"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM qo‘ng‘iroq sozlamalari (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA qo‘ng‘iroq sozlamalari"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"CDMA qo‘ng‘iroq sozlamalari (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="apn_settings" msgid="9043423184895642077">"Internetga kirish nuqtalari (APN)"</string>
     <string name="settings_label" msgid="3876743539816984008">"Tarmoq sozlamalari"</string>
-    <string name="phone_accounts" msgid="6376603393888116364">"Qo‘ng‘iroq hisoblari"</string>
+    <string name="phone_accounts" msgid="6376603393888116364">"Chaqiruv uchun hisoblar"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Qo‘ng‘iroqlar uchun hisob"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP qo‘ng‘iroqlari uchun hisob"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Avval so‘ralsin"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Birorta tarmoq yo‘q."</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Sozlamalar"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Hisoblarni tanlang"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Telefon hisoblari"</string>
@@ -72,12 +74,13 @@
     <string name="phone_accounts_all_calling_accounts_summary" msgid="8594186415822657011">"Qo‘ng‘iroqlarni amalga oshirish mumkin bo‘lgan hisoblarni tanlang"</string>
     <string name="wifi_calling" msgid="739018212480165598">"Wi-Fi qo‘ng‘iroq"</string>
     <string name="connection_service_default_label" msgid="1498481943805913754">"Ichki o‘rnatilgan ulanish xizmati"</string>
-    <string name="voicemail" msgid="8693759337917898954">"Ovozli xabar"</string>
+    <string name="voicemail" msgid="8693759337917898954">"Ovozli pochta"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ovozli pochta (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Bildirishnomalar"</string>
     <string name="networks" msgid="8873030692174541976">"Tarmoq operatorlari"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Favqulodda tarqatma xabarlar"</string>
-    <string name="call_settings" msgid="6112441768261754562">"Qo‘n‘giroq sozlamalari"</string>
+    <string name="call_settings" msgid="6112441768261754562">"Chaqiruv sozlamalari"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"Qo‘shimcha sozlamalar"</string>
     <string name="additional_gsm_call_settings_with_label" msgid="1385241520708457376">"Qo‘shimcha sozlamalar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="sum_gsm_call_settings" msgid="4076647190996778012">"Qo‘shimcha qo‘ng‘iroq sozlamalari uchun faqat GSM"</string>
@@ -89,37 +92,37 @@
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"Chiquvchi qo‘ng‘iroqlarda raqam ko‘rsatilmasin"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"Raqam chiquvchi qo‘ng‘iroqlarda ko‘rsatilsin"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"Chiquvchi qo‘ng‘iroqlarda telefon raqamimni ko‘rsatish uchun operatorning standart sozlamalaridan foydalanilsin"</string>
-    <string name="labelCW" msgid="6120513814915920200">"Qo‘ng‘iroqni kutish"</string>
-    <string name="sum_cw_enabled" msgid="8083061901633671397">"Suhbat vaqtidagi kiruvchi qo‘ng‘iroqlar haqida xabar qilinsin"</string>
-    <string name="sum_cw_disabled" msgid="3648693907300104575">"Suhbat vaqtidagi kiruvchi qo‘ng‘iroqlar haqida xabar qilinsin"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"Qo‘ng‘iroqni yo‘naltirish sozlamalari"</string>
-    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Qo‘ng‘iroqni yo‘naltirish sozlamalari (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"Qo‘ng‘iroqni yo‘naltirish"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"Har doim yo‘naltirish"</string>
+    <string name="labelCW" msgid="6120513814915920200">"Chaqiruvni kutish"</string>
+    <string name="sum_cw_enabled" msgid="8083061901633671397">"Suhbat vaqtida kiruvchi chaqiruv kelsa, sizga xabar qilinadi"</string>
+    <string name="sum_cw_disabled" msgid="3648693907300104575">"Suhbat vaqtida kiruvchi chaqiruv kelsa, sizga xabar qilinadi"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"Chaqiruvni yo‘naltirish"</string>
+    <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"Chaqiruvni yo‘naltirish (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="labelCF" msgid="2574386948026924737">"Chaqiruvlarni uzatish"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"Har doim uzatish"</string>
     <string name="messageCFU" msgid="3560082430662923687">"Qo‘ng‘iroq har doim ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Barcha qo‘ng‘iroqlar yo‘naltirilmoqda"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"Barcha qo‘ng‘iroqlar <xliff:g id="PHONENUMBER">{0}</xliff:g>ga yo‘naltirilmoqda"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Raqam mavjud emas"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"O‘chiq"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"Band bo‘lsam"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"Agar raqam band bo‘lsa"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"O‘chiq"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Telefoningiz band bo‘lganda qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati tarmoq operatoringizda yo‘q."</string>
-    <string name="labelCFNRy" msgid="1736067178393744351">"Javob bermasam"</string>
+    <string name="labelCFNRy" msgid="1736067178393744351">"Agar javob berilmasa"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"O‘chiq"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Telefoningiz javob bermayotganda qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati operatoringizda yo‘q."</string>
-    <string name="labelCFNRc" msgid="2614827454402079766">"Menga tushib bo‘lmasa"</string>
+    <string name="labelCFNRc" msgid="2614827454402079766">"Agar raqamga tushib bo‘lmasa"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"O‘chiq"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"O‘chiq"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Telefoningiz o‘chiq bo‘lganida qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati tarmoq operatoringizda yo‘q."</string>
-    <string name="updating_title" msgid="6146755386174019046">"Qo‘ng‘iroq sozlamalari"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Faqat asosiy foydalanuvchi qo‘ng‘iroq sozlamalarini o‘zgartirishi mumkin."</string>
+    <string name="updating_title" msgid="6146755386174019046">"Chaqiruv sozlamalari"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Faqat administrator qo‘ng‘iroq sozlamalarini o‘zgartirishi mumkin."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Sozlamalar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"Qo‘ng‘iroq sozlamalarida xato"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"Chaqiruv sozlamalarida xato"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Sozlamalar o‘qilmoqda…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"Sozlamalar yangilanmoqda…"</string>
     <string name="reverting_settings" msgid="4752151682666912828">"Sozlamalar tiklanmoqda…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"O‘zgarishlar qilinmadi."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Ovozli xabar xizmatini tanlash"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Aloqa operatoringiz"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Mobil tarmoq sozlamalari"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Eski PIN kod"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Yangi PIN kod"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Iltimos, kuting."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Yangi PIN kod juda qisqa."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Yangi PIN kod juda uzun."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Yangi PIN kod juda sodda. Ishonchli PIN kodda ketma-ket takrorlanadigan raqamlar bo‘lmasligi lozim."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Eski PIN kod mos kelmayapti."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Yangi PIN kodda yaroqsiz belgilar mavjud."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"PIN kodni o‘zgartirib bo‘lmadi"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Bu xabar turi qo‘llab-quvvatlanmaydi. Uni eshitish uchun <xliff:g id="NUMBER">%s</xliff:g> raqamiga qo‘ng‘iroq qiling."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Uyali tarmoq sozlamalari"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mobil tarmoq"</string>
     <string name="label_available" msgid="1181658289009300430">"Mavjud tarmoqlar"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Qidirilmoqda…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Birorta ham tarmoq topilmadi."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Tarmoqda ro‘yxatdan o‘tgan."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Tarmoq operatorini tanlang"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Barcha mavjud tarmoqlarni qidirish"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Avtomatik tanlash"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Afzal tarmoqni avtomatik tanlash"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Tarmoqni avtomatik tanlash"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Tarmoq"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Avtomatik ro‘yxatdan o‘tish…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Tarmoq turi"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Tarmoq rejimini o‘zgartiring"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Faqat GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA xohishingiz bo‘yicha"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Chaqiruvlar"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Tarmoq"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Kuchaytirilgan 4G LTE rejimi"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Keng imkoniyatli qo‘ng‘iroqlar"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Ovozli va boshqa aloqalarni yaxshilash uchun LTE xizmatlaridan foydalaning"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Internet yoqildi"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Mobil internetdan foydalanishga ruxsat"</string>
-    <string name="roaming" msgid="8871412572928323707">"Internet-rouming"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Diqqat"</string>
+    <string name="roaming" msgid="7894878421600247140">"Rouming"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Rouming vaqtida mobil internetga ulanish"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Rouming vaqtida mobil internetga ulanish"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Internetga ulanish uzildi, chunki uy tarmog‘ingizni rouming internetini o\'chirgan holatda tark etdingiz."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Xarajati ancha yuqori bo‘lishi mumkin."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Internet-roumingga ruxsat berilsinmi?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Trafik sarfi"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g> vaqt oralig‘ida sarflangan mobil trafik: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Aloqa operatori"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> – <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Mobil internet"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Mobil tarmoq orqali internetdan foydalanish"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi chaqiruv"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Operator tarmog‘i orqali video suhbatlar"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS sozlamalari"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA sozlamalari"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Trafik sarfi"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"<xliff:g id="USED_0">%1$s</xliff:g> maksimal darajadan oshib ketdi\nTrafik tezligi <xliff:g id="USED_1">%2$d</xliff:g> Kb/s’ga pasaydi"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ o‘tgan bosqichdan\nKeyingi bosqich <xliff:g id="USED_1">%2$d</xliff:g> kunda boshlanadi (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Agar trafik sarfi cheklovdan oshsa, ma’lumot uzatish tezligi <xliff:g id="USED">%1$d</xliff:g> Kb/s’ga pasayadi"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Aloqa operatoringizning mobil internetidan foydalanish qoidalari haqida batafsil ma’lumot"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Tarmoq operatoringizning uyali tarmoq ma’lumotidan foydalanish siyosati haqida ko‘proq ma’lumot"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"Uyali tarmoqdagi SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"Uyali tarmoqdagi SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Uyali tarmoqdagi SMS yoqilb qo‘yilgan"</string>
@@ -336,25 +362,26 @@
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Ruxsat etilgan raqamlar ro‘yxati (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDNni faollashtirish"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Ruxsat etilgan raqamlar yoqilgan"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Ruxsat etilgan raqamlar o‘chirib qo‘yilgan"</string>
-    <string name="enable_fdn" msgid="3740191529180493851">"Ruxsat etilgan raqamlarni yoqish"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Ruxsat etilgan raqamlar cheklovi yoqilmagan"</string>
+    <string name="enable_fdn" msgid="3740191529180493851">"Ruxsat etilgan raqamlar cheklovini yoqish"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"FDNni o‘chirib qo‘yish"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"PIN2-kodni o‘zgartirish"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"PIN2 kodni o‘zgartirish"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"FDNni o‘chirib qo‘yish"</string>
-    <string name="disable_fdn_ok" msgid="5727046928930740173">"Ruxsat etilgan raqamlarni yoqish"</string>
+    <string name="disable_fdn_ok" msgid="5727046928930740173">"Ruxsat etilgan raqamlar cheklovini yoqish"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"Ruxsat etilgan raqamlarni boshqarish"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Ruxsat etilgan raqamlar ro‘yxatiga kirish uchun PIN-kodni almashtiring"</string>
-    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Telefon raqamlari ro‘yxatini boshqarish"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"Ruxsat etilgan raqamlar ro‘yxatiga kirishda ishlatiladigan PIN kodni o‘zgartirish"</string>
+    <string name="sum_fdn_manage_list" msgid="8431088265332628316">"Ruxsat etilgan raqamlar ro‘yxatini boshqarish"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"Shaxsiy ovoz"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"Maxfiylikni kuchaytirish rejimini yoqish"</string>
-    <string name="tty_mode_option_title" msgid="9033098925144434669">"TTY rejimi"</string>
+    <string name="tty_mode_option_title" msgid="9033098925144434669">"Teletayp rejimi"</string>
     <string name="tty_mode_option_summary" msgid="1073835131534808732">"TTY rejimini o‘rnatish"</string>
     <string name="auto_retry_mode_title" msgid="4073265511427813322">"Avto-qayta urinish"</string>
     <string name="auto_retry_mode_summary" msgid="4973886004067532288">"Avto-qayta urinish rejimini yoqish"</string>
     <string name="tty_mode_not_allowed_video_call" msgid="3795846787901909176">"Video qo‘ng‘iroq davomida TTY rejimini o‘zgartirish taqiqlangan"</string>
-    <string name="menu_add" msgid="1882023737425114762">"Kontakt qo‘shish"</string>
+    <string name="menu_add" msgid="1882023737425114762">"Kontakt saqlash"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Kontaktni tahrirlash"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Kontaktni o‘chirish"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Kontaktga qo‘ng‘iroq qilish"</string>
     <string name="get_pin2" msgid="8204677063922225311">"PIN2 kodni kiriting"</string>
     <string name="name" msgid="7329028332786872378">"Nomi"</string>
     <string name="number" msgid="7905950798349903858">"Raqam"</string>
@@ -369,15 +396,15 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Ruxsat berilgan raqamlar o‘chirilmoqda…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Ruxsat berilgan raqamlar o‘chirildi."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN yangilanmadi, chunki siz PIN-kodni noto‘g‘ri kiritdingiz."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN yangilanmadi, chunki raqam 20 tadan oshmasligi kerak."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"Ruxsat etilgan raqam bo‘sh yoki o‘rnatilgan 20 xonali cheklovdan oshganligi uchun yangilanmadi."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN yangilanmadi. PIN2 kodi xato yoki telefon raqami rad qilingan."</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN jarayoni amalga oshmadi."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"SIM-kartadan o‘qilmoqda…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"SIM-kartada hech qanday kontakt yo‘q."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"SIM kartada hech qanday kontakt yo‘q."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Import u-n kontaktlarni tanlang"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"SIM kartadan kontaktlarni import qilish uchun parvoz rejimini o‘chiring"</string>
     <string name="enable_pin" msgid="5422767284133234860">"SIM karta uchun PIN-kod so‘rovini yoqish/o‘chirish"</string>
-    <string name="change_pin" msgid="9174186126330785343">"SIM-kartaning PIN-kodini o‘zgartirish"</string>
+    <string name="change_pin" msgid="9174186126330785343">"SIM karta PIN kodini almashtirish"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"SIM karta PIN kodi:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"Yangi PIN-kod"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Yangi PIN-kod"</string>
@@ -412,11 +439,11 @@
     <string name="pin2_error_exception" msgid="1088689322248996699">"Tarmoq yoki SIM kartada xato"</string>
     <string name="doneButton" msgid="2859593360997984240">"Tayyor"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Ovozli pochta raqami"</string>
-    <string name="card_title_dialing" msgid="5769417478498348054">"Raqam terilmoqda"</string>
+    <string name="card_title_dialing" msgid="5769417478498348054">"Chaqiruv"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"Qayta terilmoqda"</string>
     <string name="card_title_conf_call" msgid="1162980346189744501">"Konferensiya qo‘ng‘irog‘i"</string>
-    <string name="card_title_incoming_call" msgid="7364539451234646909">"Kiruvchi qo‘ng‘iroq"</string>
-    <string name="card_title_call_ended" msgid="5544730338889702298">"Qo‘ng‘iroq tugadi"</string>
+    <string name="card_title_incoming_call" msgid="7364539451234646909">"Kiruvchi chaqiruv"</string>
+    <string name="card_title_call_ended" msgid="5544730338889702298">"Chaqiruv tugadi"</string>
     <string name="card_title_on_hold" msgid="821463117892339942">"Kutish holatida"</string>
     <string name="card_title_hanging_up" msgid="3999101620995182450">"Suhbat tugatilmoqda"</string>
     <string name="card_title_in_call" msgid="6346543933068225205">"Qo‘ng‘iroqda"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Ovozli pochta raqami noma’lum"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Xizmat mavjud emas"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Tanlangan tarmoq (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) mavjud emas"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Qo‘ng‘iroq qilish uchun mobil tarmoqni yoqing, parvoz yoki quvvat tejash rejimini o‘chirib qo‘ying."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Qo‘ng‘iroq qilish uchun parvoz rejimini o‘chiring yoki simsiz tarmoqqa ulaning."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Odatiy qo‘ng‘iroq qilish uchun favqulodda qayta qo‘ng‘iroq rejimidan chiqing."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Tarmoqda ro‘yxatdan o‘tmagan."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Mobil tarmoq mavjud emas."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Mobil tarmoq mavjud emas. Qo‘ng‘iroq qilish uchun simsiz tarmoqqa ulaning."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Uyali tarmoq mavjud emas."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Mobil tarmoqdan foydalanib bo‘lmaydi. Qo‘ng‘iroq qilish uchun Wi-Fi tarmog‘iga ulaning."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Qo‘ng‘iroq qilib bo‘lmadi."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"MMI tartibi ishga tushmoqda..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Chaqiruv amalga oshmadi."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Hozirgi vaqtda qo‘ng‘iroq qo‘shib bo‘lmaydi."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Bu xizmat qo‘llab-quvvatlanmaydi"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Qo‘ng‘iroqlarni almashtirib bo‘lmadi."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Qo‘ng‘iroqni ajratib bo‘lmadi."</string>
@@ -442,18 +470,21 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Konferensiya qo‘ng‘iroqlarini amalga oshirib bo‘lmaydi."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Qo‘ng‘iroqni rad qilib bo‘lmadi."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Qo‘ng‘iroq(lar)ni chiqarib bo‘lmadi."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Qo‘ng‘iroqlarni ushlab turib bo‘lmadi."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Qo‘ng‘iroq qilish uchun simsiz tarmoqqa ulaning"</string>
-    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Favqulodda qo‘ng‘iroq"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Qo‘ng‘iroq qilish uchun Wi-Fi qo‘ng‘iroqlar funksiyasini yoqing."</string>
+    <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Favqulodda chaqiruv"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Radio yoqilmoqda…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Aloqa yo‘q. Qayta urinilmoqda…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Favqulodda qo‘ng‘iroq paytida parvoz rejimiga o‘tkazib bo‘lmaydi."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Qo‘ng‘iroq qilib bo‘lmadi. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> favqulodda raqam emas."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Qo‘ng‘iroq qilib bo‘lmadi. Favqulodda raqamga tering."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Terish uchun tugmatagdan foydalaning"</string>
     <string name="onscreenHoldText" msgid="2285258239691145872">"Ushlab turish"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"Tugatish"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"Terish paneli"</string>
-    <string name="onscreenMuteText" msgid="5011369181754261374">"Ovozni o‘chirish"</string>
-    <string name="onscreenAddCallText" msgid="5140385634712287403">"Qo‘ng‘iroq qo‘shish"</string>
+    <string name="onscreenMuteText" msgid="5011369181754261374">"Ovozsiz qilish"</string>
+    <string name="onscreenAddCallText" msgid="5140385634712287403">"Chaqiruv qo‘shish"</string>
     <string name="onscreenMergeCallsText" msgid="6640195098064538950">"Qo‘ng‘iroqlarni birlashtirish"</string>
     <string name="onscreenSwapCallsText" msgid="1602990689244030047">"Almashish"</string>
     <string name="onscreenManageCallsText" msgid="5473231160123254154">"Qo‘ng‘iroqlarni boshqarish"</string>
@@ -464,13 +495,15 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Barchasini import qilish"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"SIM karta kontaktlarini import qilish"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Kontaktlardan import qilish"</string>
-    <string name="hac_mode_title" msgid="8740268574688743289">"Eshitish qurilmalari"</string>
-    <string name="hac_mode_summary" msgid="6833851160514929341">"Eshitish qurilmalari bilan ishlash xusisiyatini yoqish"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Kontakt import qilindi"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Kontaktni import qilib bo‘lmadi"</string>
+    <string name="hac_mode_title" msgid="8740268574688743289">"Eshitish apparatlari"</string>
+    <string name="hac_mode_summary" msgid="6833851160514929341">"Eshitish apparatlari bilan ishlash imkoniyatini yoqish"</string>
   <string-array name="tty_mode_entries">
-    <item msgid="512950011423868021">"TTY o‘chirilgan"</item>
-    <item msgid="3971695875449640648">"TTY to‘liq"</item>
-    <item msgid="1937509904407445684">"TTY HCO"</item>
-    <item msgid="5644925873488772224">"TTY VCO"</item>
+    <item msgid="512950011423868021">"Teletayp o‘chiq"</item>
+    <item msgid="3971695875449640648">"To‘liq funksiyali teletayp"</item>
+    <item msgid="1937509904407445684">"Suhbatdoshni eshitish imkoniyati bor teletayp"</item>
+    <item msgid="5644925873488772224">"Ovozni uzatish imkoniyati bor teletayp"</item>
   </string-array>
     <string name="dtmf_tones_title" msgid="5163153771291340803">"DTMF tovushlari"</string>
     <string name="dtmf_tones_summary" msgid="3351820372864020331">"DTMF tovushlari uzunligini o‘rnatish"</string>
@@ -499,15 +532,12 @@
     <string name="ota_spc_failure" msgid="3909983542575030796">"SPC XATOLARI KO‘PAYIB KETDI"</string>
     <string name="ota_call_end" msgid="4537279738134612388">"Orqaga"</string>
     <string name="ota_try_again" msgid="7685477206465902290">"Yana urinib ko‘ring"</string>
-    <string name="ota_next" msgid="3904945374358235910">"Keyingi"</string>
+    <string name="ota_next" msgid="3904945374358235910">"Keyingisi"</string>
     <string name="ecm_exit_dialog" msgid="4448531867763097533">"EcmExitDialog"</string>
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Favqulodda teskari qo‘ng‘iroq rejimi kiritildi"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Favqulodda teskari qo‘ng‘iroq rejimi"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Internetga ulanish o‘chirildi"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> daqiqa davomida internetga ulanib bo‘lmaydi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> daqiqa davomida internetga ulanib bo‘lmaydi</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> gacha internetga ulanib bo‘lmaydi"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Telefon <xliff:g id="COUNT_1">%s</xliff:g> daqiqa davomida Favqulodda teskari qo‘ng‘iroq rejimida bo‘ladi. Ushbu rejimda internet bilan ishlaydigan hech qanday ilovadan foydalanib bo‘lmaydi. Bu rejimdan chiqishni xohlaysizmi?</item>
       <item quantity="one">Telefon <xliff:g id="COUNT_0">%s</xliff:g> daqiqa davomida Favqulodda teskari qo‘ng‘iroq rejimida bo‘ladi. Ushbu rejimda internet bilan ishlaydigan hech qanday ilovadan foydalanib bo‘lmaydi. Bu rejimdan chiqishni xohlaysizmi?</item>
@@ -520,10 +550,10 @@
     <string name="progress_dialog_exiting_ecm" msgid="4835734101617817074">"Favqulodda teskari qo‘ng‘iroq rejimidan chiqilmoqda"</string>
     <string name="alert_dialog_yes" msgid="6674268047820703974">"Ha"</string>
     <string name="alert_dialog_no" msgid="1476091437797628703">"Yo‘q"</string>
-    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Rad qilish"</string>
+    <string name="alert_dialog_dismiss" msgid="2491494287075907171">"Rad etish"</string>
     <string name="voicemail_provider" msgid="5135942703327136909">"Xizmat"</string>
     <string name="voicemail_settings" msgid="72448049107749316">"Sozlash"</string>
-    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Ko‘rsatilmagan&gt;"</string>
+    <string name="voicemail_number_not_set" msgid="6724904736891087856">"&lt;Kiritilmagan&gt;"</string>
     <string name="other_settings" msgid="3672912580359716394">"Boshqa qo‘ng‘iroq sozlamalari"</string>
     <string name="calling_via_template" msgid="4839419581866928142">"<xliff:g id="PROVIDER_NAME">%s</xliff:g> orqali qo‘ng‘iroq"</string>
     <string name="contactPhoto" msgid="4713193418046639466">"kontakt surati"</string>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"kontaktni tanlash"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Ovozli qo‘ng‘iroq ishlamaydi"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"terish"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Tebranish"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Tebratish"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Vizual ovozli pochta"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Ovoz"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"PIN kodni o‘rnatish"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"PIN kodni o‘zgartirish"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Qo‘ng‘iroq ohangi &amp; tebranish"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ichki o‘rnatilgan SIM kartalar"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Video qo\'ng\'iroqni yoqib qo\'yish"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Faqat favqulodda qo‘ng‘iroqlar"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM karta, teshik: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Maxsus imkoniyatlar"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Kiruvchi Wi-Fi qo‘ng‘irog‘i"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi orqali qo‘ng‘iroq:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi qo‘ng‘irog‘i"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Ochish uchun yana bosing"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Ochish uchun yana bosing"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Xabarni kodsizlashda xatolik yuz berdi."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Telefoningizda rouming xizmati sozlangan va SIM karta faollashtirilgan."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Hozir bir nechta chaqiruv amalda. Boshqa abonentga telefon qilishdan avval amaldagi chaqiruvlarni tugating yoki ularni konferens-aloqaga birlashtiring."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ulanishda xato. Mos SIM kartani soling."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi tarmog‘iga ulanish uzildi va qo‘ng‘iroq tugatildi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Ovozli pochta PIN kodini o‘zgartirish"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Davom etish"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Bekor qilish"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Eski PIN kodni tasdiqlang"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Davom etish uchun ovozli pochta PIN kodini kiriting."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Yangi PIN kod o‘rnatish"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN kod <xliff:g id="MIN">%1$d</xliff:g> – <xliff:g id="MAX">%2$d</xliff:g> raqamdan iborat bo‘lishi lozim."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"PIN kodni tasdiqlang"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN kodlar bir-biriga mos kelmadi"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Ovozli pochta PIN kodi yangilandi"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"PIN kodni o‘rnatib bo‘lmadi"</string>
 </resources>
diff --git a/res/values-vi/config.xml b/res/values-vi/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-vi/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index ebceefd..142efcf 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Dữ liệu di động"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dữ liệu di động"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Dịch vụ điện thoại"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Trình quay số Khẩn cấp"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Điện thoại"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Thiếu số thư thoại"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Không có số thư thoại nào được lưu trữ trên thẻ SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Thêm số điện thoại"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Chỉ người dùng chính mới có thể sửa đổi Cài đặt thư thoại."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Thẻ SIM của bạn đã được bỏ chặn. Điện thoại của bạn đang mở khóa…"</string>
     <string name="label_ndp" msgid="780479633159517250">"Mã PIM mở khóa mạng SIM"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Mở khóa"</string>
@@ -52,17 +53,18 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Đang yêu cầu mở khóa mạng..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Yêu cầu mở khóa mạng không thành công."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Mở khóa mạng thành công."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Không có cài đặt mạng di động cho người dùng này"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Cài đặt mạng di động không khả dụng cho người dùng này"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Cài đặt cuộc gọi GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Cài đặt cuộc gọi GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Cài đặt cuộc gọi CDMA"</string>
     <string name="labelCdmaMore_with_label" msgid="6333588719319970399">"Cài đặt cuộc gọi CDMA (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="apn_settings" msgid="9043423184895642077">"Tên Điểm Truy cập"</string>
+    <string name="apn_settings" msgid="9043423184895642077">"Tên điểm truy cập"</string>
     <string name="settings_label" msgid="3876743539816984008">"Cài đặt mạng"</string>
     <string name="phone_accounts" msgid="6376603393888116364">"Tài khoản gọi"</string>
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Thực hiện cuộc gọi bằng"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Thực hiện cuộc gọi SIP bằng"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Hỏi trước"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Không có mạng"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Cài đặt"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Chọn tài khoản"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Tài khoản điện thoại"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Thư thoại"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Thư thoại (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"Thư thoại:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Thông báo"</string>
     <string name="networks" msgid="8873030692174541976">"Nhà cung cấp dịch vụ mạng"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Phát sóng trong tình huống khẩn cấp"</string>
     <string name="call_settings" msgid="6112441768261754562">"Cài đặt cuộc gọi"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Khi không liên lạc được"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Số khi không liên lạc được"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Chuyển tiếp tới <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Đã tắt"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Tắt"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Nhà cung cấp dịch vụ của bạn không hỗ trợ vô hiệu hóa chuyển tiếp cuộc gọi khi điện thoại của bạn không thể truy cập được."</string>
     <string name="updating_title" msgid="6146755386174019046">"Cài đặt cuộc gọi"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Chỉ người dùng chính mới có thể thay đổi cài đặt cuộc gọi."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Chỉ người dùng quản trị mới có thể thay đổi cài đặt cuộc gọi."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Cài đặt (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Lỗi cài đặt cuộc gọi"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Đang đọc cài đặt…"</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Không thay đổi nào được thực hiện."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Chọn dịch vụ thư thoại"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Nhà cung cấp dịch vụ của bạn"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Cài đặt mạng di động"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"Mã PIN cũ"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"Mã PIN mới"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Vui lòng đợi."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"Mã PIN mới quá ngắn."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"Mã PIN mới quá dài."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"Mã PIN mới quá yếu. Một mật khẩu mạnh không nên có các chữ số lặp lại hoặc chuỗi liên tiếp."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"Mã PIN cũ không khớp."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"Mã PIN mới chứa các ký tự không hợp lệ."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Không thể thay đổi mã PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Loại tin nhắn không được hỗ trợ, hãy gọi số <xliff:g id="NUMBER">%s</xliff:g> để nghe."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Cài đặt mạng di động"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Mạng di động"</string>
     <string name="label_available" msgid="1181658289009300430">"Mạng khả dụng"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Đang tìm kiếm…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Không tìm thấy mạng nào."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Đã đăng ký trên mạng."</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Chọn nhà cung cấp dịch vụ mạng"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Tìm kiếm tất cả mạng khả dụng"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Tự động chọn"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Tự động chọn mạng ưa thích"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Tự động chọn mạng"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Mạng"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Đăng ký tự động..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Loại mạng ưa thích"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Thay đổi chế độ hoạt động của mạng"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"Chỉ GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA được ưa thích"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Đang gọi"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Mạng"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Chế độ 4G LTE tăng cường"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Tính năng gọi nâng cao"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Sử dụng dịch vụ LTE để cải tiến tính năng thoại và các phương thức giao tiếp khác (khuyến nghị)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Đã bật dữ liệu"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Cho phép sử dụng dữ liệu"</string>
-    <string name="roaming" msgid="8871412572928323707">"Chuyển vùng dữ liệu"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Chú ý"</string>
+    <string name="roaming" msgid="7894878421600247140">"Chuyển vùng"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Kết nối với dịch vụ dữ liệu khi chuyển vùng"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Kết nối với dịch vụ dữ liệu khi chuyển vùng"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Bạn đã mất kết nối dữ liệu vì bạn đã tắt chuyển vùng dữ liệu của mạng gia đình của mình."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Bạn có thể phải chịu các khoản phí đáng kể."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Cho phép chuyển vùng dữ liệu?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Mức sử dụng dữ liệu"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"Đã sử dụng <xliff:g id="ID_1">%1$s</xliff:g> dữ liệu di động trong khoảng thời gian từ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Nhà cung cấp dịch vụ"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Dữ liệu di động"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Truy cập dữ liệu bằng mạng di động"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Gọi qua Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Tính năng gọi điện video của nhà cung cấp dịch vụ"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Tùy chọn GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Tùy chọn CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Sử dụng dữ liệu"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"Đã vượt quá tối đa <xliff:g id="USED_0">%1$s</xliff:g>\nTốc độ dữ liệu bị giảm xuống <xliff:g id="USED_1">%2$d</xliff:g> Kb/giây"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"<xliff:g id="USED_0">%1$d</xliff:g>٪ của chu kỳ đã qua\nThời gian tiếp theo sẽ bắt đầu trong <xliff:g id="USED_1">%2$d</xliff:g> ngày (<xliff:g id="USED_2">%3$s</xliff:g>)"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Tốc độ dữ liệu bị giảm xuống <xliff:g id="USED">%1$d</xliff:g> Kb/s nếu vượt quá giới hạn sử dụng dữ liệu"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Thông tin thêm về chính sách sử dụng dữ liệu mạng di động của nhà cung cấp dịch vụ của bạn"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Thêm thông tin về chính sách sử dụng dữ liệu mạng dành cho điện thoại di động của nhà cung cấp dịch vụ của bạn"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"SMS Phát trên Di động"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"SMS Phát trên Di động"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"Đã bật SMS Phát trên Di động"</string>
@@ -330,13 +356,13 @@
     <string name="cdma_activate_device" msgid="3793805892364814518">"Kích hoạt thiết bị"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"Thiết lập dịch vụ dữ liệu"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"Cài đặt nhà cung cấp dịch vụ"</string>
-    <string name="fdn" msgid="7878832555095183202">"Số Quay Định sẵn"</string>
+    <string name="fdn" msgid="7878832555095183202">"Số gọi định sẵn"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"Số gọi định sẵn (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"Danh sách FDN"</string>
     <string name="fdn_list_with_label" msgid="7437232552210469217">"Danh sách FDN (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"Kích hoạt FDN"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"Số Quay số Định sẵn đã được bật"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"Số Quay Định sẵn bị vô hiệu hóa"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"Số gọi định sẵn bị vô hiệu hóa"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"Bật FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"Vô hiệu hóa FDN"</string>
     <string name="change_pin2" msgid="2153563695382176676">"Thay đổi mã PIN2"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Thêm liên hệ"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Chỉnh sửa liên hệ"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Xóa liên hệ"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Quay số liên hệ"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Nhập PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Tên"</string>
     <string name="number" msgid="7905950798349903858">"Số"</string>
@@ -369,11 +396,11 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Đang xóa số quay định sẵn…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Đã thêm số quay định sẵn."</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"FDN không được cập nhật do bạn đã nhập PIN không chính xác."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"FDN chưa được cập nhật do số đã vượt quá 20 chữ số."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"FDN chưa được cập nhật do số trống hoặc vượt quá 20 chữ số."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN không được cập nhật. Mã PIN2 không đúng hoặc số điện thoại đã bị từ chối."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Thao tác FDN không thành công."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Đang đọc từ thẻ SIM…"</string>
-    <string name="simContacts_empty" msgid="5270660846489561932">"Không có danh bạ trên thẻ SIM của bạn."</string>
+    <string name="simContacts_empty" msgid="5270660846489561932">"Không có liên hệ nào trên thẻ SIM của bạn."</string>
     <string name="simContacts_title" msgid="1861472842524839921">"Chọn danh bạ để nhập"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Tắt chế độ trên máy bay để nhập danh bạ từ thẻ SIM."</string>
     <string name="enable_pin" msgid="5422767284133234860">"Bật/vô hiệu hóa mã PIN của SIM"</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Số thư thoại không xác định"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Không có dịch vụ nào"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Mạng được chọn (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) không khả dụng"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Tắt chế độ trên máy bay để thực hiện cuộc gọi."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Bật mạng di động, tắt chế độ trên máy bay hoặc tắt chế độ trình tiết kiệm pin để thực hiện cuộc gọi."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Tắt chế độ trên máy bay để thực hiện cuộc gọi."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Tắt chế độ trên máy bay hoặc kết nối với mạng không dây để thực hiện cuộc gọi."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Thoát khỏi chế độ gọi lại khẩn cấp để thực hiện cuộc gọi không khẩn cấp."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Chưa được đăng ký trên mạng."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Không có mạng di động."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Hiện không có mạng di động. Hãy kết nối với mạng không dây để thực hiện cuộc gọi."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Mạng di động không khả dụng."</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Hiện không có mạng di động. Hãy kết nối với mạng không dây để thực hiện cuộc gọi."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Không thực hiện được cuộc gọi."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Khởi động chuỗi MMI…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Cuộc gọi không thành công."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Không thể thêm cuộc gọi tại thời điểm này."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Dịch vụ không được hỗ trợ"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Không chuyển đổi được cuộc gọi."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Không tách được cuộc gọi."</string>
@@ -442,10 +470,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Không thể thực hiện cuộc gọi hội nghị."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Không từ chối được cuộc gọi."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Không thực hiện được cuộc gọi."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Không thể giữ cuộc gọi."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Kết nối với mạng không dây để thực hiện cuộc gọi."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Bật gọi điện qua Wi-Fi để thực hiện cuộc gọi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Cuộc gọi khẩn cấp"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Đang bật radio..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Không có dịch vụ nào. Đang thử lại…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Không thể bật chế độ trên máy bay trong khi thực hiện cuộc gọi khẩn cấp."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Không thực hiện được cuộc gọi. <xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> không phải là số khẩn cấp."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Không thực hiện được cuộc gọi. Hãy quay số khẩn cấp."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Sử dụng bàn phím để quay số"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Nhập tất cả"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Đang nhập danh bạ trên SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Nhập từ danh bạ"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Đã nhập liên hệ"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Không nhập được liên hệ"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Trợ thính"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Bật khả năng tương thích trợ thính"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Đã vào Chế độ Gọi lại Khẩn cấp"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Chế độ Gọi lại Khẩn cấp"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Đã tắt kết nối mạng"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">Không có kết nối dữ liệu trong <xliff:g id="COUNT_1">%s</xliff:g> phút</item>
-      <item quantity="one">Không có kết nối dữ liệu trong <xliff:g id="COUNT_0">%s</xliff:g> phút</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Không có kết nối dữ liệu cho đến <xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong <xliff:g id="COUNT_1">%s</xliff:g> phút. Khi ở chế độ này, không thể dùng bất kỳ ứng dụng nào sử dụng kết nối dữ liệu. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
       <item quantity="one">Điện thoại sẽ ở chế độ Gọi lại khẩn cấp trong <xliff:g id="COUNT_0">%s</xliff:g> phút. Khi ở chế độ này, không thể dùng bất kỳ ứng dụng nào sử dụng kết nối dữ liệu. Bạn có muốn thoát chế độ này ngay bây giờ không?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"chọn địa chỉ liên hệ"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Không hỗ trợ tính năng gọi thoại"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"quay số"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Rung"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Rung"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Thư thoại kèm theo hình ảnh"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Âm thanh"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Đặt mã PIN"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Thay đổi mã PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Nhạc chuông và rung"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Thẻ SIM tích hợp sẵn"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Bật gọi điện video"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Chỉ gọi điện khẩn cấp"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Thẻ SIM, rãnh: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Trợ năng"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Cuộc gọi đến qua Wi-Fi"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Cuộc gọi qua Wi-Fi từ"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Cuộc gọi qua Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Chạm lại để mở"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Nhấn lại để mở"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Đã xảy ra lỗi khi giải mã tin nhắn."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Thẻ SIM đã kích hoạt dịch vụ của bạn và đã cập nhật chức năng chuyển vùng của điện thoại."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Có quá nhiều cuộc gọi hiện hoạt. Vui lòng kết thúc hoặc hợp nhất các cuộc gọi hiện có trước khi thực hiện cuộc gọi mới."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Không thể kết nối, vui lòng lắp thẻ SIM hợp lệ."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Mất kết nối Wi-Fi. Đã kết thúc cuộc gọi."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Thay đổi mã PIN thư thoại"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Tiếp tục"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Hủy"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"OK"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Xác nhận mã PIN cũ của bạn"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Nhập mã PIN thư thoại của bạn để tiếp tục."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Đặt mã PIN mới"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"Mã PIN phải bao gồm <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> chữ số."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Xác nhận mã PIN của bạn"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Các mã PIN không khớp"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"Đã cập nhật mã PIN thư thoại"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Không thể đặt mã PIN"</string>
 </resources>
diff --git a/res/values-zh-rCN/config.xml b/res/values-zh-rCN/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-zh-rCN/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ddd4488..744f26d 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"移动数据网络"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"移动数据"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"电话服务"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"紧急拨号器"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"电话"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"缺少语音信箱号码"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM卡上未存储语音信箱号码。"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"添加号码"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"只有主用户才能修改语音信箱设置。"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"您的SIM卡已解锁。正在解锁您的手机..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM网络解锁PIN码"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"解锁"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在请求网络解锁..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"网络解锁请求失败。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"网络解锁成功。"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"此用户无法修改移动网络设置"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"此用户无法修改移动网络设置"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通话设置"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM 通话设置(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通话设置"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"选择通话帐号"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"选择 SIP 通话帐号"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"先询问"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"无可用网络"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"设置"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"选择帐号"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"电话帐号"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"语音信箱"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"语音信箱(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"语音信箱:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"通知"</string>
     <string name="networks" msgid="8873030692174541976">"网络运营商"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"紧急广播"</string>
     <string name="call_settings" msgid="6112441768261754562">"通话设置"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"无法接通时"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"无法接通时的转接号码"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"转接到 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"未启用"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"关闭"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"您的运营商不支持在手机无法接通时停用来电转接功能。"</string>
     <string name="updating_title" msgid="6146755386174019046">"通话设置"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"只有主用户才能更改通话设置。"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"只有管理员用户才能更改通话设置。"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"设置(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"通话设置出错"</string>
     <string name="reading_settings" msgid="1920291699287055284">"正在读取设置..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"未做任何更改。"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"选择语音信箱服务"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"您的运营商"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"移动网络设置"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"旧的 PIN 码"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN 码"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"请稍候。"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 码太短。"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 码太长。"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 码安全系数太低。如要提高密码强度,请勿使用连续或重复的数字。"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"旧的 PIN 码不匹配。"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"新的 PIN 码包含无效字符。"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"无法更改 PIN 码"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"不受支持的语音邮件类型,请拨打 <xliff:g id="NUMBER">%s</xliff:g> 收听。"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"移动网络设置"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"移动网络"</string>
     <string name="label_available" msgid="1181658289009300430">"可用网络"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"正在搜索..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"未找到网络。"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"已在网络上注册。"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"选择网络运营商"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"搜索所有可用网络"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"自动选择"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"自动选择首选网络"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"自动选择网络"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"网络"</string>
     <string name="register_automatically" msgid="6017849844573519637">"自动注册..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"首选网络类型"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"更改网络运行方式"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"仅 GSM"</item>
     <item msgid="3817924849415716259">"首选 GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"通话"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"网络"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"增强型 4G LTE 模式"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"高级通话"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"使用 LTE 服务改进语音和其他通信功能(推荐)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"启用移动数据网络"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"允许使用数据流量"</string>
-    <string name="roaming" msgid="8871412572928323707">"移动数据网络漫游"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"注意"</string>
+    <string name="roaming" msgid="7894878421600247140">"漫游"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"漫游时连接到移动数据网络服务"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"漫游时连接到移动数据网络服务"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"移动数据网络连接已断开,因为您已离开本地网络并关闭了移动数据网络漫游功能。"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"这可能会产生高额费用。"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"要允许数据网络漫游吗?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"流量使用情况"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g>使用了 <xliff:g id="ID_1">%1$s</xliff:g> 移动数据流量"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"运营商"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"移动数据"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"通过移动网络访问数据"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"WLAN 通话"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"运营商视频通话"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 选项"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA 选项"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"流量使用"</string>
@@ -218,7 +244,7 @@
     <string name="throttle_data_rate_reduced_subtext" msgid="7492763592720107737">"已超过<xliff:g id="USED_0">%1$s</xliff:g>速率上限\n数据传输速率已降至 <xliff:g id="USED_1">%2$d</xliff:g> Kb/s。"</string>
     <string name="throttle_time_frame_subtext" msgid="7732763021560399960">"此周期已过去 <xliff:g id="USED_0">%1$d</xliff:g>٪\n下一个时段将从 <xliff:g id="USED_1">%2$d</xliff:g> 天后 (<xliff:g id="USED_2">%3$s</xliff:g>) 开始"</string>
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"如果超过了流量上限,则数据传输速率会降至 <xliff:g id="USED">%1$d</xliff:g> Kb/s"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"您的运营商的移动网络数据使用政策详情"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"有关您运营商的移动网络数据使用政策的详情"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"小区广播短信"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"小区广播短信"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"已启用小区广播短信"</string>
@@ -355,6 +381,7 @@
     <string name="menu_add" msgid="1882023737425114762">"添加联系人"</string>
     <string name="menu_edit" msgid="7143003705504672374">"编辑联系人"</string>
     <string name="menu_delete" msgid="3977150783449642851">"删除联系人"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"拨打电话给联系人"</string>
     <string name="get_pin2" msgid="8204677063922225311">"输入 PIN2 码"</string>
     <string name="name" msgid="7329028332786872378">"名称"</string>
     <string name="number" msgid="7905950798349903858">"号码"</string>
@@ -369,7 +396,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"正在删除固定拨号联系人..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"已删除固定拨号联系人。"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"固定拨号未更新,因为输入的 PIN 码有误。"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"固定拨号未更新,因为号码不能超过 20 位。"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"系统未更新 FDN,因为未输入号码或者输入的号码超过了 20 位。"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"固定拨号未更新。PIN2 码有误,或电话号码遭拒。"</string>
     <string name="fdn_failed" msgid="540018079008319747">"固定拨号操作失败。"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在从SIM卡读取..."</string>
@@ -426,15 +453,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"语音信箱号码未知"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"无服务"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"所选网络(<xliff:g id="OPERATOR_NAME">%s</xliff:g>)不可用"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"需关闭飞行模式才能拨打电话。"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"需开启移动网络,并关闭飞行模式或省电模式才能拨打电话。"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"需关闭飞行模式才能拨打电话。"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"需关闭飞行模式或连接至无线网络才能拨打电话。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"要拨打非紧急电话,请先退出紧急回拨模式。"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"尚未注册网络。"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"无法连接到移动网络。"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"移动网络不可用。需连接至无线网络才能拨打电话。"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"无法连接到移动网络"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"移动网络不可用。需连接至无线网络才能拨打电话。"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"要拨打电话,请输入有效的电话号码。"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"无法拨打该电话。"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"正在启动 MMI 序列..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"无法通话。"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"目前无法添加通话。"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"服务不受支持"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"无法切换通话。"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"无法单独通话。"</string>
@@ -442,14 +470,17 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"无法进行电话会议。"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"无法拒接来电。"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"无法挂断电话。"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"无法保持通话。"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"需连接至无线网络才能拨打电话。"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"启用 WLAN 通话功能以拨打电话。"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"紧急呼救"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在打开天线..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"无服务,正在重试…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"正在进行紧急呼救通话,无法开启飞行模式。"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"无法拨打该电话。<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> 不是紧急呼救号码。"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"无法拨打该电话。请拨打紧急呼救电话。"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"使用键盘拨号"</string>
-    <string name="onscreenHoldText" msgid="2285258239691145872">"等待"</string>
+    <string name="onscreenHoldText" msgid="2285258239691145872">"保持"</string>
     <string name="onscreenEndCallText" msgid="4403855834875398585">"挂断"</string>
     <string name="onscreenShowDialpadText" msgid="8561805492659639893">"拨号键盘"</string>
     <string name="onscreenMuteText" msgid="5011369181754261374">"静音"</string>
@@ -464,6 +495,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"全部导入"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"正在导入SIM联系人"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"从联系人导入"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"已导入联系人"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"无法导入联系人"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"助听器"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"启用助听器兼容模式"</string>
   <string-array name="tty_mode_entries">
@@ -504,10 +537,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"已进入紧急回拨模式"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"紧急回拨模式"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"数据连接已停用"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">持续 <xliff:g id="COUNT_1">%s</xliff:g> 分钟没有数据网络连接</item>
-      <item quantity="one">持续 <xliff:g id="COUNT_0">%s</xliff:g> 分钟没有数据网络连接</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"<xliff:g id="COMPLETETIME">%s</xliff:g> 之后才有数据网络连接"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">手机在 <xliff:g id="COUNT_1">%s</xliff:g> 分钟内都会处于紧急回拨模式。此模式下无法使用任何需要连接数据网络的应用。要立即退出吗?</item>
       <item quantity="one">手机在 <xliff:g id="COUNT_0">%s</xliff:g> 分钟内都会处于紧急回拨模式。此模式下无法使用任何需要连接数据网络的应用。要立即退出吗?</item>
@@ -531,10 +561,9 @@
     <string name="selectContact" msgid="781975788478987237">"选择联系人"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"不支持语音呼叫"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"拨号"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"振动"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"振动"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"可视语音邮箱"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"提示音"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"设置 PIN 码"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"更改 PIN 码"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"铃声和振动"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"内置SIM卡"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"开启视频通话功能"</string>
@@ -545,9 +574,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"只能拨打紧急呼救电话"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"无障碍功能"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"WLAN 来电"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"WLAN 通话来电:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"WLAN 通话"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次触摸即可打开"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"再次点按即可打开"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"对邮件解码时出错。"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已启用您的服务,并更新了您手机的漫游功能。"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"进行中的通话过多。请结束现有通话或将其合并,然后再拨打新的电话。"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"无法连接,请插入有效的 SIM 卡。"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"WLAN 连接中断,通话已结束。"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"更改语音信箱 PIN 码"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"继续"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"取消"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"确定"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"确认旧 PIN 码"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"输入语音信箱 PIN 码以继续操作。"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"设置新 PIN 码"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN 码必须为 <xliff:g id="MIN">%1$d</xliff:g> 到 <xliff:g id="MAX">%2$d</xliff:g> 位数。"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"确认 PIN 码"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN 码不一致"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"语音信箱 PIN 码已更新"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"无法设置 PIN 码"</string>
 </resources>
diff --git a/res/values-zh-rHK/config.xml b/res/values-zh-rHK/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-zh-rHK/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 5a098a9..1d0cbed 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"流動數據"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"流動數據"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"手機服務"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"緊急撥號"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"電話"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"未填留言信箱號碼"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 卡中沒有儲存任何留言信箱號碼。"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"新增電話號碼"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"只有主要使用者可以修改留言設定。"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"您的 SIM 卡已解除封鎖。您的手機正在解除鎖定..."</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM 網絡解除鎖定 PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"解除鎖定"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在要求解除網絡鎖定..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"無法完成解除網絡鎖定的要求"</string>
     <string name="unlock_success" msgid="6770085622238180152">"成功解除網絡鎖定。"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"這位使用者無法修改流動網絡設定"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"此使用者無法修改流動網絡設定"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通話設定"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM 通話設定 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通話設定"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"通話帳戶"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"SIP 通話帳戶"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"先詢問我"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"沒有網絡可用"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"設定"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"選擇賬戶"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"手機帳戶"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"留言信箱"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"留言信箱 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"留言信箱:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"通知"</string>
     <string name="networks" msgid="8873030692174541976">"網絡供應商"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急廣播"</string>
     <string name="call_settings" msgid="6112441768261754562">"通話設定"</string>
@@ -89,19 +92,19 @@
     <string name="sum_hide_caller_id" msgid="1071407020290873782">"撥出電話時隱藏本機號碼"</string>
     <string name="sum_show_caller_id" msgid="6768534125447290401">"撥打電話時顯示本機號碼"</string>
     <string name="sum_default_caller_id" msgid="1954518825510901365">"使用預設值,在撥打電話時顯示本機號碼"</string>
-    <string name="labelCW" msgid="6120513814915920200">"來電待接"</string>
+    <string name="labelCW" msgid="6120513814915920200">"來電等候"</string>
     <string name="sum_cw_enabled" msgid="8083061901633671397">"通話時如有來電請通知我"</string>
     <string name="sum_cw_disabled" msgid="3648693907300104575">"通話時如有來電請通知我"</string>
-    <string name="call_forwarding_settings" msgid="3378927671091537173">"來電轉接設定"</string>
+    <string name="call_forwarding_settings" msgid="3378927671091537173">"來電轉駁設定"</string>
     <string name="call_forwarding_settings_with_label" msgid="8569489414006897127">"來電轉駁設定 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="labelCF" msgid="2574386948026924737">"來電轉接"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"一律轉接"</string>
+    <string name="labelCF" msgid="2574386948026924737">"來電轉駁"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"全部轉駁"</string>
     <string name="messageCFU" msgid="3560082430662923687">"永遠使用這個號碼"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"轉接所有通話"</string>
-    <string name="sum_cfu_enabled" msgid="2450052502198827927">"將所有來電轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
+    <string name="sum_cfu_enabled" msgid="2450052502198827927">"將所有來電轉駁至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"號碼無法使用"</string>
     <string name="sum_cfu_disabled" msgid="8384177689501334080">"關閉"</string>
-    <string name="labelCFB" msgid="6139853033106283172">"忙線時"</string>
+    <string name="labelCFB" msgid="6139853033106283172">"線路繁忙時"</string>
     <string name="messageCFB" msgid="3711089705936187129">"忙線號碼"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"關閉"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"無法接通時"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"無法接通時的轉接號碼"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"已停用"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"關閉"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"您的流動網絡供應商不支援在手機無法接通時停用轉接功能。"</string>
     <string name="updating_title" msgid="6146755386174019046">"通話設定"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"只有主要使用者可以變更通話設定。"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"只有管理員可以變更通話設定。"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"設定 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"通話設定錯誤"</string>
     <string name="reading_settings" msgid="1920291699287055284">"正在讀取設定..."</string>
@@ -144,9 +147,20 @@
     <string name="fw_change_failed" msgid="5298103228470214665">"無法更改轉接號碼。\n如果問題持續發生,請與流動網絡供應商聯絡。"</string>
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"無法擷取和儲存目前的轉接號碼設定。\n您仍要轉到新的供應商嗎?"</string>
     <string name="no_change" msgid="3186040086622435212">"沒有更改。"</string>
-    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"選擇語音信箱服務"</string>
+    <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"選擇留言信箱服務"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"您的流動網絡供應商"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"流動網絡設定"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"舊的 PIN"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"請稍候。"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 太短。"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 太長。"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 太弱。強效密碼不應包含連續序列或重複數字。"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"舊的 PIN 不符。"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"新的 PIN 包含無效字元。"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"無法變更 PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"不支援的訊息類型,撥打 <xliff:g id="NUMBER">%s</xliff:g> 即可聆聽。"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"流動網絡設定"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"流動網絡"</string>
     <string name="label_available" msgid="1181658289009300430">"可用的網絡"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"正在搜尋..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"找不到網絡。"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"已在網絡上完成註冊。"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"選擇網絡供應商"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"搜尋所有可用的網絡"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"自動選擇"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"自動選擇偏好網絡"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"自動選取網絡"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"網絡"</string>
     <string name="register_automatically" msgid="6017849844573519637">"自動註冊..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"偏好的網絡類型"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"更改網絡操作模式"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"只限 GSM"</item>
     <item msgid="3817924849415716259">"首選 GSM/WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"通話"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"網絡"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"強化 4G LTE 模式"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"進階通話功能"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"使用 LTE 服務改善語音及其他通訊 (建議)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"啟用流動數據"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"允許使用數據"</string>
-    <string name="roaming" msgid="8871412572928323707">"數據漫遊服務"</string>
-    <string name="roaming_enable" msgid="7331106985174381987">"漫遊時連線到數據傳輸服務"</string>
-    <string name="roaming_disable" msgid="1843417228755568110">"漫遊時連線到數據傳輸服務"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"注意"</string>
+    <string name="roaming" msgid="7894878421600247140">"漫遊"</string>
+    <string name="roaming_enable" msgid="7331106985174381987">"漫遊時連線到數據服務"</string>
+    <string name="roaming_disable" msgid="1843417228755568110">"漫遊時連線到數據服務"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"您已離開主網絡覆蓋範圍,且已關閉數據漫遊服務,因此數據連線已中斷。"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"您可能需要支付龐大的費用。"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"要允許數據漫遊服務嗎?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"數據用量"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g>期間使用了 <xliff:g id="ID_1">%1$s</xliff:g> 的流動數據"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"流動網絡供應商"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"流動數據"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"透過流動網絡存取數據"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi 通話"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"流動網絡供應商視像通話"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 選項"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA 選項"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"數據用量"</string>
@@ -224,7 +250,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"若已達資料用量上限,資料傳輸速率會降低至 <xliff:g id="USED">%1$d</xliff:g> Kb/秒"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"更多有關流動網絡供應商流動網絡數據使用政策的資料"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"更多有關流動網絡供應商流動網絡資料使用政策的資訊"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"區域廣播 SMS"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"區域廣播 SMS"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"區域廣播 SMS 已啟用"</string>
@@ -334,7 +360,7 @@
     <item msgid="6043847456049107742">"1"</item>
   </string-array>
     <string name="cdma_activate_device" msgid="3793805892364814518">"啟動裝置"</string>
-    <string name="cdma_lte_data_service" msgid="4255018217292548962">"設定數據傳輸服務"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"設定數據服務"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"流動網絡供應商設定"</string>
     <string name="fdn" msgid="7878832555095183202">"固定撥號號碼"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"固定撥號 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
@@ -342,14 +368,14 @@
     <string name="fdn_list_with_label" msgid="7437232552210469217">"FDN 清單 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="fdn_activation" msgid="2156479741307463576">"FDN 啟用"</string>
     <string name="fdn_enabled" msgid="5238109009915521240">"已啟用固定撥號"</string>
-    <string name="fdn_disabled" msgid="4700049736675368279">"已停用固定撥號"</string>
+    <string name="fdn_disabled" msgid="4700049736675368279">"固定撥號號碼已停用"</string>
     <string name="enable_fdn" msgid="3740191529180493851">"啟用 FDN"</string>
     <string name="disable_fdn" msgid="7944020890722540616">"停用 FDN"</string>
-    <string name="change_pin2" msgid="2153563695382176676">"更改 PIN2"</string>
+    <string name="change_pin2" msgid="2153563695382176676">"變更 PIN2"</string>
     <string name="enable_fdn_ok" msgid="7215588870329688132">"停用 FDN"</string>
     <string name="disable_fdn_ok" msgid="5727046928930740173">"啟用 FDN"</string>
     <string name="sum_fdn" msgid="1959399454900272878">"管理固定撥號"</string>
-    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"更改固定撥號功能存取 PIN"</string>
+    <string name="sum_fdn_change_pin" msgid="6666549734792827932">"變更存取 FDN 的 PIN"</string>
     <string name="sum_fdn_manage_list" msgid="8431088265332628316">"管理電話號碼清單"</string>
     <string name="voice_privacy" msgid="3776841382844614716">"語音加密保護"</string>
     <string name="voice_privacy_summary" msgid="3159383389833516214">"已啟用加強型私隱保護模式"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"新增聯絡人"</string>
     <string name="menu_edit" msgid="7143003705504672374">"編輯聯絡人"</string>
     <string name="menu_delete" msgid="3977150783449642851">"刪除聯絡人"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"撥號給聯絡人"</string>
     <string name="get_pin2" msgid="8204677063922225311">"輸入 PIN2 碼"</string>
     <string name="name" msgid="7329028332786872378">"名稱"</string>
     <string name="number" msgid="7905950798349903858">"電話號碼"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"正在刪除固定撥號…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"固定撥號已刪除。"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"您所輸入的 PIN 碼不正確,FDN 未更新。"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"號碼超過 20 位數上限,FDN 未更新。"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"號碼空白或超過 20 位數,FDN 未更新。"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"FDN 無法更新。PIN2 碼不正確或電話號碼被拒。"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN 操作失敗。"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在從 SIM 卡讀取..."</string>
@@ -383,7 +410,7 @@
     <string name="simContacts_title" msgid="1861472842524839921">"選取要匯入的聯絡人"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"關閉飛行模式,並從 SIM 卡匯入聯絡人。"</string>
     <string name="enable_pin" msgid="5422767284133234860">"啟用/停用 SIM PIN"</string>
-    <string name="change_pin" msgid="9174186126330785343">"更改 SIM PIN"</string>
+    <string name="change_pin" msgid="9174186126330785343">"變更 SIM 卡的 PIN"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"SIM PIN:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"舊 PIN"</string>
     <string name="newPinLabel" msgid="207488227285336897">"新的 PIN"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"沒有可用的留言信箱號碼"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"沒有服務"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"您所選取的網絡 (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) 無法使用"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"關閉飛行模式以撥打電話。"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"開啟流動網絡、關閉飛行模式或關閉省電模式,以撥打電話。"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"關閉飛行模式以撥打電話。"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"關閉飛行模式或連接無線網絡,以撥打電話。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"離開緊急回撥模式即可撥打非緊急電話。"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"未在網絡上完成註冊。"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"無法連線至流動網絡。"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"無法使用流動網絡。連接無線網絡,以撥打電話。"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"無法使用流動網絡。"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"無法使用流動網絡。請連接無線網絡,以撥打電話。"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"要撥打電話,請輸入有效的號碼。"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"無法通話。"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"開始 MMI 序列..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"無法接通。"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"目前無法新增通話。"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"不支援的服務"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"無法切換通話。"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"無法分開通話。"</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"無法進行會議通話"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"無法拒絕來電。"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法釋放通話。"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"無法保留通話。"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連接無線網絡,以撥打電話。"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"啟用 Wi-Fi 通話功能以撥打電話。"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"正在開啟無線電..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"沒有服務。請再試一次…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"緊急通話時無法進入飛行模式。"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"無法通話。<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> 不是緊急號碼。"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"無法通話。撥打緊急號碼。"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"使用鍵盤撥號"</string>
@@ -470,11 +501,13 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"全部匯入"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"正在匯入 SIM 通訊錄"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"從通訊錄匯入"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"已匯入聯絡人"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"無法匯入聯絡人"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"助聽器"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"開啟助聽器相容功能"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"關閉 TTY"</item>
-    <item msgid="3971695875449640648">"TTY 全能"</item>
+    <item msgid="3971695875449640648">"TTY 完整模式"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"已進入緊急回撥模式"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急回撥模式"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"數據連線已停用"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">在接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內沒有數據連線</item>
-      <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內沒有數據連線</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"到<xliff:g id="COMPLETETIME">%s</xliff:g> 以前沒有數據連線"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">手機將在 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內處於緊急電話模式。在此模式中,無法使用需要數據連線的應用程式。您要退出嗎?</item>
       <item quantity="one">手機將在 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內處於緊急電話模式。在此模式中,無法使用需要連接數據的應用程式。您要退出嗎?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"選取聯絡人"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"不支援語音通話"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"撥號"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"震動"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"震動"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visual Voicemail"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"音效"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"設定 PIN 碼"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"變更 PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"內置 SIM 卡"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"開啟視像通話"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"只限緊急通話"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"無障礙功能"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 來電"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi 通話來自"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 通話"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次輕觸以開啟"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"再次輕按即可開啟"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"為訊息解碼時發生錯誤。"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已啟動您的服務,並更新了您的手機漫遊功能。"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"進行中的通話過多。請先結束或合併現有通話,再重新撥打。"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"無法連線,請插入有效的 SIM 卡。"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"已失去 Wi-Fi 連線。通話已結束。"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"變更留言信箱 PIN"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"繼續"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"取消"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"確認"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"確認舊 PIN 碼"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"請輸入留言信箱 PIN 以繼續操作。"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"設定新 PIN 碼"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"PIN 碼長度必須介乎 <xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g> 個數字。"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"確認 PIN 碼"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"PIN 碼不符"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"已更新留言信箱 PIN"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"無法設定 PIN 碼"</string>
 </resources>
diff --git a/res/values-zh-rTW/config.xml b/res/values-zh-rTW/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-zh-rTW/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5eaaf15..a2b8bb1 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"行動數據"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"行動數據"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"電話服務"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"緊急撥號"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"電話"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"遺失語音信箱號碼"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"SIM 卡中未儲存語音信箱號碼。"</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"新增號碼"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"只有主要使用者可以修改語音信箱設定。"</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"您的 SIM 卡已解鎖。正在解鎖手機中…"</string>
     <string name="label_ndp" msgid="780479633159517250">"SIM 網路解鎖 PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"解除鎖定"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"正在要求解除網路鎖定…"</string>
     <string name="unlock_failed" msgid="6490531697031504225">"網路解鎖失敗。"</string>
     <string name="unlock_success" msgid="6770085622238180152">"網路解鎖成功。"</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"這位使用者無法修改行動網路設定"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"這位使用者無法修改行動網路設定"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"GSM 通話設定"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"GSM 通話設定 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"CDMA 通話設定"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"選擇通話帳戶"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"選擇 SIP 通話帳戶"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"先詢問我"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"無法連上網路"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"設定"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"選擇帳戶"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"手機帳戶"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"語音信箱"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"語音信箱 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"語音信箱:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"通知"</string>
     <string name="networks" msgid="8873030692174541976">"電信業者"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"緊急廣播"</string>
     <string name="call_settings" msgid="6112441768261754562">"通話設定"</string>
@@ -105,19 +108,19 @@
     <string name="messageCFB" msgid="3711089705936187129">"忙線時的轉接號碼"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfb_disabled" msgid="4913145177320506827">"關閉"</string>
-    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"您的行動通訊業者不支援手機通話時停用轉接功能。"</string>
+    <string name="disable_cfb_forbidden" msgid="3506984333877998061">"您的電信業者不支援手機通話時停用轉接功能。"</string>
     <string name="labelCFNRy" msgid="1736067178393744351">"未接聽時"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"未接聽時的轉接號碼"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
     <string name="sum_cfnry_disabled" msgid="3884684060443538097">"關閉"</string>
-    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"您的行動通訊業者不支援手機未接聽時停用轉接功能。"</string>
+    <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"您的電信業者不支援手機未接聽時停用轉接功能。"</string>
     <string name="labelCFNRc" msgid="2614827454402079766">"無法接通時"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"無法接通時的轉接號碼"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"轉接至 <xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"停用"</string>
-    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"您的行動通訊業者不支援手機無收訊時停用轉接功能。"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"關閉"</string>
+    <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"您的電信業者不支援手機無收訊時停用轉接功能。"</string>
     <string name="updating_title" msgid="6146755386174019046">"通話設定"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"只有主要使用者可以變更通話設定。"</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"只有管理員使用者可以變更通話設定。"</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"設定 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"通話設定錯誤"</string>
     <string name="reading_settings" msgid="1920291699287055284">"正在讀取設定…"</string>
@@ -140,13 +143,24 @@
     <item msgid="1108394741608734023">"顯示號碼"</item>
   </string-array>
     <string name="vm_changed" msgid="380744030726254139">"語音信箱號碼已變更。"</string>
-    <string name="vm_change_failed" msgid="3352934863246208918">"無法變更語音信箱號碼。\n如果問題持續發生,請與您的行動通訊業者聯絡。"</string>
-    <string name="fw_change_failed" msgid="5298103228470214665">"無法變更轉接號碼。\n如果問題持續發生,請與您的行動通訊業者聯絡。"</string>
+    <string name="vm_change_failed" msgid="3352934863246208918">"無法變更語音信箱號碼。\n如果問題持續發生,請與您的電信業者聯絡。"</string>
+    <string name="fw_change_failed" msgid="5298103228470214665">"無法變更轉接號碼。\n如果問題持續發生,請與您的電信業者聯絡。"</string>
     <string name="fw_get_in_vm_failed" msgid="8862896836093833973">"無法擷取及儲存目前的轉接號碼設定。\n您仍要轉換至新的供應商嗎?"</string>
     <string name="no_change" msgid="3186040086622435212">"未變更設定。"</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"選擇語音信箱服務"</string>
-    <string name="voicemail_default" msgid="2001233554889016880">"您的行動通訊業者"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"行動網路設定"</string>
+    <string name="voicemail_default" msgid="2001233554889016880">"您的電信業者"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"舊的 PIN 碼"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"新的 PIN 碼"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"請稍候。"</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"新的 PIN 碼太短。"</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"新的 PIN 碼太長。"</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"新的 PIN 碼不夠安全。安全強度高的密碼不得使用連續或重複的數字。"</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"舊的 PIN 碼不符。"</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"新的 PIN 碼包含無效的字元。"</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"無法變更 PIN 碼"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"不支援的訊息類型,請撥打 <xliff:g id="NUMBER">%s</xliff:g> 聽取留言。"</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"行動網路設定"</string>
+    <string name="network_settings_title" msgid="514120489499925574">"行動網路"</string>
     <string name="label_available" msgid="1181658289009300430">"可用的網路"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"搜尋中…"</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"找不到網路。"</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"註冊網路成功。"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"選擇行動網路業者"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"搜尋所有可用的網路"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"自動選擇"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"自動選擇慣用網路"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"自動選取網路"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"網路"</string>
     <string name="register_automatically" msgid="6017849844573519637">"自動註冊…"</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"偏好的網路類型"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"變更網路操作模式"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"僅限 GSM"</item>
     <item msgid="3817924849415716259">"GSM/WCDMA 優先"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"通話"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"網路"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"加強型 4G LTE 模式"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"進階通話功能"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"使用 LTE 服務提升語音通訊和其他通訊的效能 (建議)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"啟用行動數據服務"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"允許使用行動數據"</string>
-    <string name="roaming" msgid="8871412572928323707">"漫遊服務"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"敬請注意"</string>
+    <string name="roaming" msgid="7894878421600247140">"漫遊"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"漫遊時連線到數據傳輸服務"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"漫遊時連線到數據傳輸服務"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"您已離開國內網路涵蓋範圍,且已關閉數據傳輸漫遊服務,因此數據連線已中斷。"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"您可能需要支付可觀的費用。"</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"允許漫遊服務?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"數據用量"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_2">%2$s</xliff:g>這段期間已使用 <xliff:g id="ID_1">%1$s</xliff:g> 的行動數據"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"電信業者"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> - <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"行動數據"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"使用行動網路存取數據"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Wi-Fi 通話"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"電信業者視訊通話"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"GSM/UMTS 選項"</string>
     <string name="cdma_options" msgid="4016822858172249884">"CDMA 選項"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"數據用量"</string>
@@ -224,7 +250,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"若已達數據用量上限,數據傳輸速率會降低至 <xliff:g id="USED">%1$d</xliff:g> Kb/秒"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"更多有關行動業者行動網路數據使用政策的資訊"</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"更多有關行動業者行動網路資料使用政策的資訊"</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"區域廣播簡訊"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"區域廣播簡訊"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"已啟用區域廣播簡訊"</string>
@@ -335,7 +361,7 @@
   </string-array>
     <string name="cdma_activate_device" msgid="3793805892364814518">"啟動裝置"</string>
     <string name="cdma_lte_data_service" msgid="4255018217292548962">"設定數據傳輸服務"</string>
-    <string name="carrier_settings_title" msgid="9028166176523012300">"行動通訊業者設定"</string>
+    <string name="carrier_settings_title" msgid="9028166176523012300">"電信業者設定"</string>
     <string name="fdn" msgid="7878832555095183202">"固定撥號"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"固定撥號號碼 (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="manage_fdn_list" msgid="8777755791892122369">"固定撥號清單"</string>
@@ -361,6 +387,7 @@
     <string name="menu_add" msgid="1882023737425114762">"新增聯絡人"</string>
     <string name="menu_edit" msgid="7143003705504672374">"編輯聯絡人"</string>
     <string name="menu_delete" msgid="3977150783449642851">"刪除聯絡人"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"撥打電話給聯絡人"</string>
     <string name="get_pin2" msgid="8204677063922225311">"輸入 PIN2"</string>
     <string name="name" msgid="7329028332786872378">"名稱"</string>
     <string name="number" msgid="7905950798349903858">"號碼"</string>
@@ -375,7 +402,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"正在刪除固定撥號…"</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"已刪除固定撥號。"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"您所輸入的 PIN 不正確,因此未更新 FDN。"</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"號碼超過 20 位數的上限,因此未更新 FDN。"</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"未輸入號碼或號碼超過 20 位數,因此無法更新固定撥號設定。"</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"未更新 FDN。可能是因為 PIN2 碼不正確或電話號碼遭拒。"</string>
     <string name="fdn_failed" msgid="540018079008319747">"FDN 操作失敗。"</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"正在從 SIM 卡讀取…"</string>
@@ -389,7 +416,7 @@
     <string name="newPinLabel" msgid="207488227285336897">"新的 PIN"</string>
     <string name="confirmPinLabel" msgid="257597715098070206">"確認新的 PIN"</string>
     <string name="badPin" msgid="8955102849303984935">"您所輸入的舊 PIN 不正確,請再試一次。"</string>
-    <string name="mismatchPin" msgid="5923253370683071889">"您所輸入的 PIN 不符,請再試一次。"</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"您所輸入的 PIN 碼不符,請再試一次。"</string>
     <string name="invalidPin" msgid="5981171102258684792">"輸入 4 至 8 個數字的 PIN。"</string>
     <string name="disable_sim_pin" msgid="3419351358300716472">"清除 SIM 卡 PIN"</string>
     <string name="enable_sim_pin" msgid="4845145659651484248">"設定 SIM 卡 PIN"</string>
@@ -432,15 +459,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"無語音信箱號碼"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"沒有服務"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"您所選取的網路 (<xliff:g id="OPERATOR_NAME">%s</xliff:g>) 無法使用"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"關閉飛航模式即可撥打電話。"</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"如要撥打電話,請開啟行動網路,並關閉飛航模式或節約耗電量模式。"</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"關閉飛航模式即可撥打電話。"</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"關閉飛航模式或連上無線網路即可撥打電話。"</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"結束緊急回撥模式,以便撥打非緊急電話。"</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"尚未註冊網路。"</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"無法連線到行動網路。"</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"無法使用行動通訊網路。但連上 Wi-Fi 網路即可撥打電話。"</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"無法使用 Google 行動服務網路。"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"無法使用行動網路。連上 Wi-Fi 網路即可撥打電話。"</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"如要撥打電話,請輸入有效的號碼。"</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"無法通話。"</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"開始 MMI 序列…"</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"無法通話。"</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"目前無法新增通話。"</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"不支援的服務"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"無法切換通話。"</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"無法分割通話。"</string>
@@ -448,10 +476,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"無法進行多方通話。"</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"無法拒接來電。"</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"無法掛斷電話。"</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"無法保留通話。"</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"連上無線網路即可撥打電話。"</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"請啟用 Wi-Fi 通話功能以撥打電話。"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"緊急電話"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"開啟無線通訊中…"</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"找不到服務訊號,正在重試…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"撥打緊急電話時無法開啟飛航模式。"</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"無法通話。<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> 不是緊急號碼。"</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"無法通話。只能撥打緊急號碼。"</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"使用鍵盤撥號"</string>
@@ -470,6 +501,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"全部匯入"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"匯入 SIM 聯絡人"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"從聯絡人匯入"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"已匯入聯絡人"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"無法匯入聯絡人"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"助聽器"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"開啟助聽器相容功能"</string>
   <string-array name="tty_mode_entries">
@@ -510,10 +543,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"已進入緊急回撥模式"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"緊急回撥模式"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"資料連線已停用"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="other">接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內沒有數據連線</item>
-      <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內沒有數據連線</item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"在<xliff:g id="COMPLETETIME">%s</xliff:g> 之前無法使用數據連線"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="other">接下來的 <xliff:g id="COUNT_1">%s</xliff:g> 分鐘內,手機會進入緊急回電模式。在此模式下,您將無法使用需要數據連線的應用程式。您要立即退出這個模式嗎?</item>
       <item quantity="one">接下來的 <xliff:g id="COUNT_0">%s</xliff:g> 分鐘內,手機會進入緊急回電模式。在此模式下,您將無法使用需要數據連線的應用程式。您要立即退出這個模式嗎?</item>
@@ -537,10 +567,9 @@
     <string name="selectContact" msgid="781975788478987237">"選取聯絡人"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"不支援語音通話"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"撥號"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"震動"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"震動"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"具有畫面的語音信箱"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"音效"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"設定語音信箱密碼"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"變更 PIN 碼"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"鈴聲與震動"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"內建 SIM 卡"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"開啟視訊通話"</string>
@@ -551,9 +580,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"僅限撥打緊急電話"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"協助工具"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Wi-Fi 來電"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi 通話來電:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 通話"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"再次輕觸即可開啟"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"再次輕觸即可開啟"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"為郵件解碼時發生錯誤。"</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"SIM 卡已啟用您的服務並更新了手機的漫遊功能。"</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"進行中的通話過多。請先結束或合併現有通話,再撥打新的電話。"</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"無法連線,請插入有效的 SIM 卡。"</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Wi-Fi 連線中斷,因此通話已結束。"</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"變更語音信箱密碼"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"繼續"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"取消"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"確定"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"確認舊的語音信箱密碼"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"請輸入語音信箱密碼以繼續進行。"</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"設定新的語音信箱密碼"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"語音信箱密碼長度必須介於 <xliff:g id="MIN">%1$d</xliff:g> 到 <xliff:g id="MAX">%2$d</xliff:g> 位數。"</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"確認語音信箱密碼"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"語音信箱密碼不符"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"已更新語音信箱密碼"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"無法設定語音信箱密碼"</string>
 </resources>
diff --git a/res/values-zu/config.xml b/res/values-zu/config.xml
new file mode 100644
index 0000000..509a3c8
--- /dev/null
+++ b/res/values-zu/config.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<!--  NOTE: Many variables that used to be in this file have been migrated to
+     CarrierConfigManager.java. Please consider whether new variables belong
+     there before adding to this file. Variables here should be more closely
+     related to devices than to networks.  -->
+
+<!--  Phone app resources that may need to be customized
+     for different hardware or product builds.  -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="system_visual_voicemail_client" msgid="1787338073957698459"></string>
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 5ec6152..f48d4ac 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="1107073389495104784">"Idatha yeselula"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Idatha Yeselula"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Amasevisi wefoni"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Ukudayela Okuphuthumayo"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Ifoni"</string>
@@ -45,6 +45,7 @@
     <string name="no_vm_number" msgid="4164780423805688336">"Inombolo engekho yomyalezo wezwi"</string>
     <string name="no_vm_number_msg" msgid="1300729501030053828">"Ayikho inombolo yomlayezo wezwi egcinwe ekhadini le-SIM."</string>
     <string name="add_vm_number_str" msgid="4676479471644687453">"Engeza inombolo"</string>
+    <string name="voice_number_setting_primary_user_only" msgid="6596604364907022416">"Izilungiselelo zevoyisimeyili zingashintshwa kuphela umsebenzisi oyinhloko."</string>
     <string name="puk_unlocked" msgid="2284912838477558454">"Ikhadi lakho le-SIM livuliwe. Ifoni yakho iyavula..."</string>
     <string name="label_ndp" msgid="780479633159517250">"Inethiwekhi ye-SIM yokuvula i-PIN"</string>
     <string name="sim_ndp_unlock_text" msgid="683628237760543009">"Vula"</string>
@@ -52,7 +53,7 @@
     <string name="requesting_unlock" msgid="6412629401033249351">"Icela ukuvula inethiwekhi..."</string>
     <string name="unlock_failed" msgid="6490531697031504225">"Isicelo sokuvula inethiwekhi asiphumelelanga."</string>
     <string name="unlock_success" msgid="6770085622238180152">"Ukuvula inethiwekhi kuphumelele."</string>
-    <string name="mobile_network_settings_not_available" msgid="3831911315358856062">"Izilungiselelo zenethiwekhi yeselula azitholakaleli lo msebenzisi"</string>
+    <string name="mobile_network_settings_not_available" msgid="7355254462995117896">"Izilungiselelo zenethiwekhi yeselula azitholakaleli lo msebenzisi"</string>
     <string name="labelGSMMore" msgid="5930842194056092106">"Izilungiselelo zekholi ze-GSM"</string>
     <string name="labelGsmMore_with_label" msgid="2674012918829238901">"Izilungiselelo zekholi ye-GSM (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="labelCDMAMore" msgid="1630676740428229339">"Izilungiselelo zekholi ye-CDMA"</string>
@@ -63,6 +64,7 @@
     <string name="phone_accounts_make_calls_with" msgid="1969188078933152231">"Yenza amakholi nge-"</string>
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"Yenz"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"Buza kuqala"</string>
+    <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"Ayikho inethiwekhi etholakalayo"</string>
     <string name="phone_accounts_settings_header" msgid="4141710640883261094">"Izilungiselelo"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"Khetha ama-akhawunti"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"Ama-akhawunti wefoni"</string>
@@ -75,6 +77,7 @@
     <string name="voicemail" msgid="8693759337917898954">"Ivoyisimeyili"</string>
     <string name="voicemail_settings_with_label" msgid="152724978380748296">"Ivoyisimeyili (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="voicemail_abbreviated" msgid="2215592488517217448">"VM:"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"Izaziso"</string>
     <string name="networks" msgid="8873030692174541976">"Imisebenzi yenethiwekhi"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"Ukusakazwa okuphuthumayo"</string>
     <string name="call_settings" msgid="6112441768261754562">"Izilungiselelo zekholi"</string>
@@ -114,10 +117,10 @@
     <string name="labelCFNRc" msgid="2614827454402079766">"Uma ungafinyeleleki"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Inombolo uma ingatholakali"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"Idlulisela ku-<xliff:g id="PHONENUMBER">{0}</xliff:g>"</string>
-    <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"Khutshaziwe"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Valiwe"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Isiphathi sakho asisekeli ukuvimbela ukudlulisela ucingo lapho ifoni yakho ingafinyeleleki."</string>
     <string name="updating_title" msgid="6146755386174019046">"Izilungiselelo zekholi"</string>
-    <string name="call_settings_primary_user_only" msgid="5679923943740900965">"Izilungiselelo zekholi zingaguqulwa kuphela ngumsebenzisi oyinhloko."</string>
+    <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Izilungiselelo zekholi zingaguqulwa kuphela ngumsebenzisi oyinhloko."</string>
     <string name="call_settings_with_label" msgid="3401177261468593519">"Izilungiselelo (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="7970259216988931777">"Iphutha lokulungiselela ikholi"</string>
     <string name="reading_settings" msgid="1920291699287055284">"Ifunda izilungiselelo..."</string>
@@ -146,7 +149,18 @@
     <string name="no_change" msgid="3186040086622435212">"Azikho izinguquko ezenziwe."</string>
     <string name="sum_voicemail_choose_provider" msgid="59911196126278922">"Khetha insizikalo yemeyili yezwi"</string>
     <string name="voicemail_default" msgid="2001233554889016880">"Inkampani yakho yenethiwekhi"</string>
-    <string name="mobile_networks" msgid="2843854043339307375">"Izilungiselelo zenethiwekhi yeselula"</string>
+    <string name="vm_change_pin_old_pin" msgid="7295220109886682573">"I-PIN endala"</string>
+    <string name="vm_change_pin_new_pin" msgid="5412922262839438097">"I-PIN entsha"</string>
+    <string name="vm_change_pin_progress_message" msgid="3977357361934350336">"Sicela ulinde."</string>
+    <string name="vm_change_pin_error_too_short" msgid="5974971097302710497">"I-PIN entsha imfushane kakhulu."</string>
+    <string name="vm_change_pin_error_too_long" msgid="8476870806115051865">"I-PIN entsha yinde kakhulu."</string>
+    <string name="vm_change_pin_error_too_weak" msgid="7883744811891784882">"I-PIN entsha ibuthakathaka. Iphasiwedi eqinile akufanele ibe nokulandelana okuqhubekayo noma amadijithi aphindaphindiwe."</string>
+    <string name="vm_change_pin_error_mismatch" msgid="2754685537970757317">"I-PIN endala ayifani."</string>
+    <string name="vm_change_pin_error_invalid" msgid="3972205462701668653">"I-PIN entsha iqukethe izinhlamvu ezingavumelekile."</string>
+    <string name="vm_change_pin_error_system_error" msgid="6610603326230000207">"Ayikwazi ukushintsha i-PIN"</string>
+    <string name="vvm_unsupported_message_format" msgid="11795090778411977">"Uhlobo lomlayezo ongasekelwa, shayela ku-<xliff:g id="NUMBER">%s</xliff:g> ukuze ulalele."</string>
+    <string name="mobile_networks" msgid="5540397602919106177">"Izilungiselelo zenethiwekhi yeselula."</string>
+    <string name="network_settings_title" msgid="514120489499925574">"Inethiwekhi yeselula"</string>
     <string name="label_available" msgid="1181658289009300430">"Amanethiwekhi atholakalayo"</string>
     <string name="load_networks_progress" msgid="5230707536168902952">"Iyasesha..."</string>
     <string name="empty_networks_list" msgid="4249426905018815316">"Awekho amanethiwekhi atholakele."</string>
@@ -158,8 +172,8 @@
     <string name="registration_done" msgid="495135664535876612">"Ibhalisiwe kwinethiwekhi"</string>
     <string name="sum_carrier_select" msgid="3494252551249882718">"Khetha inkamapani yenethiwekhi"</string>
     <string name="sum_search_networks" msgid="2921092249873272715">"Sesha wonke amanethiwekhi atholakalayo"</string>
-    <string name="select_automatically" msgid="5628402124471810174">"Khetha ngokuzenzakalela"</string>
-    <string name="sum_select_automatically" msgid="5614890115123292400">"Khetha ngokuzenzakalela inethiwekhi ethandwayo"</string>
+    <string name="select_automatically" msgid="1046727200631770962">"Khetha ngokuzenzakalela inethiwekhi"</string>
+    <string name="network_select_title" msgid="7733107364757544558">"Inethiwekhi"</string>
     <string name="register_automatically" msgid="6017849844573519637">"Ukubhalisa okuzenzakalelayo..."</string>
     <string name="preferred_network_mode_title" msgid="2336624679902659306">"Uhlobo lwenethiwekhi oluncamelayo"</string>
     <string name="preferred_network_mode_summary" msgid="1434820673166126609">"Shintsha imodi esebenzayo yenethiwekhi"</string>
@@ -196,16 +210,28 @@
     <item msgid="1524224863879435516">"I-GSM kuphela"</item>
     <item msgid="3817924849415716259">"Okukhethwayo kwe-GSM / WCDMA"</item>
   </string-array>
+    <string name="call_category" msgid="5863978196309462052">"Iyashaya"</string>
+    <string name="network_operator_category" msgid="4830701959205735636">"Inethiwekhi"</string>
     <string name="enhanced_4g_lte_mode_title" msgid="522191650223239171">"Imodi ye-4G LTE ethuthukisiwe"</string>
+    <string name="enhanced_4g_lte_mode_title_variant" msgid="4871126028907265406">"Ukushaya okuthuthukile"</string>
     <string name="enhanced_4g_lte_mode_summary" msgid="2332175070522125850">"Sebenzisa amasevisi we-LTE ukuze uthuthukise izwi nokunye ukuxhumana (kunconyiwe)"</string>
     <string name="data_enabled" msgid="5972538663568715366">"Idatha ivunyelwe"</string>
     <string name="data_enable_summary" msgid="2382798156640007971">"Vumela ukusetshenziswa kwedatha"</string>
-    <string name="roaming" msgid="8871412572928323707">"Ukuzulazula kwedatha"</string>
+    <string name="dialog_alert_title" msgid="6751344986194435476">"Qaphela"</string>
+    <string name="roaming" msgid="7894878421600247140">"Iyazulazula"</string>
     <string name="roaming_enable" msgid="7331106985174381987">"Xhuma emasevisini edatha uma uzulazula"</string>
     <string name="roaming_disable" msgid="1843417228755568110">"Xhuma emasevisini edatha lapho uzulazula"</string>
     <string name="roaming_reenable_message" msgid="8913735676127858115">"Ulahlekelwe uxhumano lwedatha ngoba ushiye inethiwekhi yakho yasekhaya inokuzulazula kwedatha okuvuliwe."</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Ingahle uthole izindleko ezincane."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vumela ukuhamba kwedatha?"</string>
+    <string name="data_usage_title" msgid="8759619109516889802">"Ukusebenzisa idatha"</string>
+    <string name="data_usage_template" msgid="8065650945732671045">"<xliff:g id="ID_1">%1$s</xliff:g> idatha yeselula esetshenziswe phakathi kwe-<xliff:g id="ID_2">%2$s</xliff:g>"</string>
+    <string name="carrier_settings_euicc" msgid="6714062862127226405">"Inkampani yenethiwekhi"</string>
+    <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
+    <string name="mobile_data_settings_title" msgid="3273340917802377121">"Idatha yeselula"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"Finyelela kudatha usebenzisa inethiwekhi yeselula"</string>
+    <string name="wifi_calling_settings_title" msgid="7741961465416430470">"Ukushaya kwe-Wi-Fi"</string>
+    <string name="video_calling_settings_title" msgid="539714564273795574">"Ukushaya kwevidiyo kwenkampani yenethiwekhi"</string>
     <string name="gsm_umts_options" msgid="6538311689850981686">"Okukhethwa kukho kwe-GSM/UMTS"</string>
     <string name="cdma_options" msgid="4016822858172249884">"Okukhethwa kukho kwe-CDMA"</string>
     <string name="throttle_data_usage" msgid="3715677828160555808">"Ukusebenzisa idatha"</string>
@@ -222,7 +248,7 @@
     <!-- no translation found for throttle_time_frame_subtext (7732763021560399960) -->
     <skip />
     <string name="throttle_rate_subtext" msgid="2149102656120726855">"Isilinganiso sedatha sehliselwe ku-<xliff:g id="USED">%1$d</xliff:g> ama-Kb uma ukusebenzisa umkhawulo wedatha ufinyelelwe"</string>
-    <string name="throttle_help_subtext" msgid="3633091498168446044">"Ulwazi oluningi mayelana nenqubomgomo yokusebenzisa idatha yenethiwekhi yenkampani yakho yefoni."</string>
+    <string name="throttle_help_subtext" msgid="5217706521499010816">"Olunye ulwazi mayelana nenqubomgomo yokusebenzisa idatha yenethiwekhi yesiphathi sakho sefoni."</string>
     <string name="cell_broadcast_sms" msgid="5584192824053625842">"I-SMS Yokusakaza Iseli"</string>
     <string name="enable_disable_cell_bc_sms" msgid="4851147873691392255">"I-SMS Yokusakaza ngeSeli"</string>
     <string name="cell_bc_sms_enable" msgid="6441688565738921084">"I-SMS Yokusakaza yeSeli ivunyelwe"</string>
@@ -359,6 +385,7 @@
     <string name="menu_add" msgid="1882023737425114762">"Engeza othintana naye"</string>
     <string name="menu_edit" msgid="7143003705504672374">"Hlela othintana naye"</string>
     <string name="menu_delete" msgid="3977150783449642851">"Susa othintana naye"</string>
+    <string name="menu_dial" msgid="3223106222819685808">"Shayela oxhumana naye"</string>
     <string name="get_pin2" msgid="8204677063922225311">"Thayipha i-PIN2"</string>
     <string name="name" msgid="7329028332786872378">"Igama"</string>
     <string name="number" msgid="7905950798349903858">"Inombolo"</string>
@@ -373,7 +400,7 @@
     <string name="deleting_fdn_contact" msgid="5669163206349319969">"Isusa othintana naye wokudayela okungaguquki..."</string>
     <string name="fdn_contact_deleted" msgid="7154162327112259569">"Othintana naye wokudayela okungaguquki ususiwe"</string>
     <string name="pin2_invalid" msgid="5470854099230755944">"I-FDN ayivuselelwanga ngoba uthayiphe i-PIN engalungile."</string>
-    <string name="fdn_invalid_number" msgid="1494755047900009147">"I-FDN ayivuselelwanga ngoba inombolo ayikwazi ukudlula ezinombolweni ezingu-20."</string>
+    <string name="fdn_invalid_number" msgid="8602417141715473998">"I-FDN ayizange ibuyekezwe ngoba inombolo ayinalutho noma idlula amadijithi angu-20."</string>
     <string name="pin2_or_fdn_invalid" msgid="6025144083384701197">"I-FDN ayibuyekeziwe. I-PIN2 kade ingalungile, noma inombolo yefoni yenqatshelwe."</string>
     <string name="fdn_failed" msgid="540018079008319747">"Umsebenzi we-FDN wehlulekile."</string>
     <string name="simContacts_emptyLoading" msgid="2203331234764498011">"Ifunda ekhadini le-SIM..."</string>
@@ -430,15 +457,16 @@
     <string name="notification_voicemail_no_vm_number" msgid="760963466895609716">"Inombolo yevoyisimeyili ayaziwa"</string>
     <string name="notification_network_selection_title" msgid="4224455487793492772">"Ayikho isevisi"</string>
     <string name="notification_network_selection_text" msgid="2607085729661923269">"Inethiwekhi ekhethiwe <xliff:g id="OPERATOR_NAME">%s</xliff:g> ayitholakali"</string>
-    <string name="incall_error_power_off" msgid="2947938060513306698">"Vala imodi yendiza ukuze wenze ikholi."</string>
+    <string name="incall_error_power_off" product="watch" msgid="2007450435656211658">"Vula inethiwekhi yeselula, vala imodi yendiza noma vala imodi yokulondoloza ibhethri ukuze wenze ikholi."</string>
+    <string name="incall_error_power_off" product="default" msgid="2947938060513306698">"Vala imodi yendiza ukuze wenze ikholi."</string>
     <string name="incall_error_power_off_wfc" msgid="8711428920632416575">"Vala imodi yendiza noma xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
     <string name="incall_error_ecm_emergency_only" msgid="738708660612388692">"Phuma kwimodi yokushayela emuva yesiko esiphuthumayo ukuze wenze ikholi yemodi engaphuthumi."</string>
     <string name="incall_error_emergency_only" msgid="4678640422710818317">"Ayibhalisiwe kwinethiwekhi."</string>
-    <string name="incall_error_out_of_service" msgid="4100065333878929223">"Inethiwekhi yeselula ayitholakali."</string>
-    <string name="incall_error_out_of_service_wfc" msgid="323851839058697057">"Inethiwekhi yeselula ayitholakali. Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
+    <string name="incall_error_out_of_service" msgid="8587993036435080418">"Inethiwekhi yefoni ayitholakali"</string>
+    <string name="incall_error_out_of_service_wfc" msgid="8741629779555132471">"Inethiwekhi yeselula ayitholakali. Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
     <string name="incall_error_no_phone_number_supplied" msgid="1150414018684246528">"Ukuze wenze ikholi, faka inombolo evumelekile."</string>
-    <string name="incall_error_call_failed" msgid="6302746943230078197">"Ayikwazi ukushaya."</string>
-    <string name="incall_status_dialed_mmi" msgid="3672498861336189563">"Iqalisa ukulandelana kwe-MMI..."</string>
+    <string name="incall_error_call_failed" msgid="5891978320269774095">"Ikholi ihlulekile."</string>
+    <string name="incall_error_cannot_add_call" msgid="5206923515522412110">"Ikholi ayikwazi ukungezwa ngalesi sikhathi."</string>
     <string name="incall_error_supp_service_unknown" msgid="655570339115407698">"Isevisi ayisekelwe"</string>
     <string name="incall_error_supp_service_switch" msgid="5237002176899962862">"Ayikwazi ukushintsha amakholi."</string>
     <string name="incall_error_supp_service_separate" msgid="7224393405134545246">"Ayikwazi ukuhlukanisa ikholi."</string>
@@ -446,10 +474,13 @@
     <string name="incall_error_supp_service_conference" msgid="2505727299596357312">"Ayikwazi ukwenza amakholi engqungquthela."</string>
     <string name="incall_error_supp_service_reject" msgid="8998568661508655638">"Ayikwazi ukunqabela ikholi."</string>
     <string name="incall_error_supp_service_hangup" msgid="7434513517153834426">"Ayikwazi ukukhipha amakholi."</string>
+    <string name="incall_error_supp_service_hold" msgid="7967020511232222078">"Ayikwazi ukubamba amakholi."</string>
     <string name="incall_error_wfc_only_no_wireless_network" msgid="1782466780452640089">"Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
+    <string name="incall_error_promote_wfc" msgid="106510757624022064">"Nika amandla ukushaya kwevoyisimeyili ukuze wenze ikholi."</string>
     <string name="emergency_enable_radio_dialog_title" msgid="4627849966634578257">"Ikholi ephuthumayo"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="207613549344420291">"Ivula umsakazo..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="5960061579996526883">"Ayikho isevisi. Iyazama futhi…"</string>
+    <string name="radio_off_during_emergency_call" msgid="2535800034010306830">"Ayikwazi ukungena kumodi yendiza ngesikhathi sekholi yesimo esiphuthumayo."</string>
     <string name="dial_emergency_error" msgid="1509085166367420355">"Ayikwazi ukushaya. I-<xliff:g id="NON_EMERGENCY_NUMBER">%s</xliff:g> akuyona inombolo yesimo esiphuthumayo."</string>
     <string name="dial_emergency_empty_error" msgid="9130194953830414638">"Ayikwazi ukushaya. Shayela inombolo yesimo esiphuthumayo."</string>
     <string name="dialerKeyboardHintText" msgid="9192914825413747792">"Sebenzisa ikhibhodi ukudayela"</string>
@@ -468,6 +499,8 @@
     <string name="importAllSimEntries" msgid="1503181169636198673">"Ngenisa konke"</string>
     <string name="importingSimContacts" msgid="7374056215462575769">"Ingenisa othintana nabo be-SIM"</string>
     <string name="importToFDNfromContacts" msgid="2130620207013368580">"Ngenisa kothintana nabo"</string>
+    <string name="singleContactImportedMsg" msgid="6868483416182599206">"Ingenise oxhumana naye"</string>
+    <string name="failedToImportSingleContactMsg" msgid="415399285420353917">"Yehlulekile ukungenisa oxhumana naye"</string>
     <string name="hac_mode_title" msgid="8740268574688743289">"Izinsiza zokuzwa"</string>
     <string name="hac_mode_summary" msgid="6833851160514929341">"Vula ikhono lensiza yokuzwa"</string>
   <string-array name="tty_mode_entries">
@@ -508,10 +541,7 @@
     <string name="phone_entered_ecm_text" msgid="6266424252578731203">"Ingene Kwimdoi Yokuphinda Ukushayela Okuphuthumayo"</string>
     <string name="phone_in_ecm_notification_title" msgid="3226896828951687085">"Imodi Yokuphinda Ukushayela Okuphuthumayo"</string>
     <string name="phone_in_ecm_call_notification_text" msgid="4611608947314729773">"Uxhumano lwedatha luvimbelwe"</string>
-    <plurals name="phone_in_ecm_notification_time" formatted="false" msgid="8308381858502470919">
-      <item quantity="one">Alukho uxhumo ledatha amaminthi angu-<xliff:g id="COUNT_1">%s</xliff:g></item>
-      <item quantity="other">Alukho uxhumo ledatha amaminthi angu-<xliff:g id="COUNT_1">%s</xliff:g></item>
-    </plurals>
+    <string name="phone_in_ecm_notification_complete_time" msgid="7730376844178948351">"Alukho uxhumo lwedatha kuze kube ngu-<xliff:g id="COMPLETETIME">%s</xliff:g>"</string>
     <plurals name="alert_dialog_exit_ecm" formatted="false" msgid="7179911675595441201">
       <item quantity="one">Ifoni izoba kumodi yokushayela emuva yesimo esiphuthumayo amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ngenkathi ikule modi azikho izinhlelo zokusebenza ezisebenzisa uxhumo ledatha ezingasetshenziswa. Ufuna ukuphuma manje?</item>
       <item quantity="other">Ifoni izoba kumodi yokushayela emuva yesimo esiphuthumayo amaminithi angu-<xliff:g id="COUNT_1">%s</xliff:g>. Ngenkathi ikule modi azikho izinhlelo zokusebenza ezisebenzisa uxhumo ledatha ezingasetshenziswa. Ufuna ukuphuma manje?</item>
@@ -535,10 +565,9 @@
     <string name="selectContact" msgid="781975788478987237">"khetha othintana naye"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Ukushayela ngezwi akusekelwe"</string>
     <string name="description_dial_button" msgid="7459705245418435351">"dayela"</string>
-    <string name="voicemail_notification_vibrate_when_title" msgid="8361970092063604886">"Dlidliza"</string>
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="5739583146522136440">"Dlidliza"</string>
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Ivoyisimeyili ebonakalayo"</string>
-    <string name="voicemail_notification_ringtone_title" msgid="2609519527849101590">"Umsindo"</string>
+    <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Setha IPHINI"</string>
+    <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Shintsha i-PIN"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Ithoni yokukhala nokudlidliza"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Amakhadi we-SIM akhelwe ngaphakathi"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Vula ukushaya kwevidiyo"</string>
@@ -549,9 +578,24 @@
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"Ikholi ephuthumayo kuphela"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"Ikhadi le-SIM, isilothi: <xliff:g id="SLOT_ID">%s</xliff:g>"</string>
     <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"Ukufinyeleleka"</string>
-    <string name="status_hint_label_incoming_wifi_call" msgid="8772915926382037499">"Ikholi ye-Wi-Fi engenayo"</string>
+    <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Ikholi ye-Wi-Fi kusukela ku-"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Ikholi ye-Wi-Fi"</string>
-    <string name="emergency_action_launch_hint" msgid="5841511849007540970">"Thinta futhi ukuze uvule"</string>
+    <string name="emergency_action_launch_hint" msgid="4906759256275562674">"Thepha futhi ukuze uvule"</string>
     <string name="message_decode_error" msgid="3456481534066924855">"Kube nephutha ngenkathi kukhishwa ikhodi kumlayezo."</string>
     <string name="callFailed_cdma_activation" msgid="2307989779233262164">"Ikhadi le-SIM lenze kwasebenza isevisi yakho laphinde labuyekeza amakhono okuzula wefoni yakho."</string>
+    <string name="callFailed_cdma_call_limit" msgid="1556916577171457086">"Kunamakholi amaningi asebenzayo. Sicela uphelise noma uhlanganise amakholi akhona ngaphambi kokubeka eyodwa."</string>
+    <string name="callFailed_imei_not_accepted" msgid="132192626901238542">"Ayikwazi ukuxhumeka, sicela ufake i-SIM card evumelekile."</string>
+    <string name="callFailed_wifi_lost" msgid="5968076625137297184">"Ukuxhumeka kwe-Wi-Fi kulahlekile. Ikholi iphelile."</string>
+    <string name="change_pin_title" msgid="7790232089699034029">"Shintsha IPHINI yevoyisimeyili"</string>
+    <string name="change_pin_continue_label" msgid="2135088662420163447">"Qhubeka"</string>
+    <string name="change_pin_cancel_label" msgid="353535488390948596">"Khansela"</string>
+    <string name="change_pin_ok_label" msgid="6204308560844889926">"Kulungile"</string>
+    <string name="change_pin_enter_old_pin_header" msgid="419179847657548887">"Qinisekisa IPHINI yakho endala"</string>
+    <string name="change_pin_enter_old_pin_hint" msgid="8579171678763615453">"Faka IPHINI yakho yevoyisimeyili ukuze uqhubeke."</string>
+    <string name="change_pin_enter_new_pin_header" msgid="2611191814590251532">"Setha i-PIN entsha"</string>
+    <string name="change_pin_enter_new_pin_hint" msgid="2322940054329689309">"IPHINI kufanele ibe amadijithi angu-<xliff:g id="MIN">%1$d</xliff:g>-<xliff:g id="MAX">%2$d</xliff:g>."</string>
+    <string name="change_pin_confirm_pin_header" msgid="8113764019347322170">"Qinisekisa i-PIN yakho"</string>
+    <string name="change_pin_confirm_pins_dont_match" msgid="4795052654904027909">"Amaphini awafani"</string>
+    <string name="change_pin_succeeded" msgid="2022852286442211151">"IPHINI yevoyisimeyili ibuyekeziwe"</string>
+    <string name="change_pin_system_error" msgid="8308462387154257840">"Ayikwazi ukusetha IPHINI"</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 67572ed..870d692 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -54,9 +54,4 @@
 
     <color name="dialer_dialpad_touch_tint">#330288d1</color>
     <color name="floating_action_button_touch_tint">#80ffffff</color>
-
-    <color name="network_operators_color_primary">#ff263238</color>
-    <color name="network_operators_color_primary_dark">#ff21272b</color>
-
-    <color name="emergency_dialer_background">#ff263238</color>
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 0b1f93c..d8725e7 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -207,8 +207,12 @@
     <!-- Flag indicating whether to allow visual voicemail if available on the device.[DO NOT TRANSLATE] -->
     <bool name="allow_visual_voicemail">true</bool>
 
-    <!-- Component for custom voicemail notification handling. [DO NOT TRANSLATE] -->
-    <string name="config_customVoicemailComponent">@null</string>
+    <!-- The package to handle visual voicemail if the default dialer or the package
+    CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING does not handle it -->
+    <string name="system_visual_voicemail_client"></string>
+
+    <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. -->
+    <bool name="vvm3_enabled">false</bool>
 
     <!-- Flag indicating whether to allow pstn phone accounts [DO NOT TRANSLATE] -->
     <bool name="config_pstn_phone_accounts_enabled">true</bool>
@@ -218,4 +222,10 @@
 
     <!-- Whether the emergency only account can make emergency calls -->
     <bool name="config_pstnCanPlaceEmergencyCalls">true</bool>
+
+    <!-- The package name for the platform carrier config app, bundled with system image. -->
+    <string name="platform_carrier_config_package" translatable="false">com.android.carrierconfig</string>
+
+    <!-- Whether the cellular radio is allowed to be power down when the Bluetooth can provide the data/call capabilities -->
+    <bool name="config_allowRadioPowerDownOnBluetooth">false</bool>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4f57018..7a7156f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -20,7 +20,7 @@
          and other settings UIs.  This is the version of the label for
          tablet devices, where the phone app handles mobile data but not
          actual phone calls. -->
-    <string name="phoneAppLabel" product="tablet">Cellular Data</string>
+    <string name="phoneAppLabel" product="tablet">Mobile Data</string>
 
     <!-- Official label of the phone app, as seen in "Manage Applications"
          and other settings UIs. -->
@@ -95,6 +95,8 @@
     <string name="no_vm_number_msg">No voicemail number is stored on the SIM card.</string>
     <!-- Button label on the "Missing voicemail number" dialog -->
     <string name="add_vm_number_str">Add number</string>
+    <!--Toast in Call settings when asked to launch voicemail for a guest user -->
+    <string name="voice_number_setting_primary_user_only">Voicemail Settings can only be modified by the Primary User.</string>
 
     <!-- Status message displayed on SIM PIN unlock panel -->
     <string name="puk_unlocked">Your SIM card has been unblocked. Your phone is unlocking\u2026</string>
@@ -115,7 +117,7 @@
     <!-- settings strings -->
 
     <!-- Error message for users that aren't allowed to modify Mobile Network settings [CHAR LIMIT=none] -->
-    <string name="mobile_network_settings_not_available">Cellular network settings are not available for this user</string>
+    <string name="mobile_network_settings_not_available">Mobile network settings are not available for this user</string>
     <!-- GSM Call settings screen, setting option name. [CHAR LIMIT=40] -->
     <string name="labelGSMMore">GSM call settings</string>
     <!-- GSM Call settings screen, setting option name with label indicating the SIM the settings
@@ -139,6 +141,8 @@
     <string name="phone_accounts_make_sip_calls_with">Make SIP calls with</string>
     <!-- Entry in dialog to "ask first" for accounts when making a call -->
     <string name="phone_accounts_ask_every_time">Ask first</string>
+    <!-- Account label for when a SIM account has no service (i.e. airplane mode) -->
+    <string name="phone_accounts_default_account_label">No network available</string>
 
     <!-- Label for heading of the per-account settings section in the phone accounts settings
          screen. -->
@@ -168,6 +172,12 @@
     <string name="voicemail_settings_with_label">Voicemail (<xliff:g id="subscriptionlabel" example="Mock Carrier">%s</xliff:g>)</string>
     <!-- Call forwarding dialog box, voicemail number prefix -->
     <string name="voicemail_abbreviated">VM:</string>
+    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
+    <string name="voicemail_notifications_key" translatable="false">voicemail_notification_key</string>
+
+    <!-- Voicemail notifications title. The user clicks on this preference navigate to the system settings screen for that channel
+    .[CHAR LIMIT=30] -->
+    <string name="voicemail_notifications_preference_title">Notifications</string>
     <!-- Mobile network settings screen, setting option name -->
     <string name="networks">Network operators</string>
     <!-- Cell Broadcast settings title.  [CHAR LIMIT=50] -->
@@ -251,14 +261,14 @@
     <!-- Call forwarding settings screen, setting summary text when forwarding to a specific number when unreachable-->
     <string name="sum_cfnrc_enabled">Forwarding to <xliff:g id="phonenumber" example="555-1212">{0}</xliff:g></string>
     <!-- Call forwarding settings screen, setting summary text when Forward when unreachable is disabled -->
-    <string name="sum_cfnrc_disabled">Disabled</string>
+    <string name="sum_cfnrc_disabled">Off</string>
     <!-- Error message displayed after failing to disable forwarding calls when the phone is unreachable -->
     <string name="disable_cfnrc_forbidden">Your carrier doesn\'t support disabling call forwarding when your phone is unreachable.</string>
 
     <!-- Title of the progress dialog displayed while updating Call settings -->
     <string name="updating_title">Call settings</string>
     <!-- Toast in Call settings when asked to launch settings for a secondary user -->
-    <string name="call_settings_primary_user_only">Call settings can only be changed by the primary user.</string>
+    <string name="call_settings_admin_user_only">Call settings can only be changed by the admin user.</string>
     <!-- Title of the "Call settings" settings screen, with a text label identifying which SIM the settings are for. -->
     <string name="call_settings_with_label">Settings (<xliff:g id="subscriptionlabel" example="Mock Carrier">%s</xliff:g>)</string>
     <!-- Title of the alert dialog displayed if an error occurs while updating Call settings -->
@@ -328,9 +338,33 @@
     <!-- Call settings screen, "Voicemail" screen, default option - Your Carrier -->
     <string name="voicemail_default">Your carrier</string>
 
+    <!-- Hint for the old PIN field in the change vociemail PIN dialog -->
+    <string name="vm_change_pin_old_pin">Old PIN</string>
+    <!-- Hint for the new PIN field in the change vociemail PIN dialog -->
+    <string name="vm_change_pin_new_pin">New PIN</string>
+
+    <!-- Message on the dialog when PIN changing is in progress -->
+    <string name="vm_change_pin_progress_message">Please wait.</string>
+    <!-- Error message for the voicemail PIN change if the PIN is too short -->
+    <string name="vm_change_pin_error_too_short">The new PIN is too short.</string>
+    <!-- Error message for the voicemail PIN change if the PIN is too long -->
+    <string name="vm_change_pin_error_too_long">The new PIN is too long.</string>
+    <!-- Error message for the voicemail PIN change if the PIN is too weak -->
+    <string name="vm_change_pin_error_too_weak">The new PIN is too weak. A strong password should not have continuous sequence or repeated digits.</string>
+    <!-- Error message for the voicemail PIN change if the old PIN entered doesn't match  -->
+    <string name="vm_change_pin_error_mismatch">The old PIN does not match.</string>
+    <!-- Error message for the voicemail PIN change if the new PIN contains invalid character -->
+    <string name="vm_change_pin_error_invalid">The new PIN contains invalid characters.</string>
+    <!-- Error message for the voicemail PIN change if operation has failed -->
+    <string name="vm_change_pin_error_system_error">Unable to change PIN</string>
+    <!-- Message to replace the transcription if a visual voicemail message is not supported-->
+    <string name="vvm_unsupported_message_format">Unsupported message type, call <xliff:g id="number" example="*86">%s</xliff:g> to listen.</string>
+
     <!-- networks setting strings --><skip/>
     <!-- Mobile network settings screen title -->
-    <string name="mobile_networks">Cellular network settings</string>
+    <string name="mobile_networks">Mobile network settings</string>
+    <!-- Mobile network settings screen title/heading -->
+    <string name="network_settings_title">Mobile network</string>
     <!-- Available networks screen title/heading -->
     <string name="label_available">Available networks</string>
     <!-- Mobile network settings screen, toast when searching for available networks -->
@@ -353,10 +387,10 @@
     <string name="sum_carrier_select">Choose a network operator</string>
     <!-- Available networks screen, setting summary text -->
     <string name="sum_search_networks">Search for all available networks</string>
-    <!-- Available networks screen, setting option name -->
-    <string name="select_automatically">Choose automatically</string>
-    <!-- Available networks screen, setting summary text -->
-    <string name="sum_select_automatically">Automatically choose preferred network</string>
+    <!-- Available networks screen, name of switch button for whether to select network automatically -->
+    <string name="select_automatically">Automatically select network</string>
+    <!-- Available networks screen, name of button when user wants to select network manually  -->
+    <string name="network_select_title">Network</string>
     <string name="register_automatically">Automatic registration\u2026</string>
     <string name="preferred_network_mode_title">Preferred network type</string>
     <string name="preferred_network_mode_summary">Change the network operating mode</string>
@@ -426,17 +460,27 @@
         <item>"1"</item>
         <item>"0"</item>
     </string-array>
-    <!-- Cellular network 4G title [CHAR LIMIT=30] -->
+
+    <!-- Mobile network settings screen, name for call settings category -->
+    <string name="call_category">Calling</string>
+    <!-- Mobile network settings screen, name for network operator category -->
+    <string name="network_operator_category">Network</string>
+
+    <!-- Mobile network 4G title [CHAR LIMIT=30] -->
     <string name="enhanced_4g_lte_mode_title">Enhanced 4G LTE Mode</string>
-    <!-- Cellular network 4G summary [CHAR LIMIT=80] -->
+    <!-- Carrier variant of Enhaced 4G LTE Mode title.  [CHAR LIMIT=50] -->
+    <string name="enhanced_4g_lte_mode_title_variant">Advanced Calling</string>
+    <!-- Mobile network 4G summary [CHAR LIMIT=80] -->
     <string name="enhanced_4g_lte_mode_summary">Use LTE services to improve voice and other communications (recommended)</string>
 
     <!-- Mobile network settings screen, data enabling checkbox name -->
     <string name="data_enabled">Data enabled</string>
     <!-- Mobile network settings screen, setting summary text when check box is not selected (explains what selecting it would do) [CHAR LIMITS=40] -->
     <string name="data_enable_summary">Allow data usage</string>
+    <!-- Mobile network settings screen, title for alert dialog -->
+    <string name="dialog_alert_title">Attention</string>
     <!-- Mobile network settings screen, setting check box name -->
-    <string name="roaming">Data roaming</string>
+    <string name="roaming">Roaming</string>
     <!-- Mobile network settings screen, setting summary text when check box is selected -->
     <string name="roaming_enable">Connect to data services when roaming</string>
     <!-- Mobile network settings screen, setting summary text when check box is clear -->
@@ -449,6 +493,22 @@
     <string name="roaming_warning">You may incur significant charges.</string>
     <!-- Mobile network settings screen, dialog message title when user selects the Data roaming check box -->
     <string name="roaming_alert_title">Allow data roaming?</string>
+    <!-- Mobile network settings screen, data usage setting check box name -->
+    <string name="data_usage_title">Data usage</string>
+    <!-- Summary about how much data has been used in a date range [CHAR LIMIT=100] -->
+    <string name="data_usage_template"><xliff:g name="amount" example="200 MB">%1$s</xliff:g> mobile data used between <xliff:g name="date_range" example="Jan 1 -- Feb 2">%2$s</xliff:g></string>
+    <!-- Mobile network settings screen, name of the option to manage carrier profiles on devices which support embedded carrier profiles -->
+    <string name="carrier_settings_euicc">Carrier</string>
+    <!-- Mobile network settings screen, summary of the option to manage carrier profiles on devices which support embedded carrier profiles -->
+    <string name="carrier_settings_euicc_summary"><xliff:g id="carrier_name">%1$s</xliff:g> &#8212; <xliff:g id="phone_number">%2$s</xliff:g></string>
+    <!-- Mobile network settings screen, title of Mobile Data switch preference -->
+    <string name="mobile_data_settings_title">Mobile Data</string>
+    <!-- Mobile network settings screen, title of Mobile Data switch preference -->
+    <string name="mobile_data_settings_summary">Access data using mobile network</string>
+    <!-- Mobile network settings screen, title of Wi-Fi calling setting -->
+    <string name="wifi_calling_settings_title">Wi-Fi calling</string>
+    <!-- Mobile network settings screen, title of Video calling setting -->
+    <string name="video_calling_settings_title">Carrier video calling</string>
 
     <!-- USSD aggregation dialog box: separator strings between messages (new-lines will be added before and after) -->
     <string name="ussd_dialog_sep" translatable="false">----------</string>
@@ -477,7 +537,7 @@
 
     <string name="throttle_rate_subtext">Data rate reduced to <xliff:g id="used">%1$d</xliff:g> Kb/s if data use limit is exceeded</string>
 
-    <string name="throttle_help_subtext">More information about your carrier\'s cellular network data use policy</string>
+    <string name="throttle_help_subtext">More information about your carrier\'s mobile network data use policy</string>
 
     <string name="cell_broadcast_sms">Cell Broadcast SMS</string>
 
@@ -777,6 +837,8 @@
     <string name="menu_edit">Edit contact</string>
     <!-- FDN list screen: menu item label -->
     <string name="menu_delete">Delete contact</string>
+    <!-- FDN list screen: menu item label -->
+    <string name="menu_dial">Dial contact</string>
 
     <!-- FDN related strings -->
     <!-- Label for PIN2 entry screen -->
@@ -808,7 +870,7 @@
     <!-- FDN settings: error message displayed in a popup (toast) -->
     <string name="pin2_invalid">FDN wasn\'t updated because you typed an incorrect PIN.</string>
     <!-- FDN settings: error message displayed in a popup (toast) -->
-    <string name="fdn_invalid_number">FDN wasn\'t updated because the number can\'t exceed 20 digits.</string>
+    <string name="fdn_invalid_number">FDN wasn\'t updated because the number is empty or exceeds 20 digits.</string>
     <!-- FDN settings: error message displayed in a popup (toast), when the entered
          FDN number was inappropriate, OR, PIN2 the user entered was incorrect.
          Because of API restriction, there's no way to determine which is the exact
@@ -951,7 +1013,9 @@
     <string name="notification_network_selection_text">Selected network (<xliff:g id="operator_name">%s</xliff:g>) unavailable</string>
 
     <!-- In-call screen: call failure message displayed in an error dialog. [CHAR_LIMIT=NONE] -->
-    <string name="incall_error_power_off">Turn off airplane mode to make a call.</string>
+    <string name="incall_error_power_off" product="watch">Turn on mobile network, turn off airplane mode or turn off battery saver mode to make a call.</string>
+    <!-- In-call screen: call failure message displayed in an error dialog. [CHAR_LIMIT=NONE] -->
+    <string name="incall_error_power_off" product="default">Turn off airplane mode to make a call.</string>
     <!-- In-call screen: call failure message displayed in an error dialog when in airplane mode, WFC is enabled, not wifi-only, and not connected to wireless networks. [CHAR_LIMIT=NONE] -->
     <string name="incall_error_power_off_wfc">Turn off airplane mode or connect to a wireless network to make a call.</string>
     <!-- In-call screen: call failure message displayed when the user attempts to make a non-emergency call while the phone is in emergency callback mode. -->
@@ -960,15 +1024,15 @@
          This string is currently unused (see comments in InCallScreen.java.) -->
     <string name="incall_error_emergency_only">Not registered on network.</string>
     <!-- In-call screen: call failure message displayed in an error dialog -->
-    <string name="incall_error_out_of_service">Cellular network not available.</string>
+    <string name="incall_error_out_of_service">Mobile network not available.</string>
     <!-- In-call screen: call failure message displayed in an error dialog -->
-    <string name="incall_error_out_of_service_wfc">Cellular network is not available. Connect to a wireless network to make a call.</string>
+    <string name="incall_error_out_of_service_wfc">Mobile network is not available. Connect to a wireless network to make a call.</string>
     <!-- In-call screen: call failure message displayed in an error dialog -->
     <string name="incall_error_no_phone_number_supplied">To place a call, enter a valid number.</string>
     <!-- In-call screen: call failure message displayed in an error dialog -->
-    <string name="incall_error_call_failed">Can\'t call.</string>
-    <!-- In-call screen: status message displayed in a dialog when starting an MMI -->
-    <string name="incall_status_dialed_mmi">Starting MMI sequence\u2026</string>
+    <string name="incall_error_call_failed">Call failed.</string>
+    <!-- In-call screen: call failure message displayed in an error dialog -->
+    <string name="incall_error_cannot_add_call">Call cannot be added at this time.</string>
     <!-- In-call screen: message displayed in an error dialog -->
     <string name="incall_error_supp_service_unknown">Service not supported</string>
     <!-- In-call screen: message displayed in an error dialog -->
@@ -983,8 +1047,12 @@
     <string name="incall_error_supp_service_reject">Can\'t reject call.</string>
     <!-- In-call screen: message displayed in an error dialog -->
     <string name="incall_error_supp_service_hangup">Can\'t release call(s).</string>
+    <!-- In-call screen: message displayed in an error dialog -->
+    <string name="incall_error_supp_service_hold">Can\'t hold calls.</string>
     <!-- In-call screen: call failure message displayed in an error dialog when WFC is enabled, is wifi-only, and not connected to a wireless network. [CHAR_LIMIT=NONE] -->
     <string name="incall_error_wfc_only_no_wireless_network">Connect to a wireless network to make a call.</string>
+    <!-- In-call screen: call failure message displayed in an error dialog when the user is connected to a wireless network, but wifi calling is turned off. [CHAR_LIMIT=NONE] -->
+    <string name="incall_error_promote_wfc">Enable Wi-Fi calling to make a call.</string>
 
     <!-- Dialog title for the "radio enable" UI for emergency calls -->
     <string name="emergency_enable_radio_dialog_title">Emergency call</string>
@@ -992,6 +1060,8 @@
     <string name="emergency_enable_radio_dialog_message">Turning on radio\u2026</string>
     <!-- Status message for the "radio enable" UI for emergency calls -->
     <string name="emergency_enable_radio_dialog_retry">No service. Trying again\u2026</string>
+    <!-- Toast message shown when user tries to turn on airplane mode while in an emergency call -->
+    <string name="radio_off_during_emergency_call">Cannot enter airplane mode during an emergency call.</string>
 
     <!-- Dialer text on Emergency Dialer -->
     <!-- Emergency dialer: message displayed in an error dialog -->
@@ -1037,6 +1107,11 @@
     <!-- Import a single contact entry from contacts to the SIM card -->
     <string name="importToFDNfromContacts">Import from contacts</string>
 
+    <!-- Message shown when a single contact is imported from SIM card -->
+    <string name="singleContactImportedMsg">Imported contact</string>
+    <!-- Message shown when a single contact could not be imported from SIM card -->
+    <string name="failedToImportSingleContactMsg">Failed to import contact</string>
+
     <!-- Hearing aid settings -->
     <string name="hac_mode_title">Hearing aids</string>
     <string name="hac_mode_summary">Turn on hearing aid compatibility</string>
@@ -1140,12 +1215,8 @@
     <string name="phone_in_ecm_notification_title">Emergency Callback Mode</string>
     <!-- ECM: Notification body -->
     <string name="phone_in_ecm_call_notification_text">Data connection disabled</string>
-    <plurals name="phone_in_ecm_notification_time">
-        <!-- number of minutes is one -->
-        <item quantity="one">No data connection for <xliff:g id="count">%s</xliff:g> minute</item>
-        <!-- number of minutes is not equal to one -->
-        <item quantity="other">No data connection for <xliff:g id="count">%s</xliff:g> minutes</item>
-    </plurals>
+    <!-- ECM: Displays the time when ECM will end, Example: "No Data Connection until 10:45 AM" -->
+    <string name="phone_in_ecm_notification_complete_time">No data connection until <xliff:g id="completeTime">%s</xliff:g></string>
     <!-- ECM: Dialog box message for exiting from the notifications screen -->
     <plurals name="alert_dialog_exit_ecm">
         <!-- number of minutes is one -->
@@ -1214,28 +1285,13 @@
     -->
     <string name="description_dial_button">dial</string>
 
-    <!-- Title for the vibration settings for voicemail notifications [CHAR LIMIT=40] -->
-    <string name="voicemail_notification_vibrate_when_title" msgid="8731372580674292759">Vibrate</string>
-    <!-- Dialog title for the vibration settings for voice mail notifications [CHAR LIMIT=40]-->
-    <string name="voicemail_notification_vibarte_when_dialog_title" msgid="8995274609647451109">Vibrate</string>
-
     <!-- Visual voicemail on/off title [CHAR LIMIT=40] -->
     <string name="voicemail_visual_voicemail_switch_title">Visual Voicemail</string>
 
-    <!-- Voicemail ringtone title. The user clicks on this preference to select
-         which sound to play when a voicemail notification is received.
-         [CHAR LIMIT=30] -->
-    <string name="voicemail_notification_ringtone_title">Sound</string>
-
-    <!-- The default value value for voicemail notification. -->
-    <string name="voicemail_notification_vibrate_when_default" translatable="false">never</string>
-
-    <!-- Actual values used in our code for voicemail notifications. DO NOT TRANSLATE -->
-    <string-array name="voicemail_notification_vibrate_when_values" translatable="false">
-        <item>always</item>
-        <item>silent</item>
-        <item>never</item>
-    </string-array>
+    <!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
+    <string name="voicemail_set_pin_dialog_title">Set PIN</string>
+    <!-- Voicemail change PIN dialog title [CHAR LIMIT=40] -->
+    <string name="voicemail_change_pin_dialog_title">Change PIN</string>
 
     <!-- Title for the category "ringtone", which is shown above ringtone and vibration
          related settings.
@@ -1279,23 +1335,21 @@
 
     <!-- Status hint label for an incoming call over a wifi network which has not been accepted yet.
          [CHAR LIMIT=25] -->
-    <string name="status_hint_label_incoming_wifi_call">Incoming Wi-Fi call</string>
+    <string name="status_hint_label_incoming_wifi_call">Wi-Fi call from</string>
     <!-- Status hint label for a call being made over a wifi network. [CHAR LIMIT=25] -->
     <string name="status_hint_label_wifi_call">Wi-Fi call</string>
 
-    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
-    <string name="voicemail_notification_ringtone_key">voicemail_notification_ringtone_key</string>
-    <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
-    <string name="voicemail_notification_vibrate_key">voicemail_notification_vibrate_key</string>
     <!-- DO NOT TRANSLATE. Internal key for a visual voicemail preference. -->
     <string name="voicemail_visual_voicemail_key">voicemail_visual_voicemail_key</string>
+    <!-- DO NOT TRANSLATE. Internal key for a voicemail change pin preference. -->
+    <string name="voicemail_change_pin_key">voicemail_change_pin_key</string>
     <!-- DO NOT TRANSLATE. Internal key for tty mode preference. -->
     <string name="tty_mode_key">button_tty_mode_key</string>
     <!-- DO NOT TRANSLATE. Internal key for a voicemail notification preference. -->
     <string name="wifi_calling_settings_key">button_wifi_calling_settings_key</string>
 
     <!-- Hint appearing below a selected action on the emergency dialer telling user to tap again to execute the action [CHAR LIMIT=NONE] -->
-    <string name="emergency_action_launch_hint">Touch again to open</string>
+    <string name="emergency_action_launch_hint">Tap again to open</string>
 
     <!-- Strings for IMAP -->
 
@@ -1308,4 +1362,52 @@
         A SIM card has activated your service and updated your phone\'s roaming capabilities.
     </string>
 
+    <!-- Call failure reason: Cannot add a call because there are already too many active calls. -->
+    <string name="callFailed_cdma_call_limit">
+        There are too many active calls. Please end or merge existing calls before placing a new one.
+    </string>
+
+    <!-- Call failure reason: If the network does not accept the emergency call request, e.g., because IMEI was used as identification and this capability is not supported -->
+    <string name="callFailed_imei_not_accepted">
+        Unable to connect, please insert a valid SIM card.
+    </string>
+
+    <!-- Call failure reason displayed when an in-progress WIFI call fails due to a loss of WIFI
+         connectivity, or the WIFI signal has degraded to the point the call cannot continue. -->
+    <string name="callFailed_wifi_lost">
+        Wi-Fi connection lost.  Call ended.
+    </string>
+
+    <!-- Call failure reason displayed when the user's outgoing call cannot be placed due to a low
+         battery. -->
+    <string name="dialFailed_low_battery">Your video call cannot be placed due to low battery.</string>
+
+    <!-- Call failure reason displayed when the user's call is ended due to a low battery. This
+         message is shown when an in-progress call is ended due to the battery being low. -->
+    <string name="callFailed_low_battery">Video call ended due to low battery.</string>
+
+    <!-- The title for the change voicemail PIN activity -->
+    <string name="change_pin_title">Change Voicemail PIN</string>
+    <!-- The label for the continue button in change voicemail PIN activity -->
+    <string name="change_pin_continue_label">Continue</string>
+    <!-- The label for the cancel button in change voicemail PIN activity -->
+    <string name="change_pin_cancel_label">Cancel</string>
+    <!-- The label for the ok button in change voicemail PIN activity -->
+    <string name="change_pin_ok_label">Ok</string>
+    <!-- The title for the enter old pin step in change voicemail PIN activity -->
+    <string name="change_pin_enter_old_pin_header">Confirm your old PIN</string>
+    <!-- The hint for the enter old pin step in change voicemail PIN activity -->
+    <string name="change_pin_enter_old_pin_hint">Enter your voicemail PIN to continue.</string>
+    <!-- The title for the enter new pin step in change voicemail PIN activity -->
+    <string name="change_pin_enter_new_pin_header">Set a new PIN</string>
+    <!-- The hint for the enter new pin step in change voicemail PIN activity -->
+    <string name="change_pin_enter_new_pin_hint">PIN must be <xliff:g id="min" example="4">%1$d</xliff:g>-<xliff:g id="max" example="7">%2$d</xliff:g> digits.</string>
+    <!-- The title for the confirm new pin step in change voicemail PIN activity -->
+    <string name="change_pin_confirm_pin_header">Confirm your PIN</string>
+    <!-- The error message for th confirm new pin step in change voicemail PIN activity, if the pin doen't match the one previously entered -->
+    <string name="change_pin_confirm_pins_dont_match">PINs don\'t match</string>
+    <!-- The toast to show after the voicemail PIN has been successfully changed -->
+    <string name="change_pin_succeeded">Voicemail PIN updated</string>
+    <!-- The error message to show if the server reported an error while attempting to change the voicemail PIN -->
+    <string name="change_pin_system_error">Unable to set PIN</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 9d2d47f..057352d 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -153,13 +153,6 @@
         <item name="android:layout_marginEnd">5dip</item>
     </style>
 
-    <!-- Theme for the activity com.android.phone.Settings, which is the
-         "Mobile network settings" screen (used on non-voice-capable
-         tablets as well as regular phone devices.) -->
-    <style name="Theme.Settings" parent="@android:style/Theme.Holo.DialogWhenLarge">
-        <item name="android:windowCloseOnTouchOutside">true</item>
-    </style>
-
     <style name="SettingsLight" parent="android:Theme.Material.Light">
         <item name="android:windowBackground">@color/phone_settings_background_color</item>
         <item name="android:windowContentOverlay">@null</item>
@@ -186,11 +179,7 @@
         <item name="android:textColor">?android:attr/textColorPrimaryInverseDisableOnly</item>
     </style>
 
-    <style name="NetworkOperatorsSettingsTheme" parent="@android:style/Theme.Material.Light">
-        <item name="android:actionBarTheme">@android:style/ThemeOverlay.Material.Dark.ActionBar</item>
-        <item name="android:colorPrimary">@color/network_operators_color_primary</item>
-        <item name="android:colorPrimaryDark">@color/network_operators_color_primary_dark</item>
-    </style>
+    <style name="NetworkOperatorsSettingsTheme" parent="@android:style/Theme.DeviceDefault.Settings" />
 
     <style name="Empty" parent="@android:style/Theme.Material.Light">
         <item name="android:windowIsTranslucent">true</item>
@@ -256,10 +245,9 @@
         <item name="android:src">@drawable/overflow_menu</item>
     </style>
 
-    <style name="EmergencyDialerTheme" parent="@android:style/Theme.Material.NoActionBar">
-        <item name="android:colorPrimary">@color/emergency_dialer_background</item>
-        <item name="android:colorPrimaryDark">@color/emergency_dialer_background</item>
-        <item name="android:windowBackground">@color/emergency_dialer_background</item>
+    <style name="EmergencyDialerTheme" parent="@*android:style/Theme.DeviceDefault.Settings.Dark.NoActionBar">
+        <item name="android:colorPrimaryDark">?android:attr/colorPrimary</item>
+        <item name="android:windowBackground">?android:attr/colorPrimary</item>
         <item name="android:statusBarColor">@android:color/transparent</item>
         <item name="android:navigationBarColor">@android:color/transparent</item>
         <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
@@ -296,8 +284,4 @@
         <item name="android:backgroundDimEnabled">false</item>
     </style>
 
-    <style name="Theme.Material.Settings" parent="@android:style/Theme.Material.Settings">
-        <item name="@*android:actionBarSize">56dip</item>
-        <item name="preferenceBackgroundColor">@drawable/preference_background</item>
-    </style>
 </resources>
diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml
index a67e2ad..2c007f6 100644
--- a/res/xml/accessibility_settings.xml
+++ b/res/xml/accessibility_settings.xml
@@ -26,7 +26,7 @@
         android:entries="@array/tty_mode_entries"
         android:entryValues="@array/tty_mode_values"/>
 
-    <CheckBoxPreference
+    <SwitchPreference
         android:key="button_hac_key"
         android:title="@string/hac_mode_title"
         android:persistent="true"
diff --git a/res/xml/call_feature_setting.xml b/res/xml/call_feature_setting.xml
index 6471b16..72be17c 100644
--- a/res/xml/call_feature_setting.xml
+++ b/res/xml/call_feature_setting.xml
@@ -46,13 +46,13 @@
 
     </PreferenceScreen>
 
-    <CheckBoxPreference
+    <SwitchPreference
         android:key="button_enable_video_calling"
         android:title="@string/enable_video_calling_title"
         android:persistent="true"
         android:defaultValue="true" />
 
-    <CheckBoxPreference
+    <SwitchPreference
         android:key="button_auto_retry_key"
         android:title="@string/auto_retry_mode_title"
         android:persistent="false"
diff --git a/res/xml/carrier_select.xml b/res/xml/carrier_select.xml
index bc223f1..1e04285 100644
--- a/res/xml/carrier_select.xml
+++ b/res/xml/carrier_select.xml
@@ -24,6 +24,5 @@
     <Preference 
         android:key="button_auto_select_key" 
         android:title="@string/select_automatically"
-        android:summary="@string/sum_select_automatically"
         android:persistent="false"/>
 </PreferenceScreen>
diff --git a/res/xml/cdma_call_privacy.xml b/res/xml/cdma_call_privacy.xml
index f1a4c94..ca24d20 100644
--- a/res/xml/cdma_call_privacy.xml
+++ b/res/xml/cdma_call_privacy.xml
@@ -3,7 +3,7 @@
         xmlns:settings="http://schemas.android.com/apk/res/com.android.phone"
         android:title="@string/additional_cdma_call_settings">
 
-    <com.android.phone.CdmaVoicePrivacyCheckBoxPreference
+    <com.android.phone.CdmaVoicePrivacySwitchPreference
         android:key="button_voice_privacy_key"
         android:title="@string/voice_privacy"
         android:persistent="false"
diff --git a/res/xml/cdma_options.xml b/res/xml/cdma_options.xml
index 78e3630..c86787b 100644
--- a/res/xml/cdma_options.xml
+++ b/res/xml/cdma_options.xml
@@ -43,14 +43,6 @@
     </PreferenceScreen>
 
     <PreferenceScreen
-        android:key="cdma_activate_device_key"
-        android:title="@string/cdma_activate_device">
-        <intent android:action="com.android.phone.PERFORM_VOICELESS_CDMA_PROVISIONING">
-            <extra android:name="autoStart" android:value="true" />
-        </intent>
-    </PreferenceScreen>
-
-    <PreferenceScreen
         android:key="carrier_settings_key"
         android:title="@string/carrier_settings_title">
         <intent android:action="android.intent.action.MAIN"
diff --git a/res/xml/cell_broadcast_sms.xml b/res/xml/cell_broadcast_sms.xml
deleted file mode 100644
index 4b36d52..0000000
--- a/res/xml/cell_broadcast_sms.xml
+++ /dev/null
@@ -1,317 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:settings="http://schemas.android.com/apk/res/com.android.phone">
-        
-    <PreferenceCategory 
-        android:title="@string/cell_broadcast_sms">
-            
-    <CheckBoxPreference 
-        android:key="button_enable_disable_cell_bc_sms" 
-        android:title="@string/enable_disable_cell_bc_sms"
-        android:persistent="false"
-        android:summaryOn="@string/cell_bc_sms_enable"
-        android:summaryOff="@string/cell_bc_sms_disable"/>
-    
-    </PreferenceCategory>
-    
-    <PreferenceCategory
-            android:title="@string/cb_sms_settings">
-        
-        <ListPreference
-            android:key="list_language" 
-            android:title="@string/list_language_title"
-            android:summary="@string/list_language_summary"
-            android:entries="@array/list_language_entries"
-            android:entryValues="@array/list_language_values"
-            android:dialogTitle="@string/list_language_dtitle"/>
-            
-        <CheckBoxPreference 
-                android:key="button_emergency_broadcast" 
-                android:title="@string/enable_disable_emergency_broadcast"
-                android:persistent="false"
-                android:summaryOn="@string/emergency_broadcast_enable"
-                android:summaryOff="@string/emergency_broadcast_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_administrative" 
-                android:title="@string/enable_disable_administrative"
-                android:persistent="false"
-                android:summaryOn="@string/administrative_enable"
-                android:summaryOff="@string/administrative_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_maintenance" 
-                android:title="@string/enable_disable_maintenance"
-                android:persistent="false"
-                android:summaryOn="@string/maintenance_enable"
-                android:summaryOff="@string/maintenance_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_local_weather" 
-                android:title="@string/enable_disable_local_weather"
-                android:persistent="false"
-                android:summaryOn="@string/local_weather_enable"
-                android:summaryOff="@string/local_weather_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_atr" 
-                android:title="@string/enable_disable_atr"
-                android:persistent="false"
-                android:summaryOn="@string/atr_enable"
-                android:summaryOff="@string/atr_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_lafs" 
-                android:title="@string/enable_disable_lafs"
-                android:persistent="false"
-                android:summaryOn="@string/lafs_enable"
-                android:summaryOff="@string/lafs_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_restaurants" 
-                android:title="@string/enable_disable_restaurants"
-                android:persistent="false"
-                android:summaryOn="@string/restaurants_enable"
-                android:summaryOff="@string/restaurants_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_lodgings" 
-                android:title="@string/enable_disable_lodgings"
-                android:persistent="false"
-                android:summaryOn="@string/lodgings_enable"
-                android:summaryOff="@string/lodgings_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_retail_directory" 
-                android:title="@string/enable_disable_retail_directory"
-                android:persistent="false"
-                android:summaryOn="@string/retail_directory_enable"
-                android:summaryOff="@string/retail_directory_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_advertisements" 
-                android:title="@string/enable_disable_advertisements"
-                android:persistent="false"
-                android:summaryOn="@string/advertisements_enable"
-                android:summaryOff="@string/advertisements_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_stock_quotes" 
-                android:title="@string/enable_disable_stock_quotes"
-                android:persistent="false"
-                android:summaryOn="@string/stock_quotes_enable"
-                android:summaryOff="@string/stock_quotes_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_eo" 
-                android:title="@string/enable_disable_eo"
-                android:persistent="false"
-                android:summaryOn="@string/eo_enable"
-                android:summaryOff="@string/eo_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_mhh" 
-                android:title="@string/enable_disable_mhh"
-                android:persistent="false"
-                android:summaryOn="@string/mhh_enable"
-                android:summaryOff="@string/mhh_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_technology_news" 
-                android:title="@string/enable_disable_technology_news"
-                android:persistent="false"
-                android:summaryOn="@string/technology_news_enable"
-                android:summaryOff="@string/technology_news_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_multi_category" 
-                android:title="@string/enable_disable_multi_category"
-                android:persistent="false"
-                android:summaryOn="@string/multi_category_enable"
-                android:summaryOff="@string/multi_category_disable"/>
-                
-    </PreferenceCategory>
-    
-    <PreferenceCategory
-            android:title="@string/general_news_settings">
-        
-        <CheckBoxPreference 
-                android:key="button_local_general_news" 
-                android:title="@string/enable_disable_local"
-                android:persistent="false"
-                android:summaryOn="@string/local_enable"
-                android:summaryOff="@string/local_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_regional_general_news" 
-                android:title="@string/enable_disable_regional"
-                android:persistent="false"
-                android:summaryOn="@string/regional_enable"
-                android:summaryOff="@string/regional_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_national_general_news" 
-                android:title="@string/enable_disable_national"
-                android:persistent="false"
-                android:summaryOn="@string/national_enable"
-                android:summaryOff="@string/national_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_international_general_news" 
-                android:title="@string/enable_disable_international"
-                android:persistent="false"
-                android:summaryOn="@string/international_enable"
-                android:summaryOff="@string/international_disable"/>
-        <!--
-        <ListPreference 
-                android:key="list_general_news"
-                android:title="@string/general_news_title"
-                android:summary="@string/general_news_summary"
-                android:entries="@array/general_news_entries"
-                android:entryValues="@array/general_news_entryvalues"
-                android:dialogTitle="@string/general_news_dialogtitle"/> -->
-                
-    </PreferenceCategory>
-    
-    <PreferenceCategory
-            android:title="@string/bf_news_settings">
-        
-        <CheckBoxPreference 
-                android:key="button_local_bf_news" 
-                android:title="@string/enable_disable_local"
-                android:persistent="false"
-                android:summaryOn="@string/local_enable"
-                android:summaryOff="@string/local_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_regional_bf_news" 
-                android:title="@string/enable_disable_regional"
-                android:persistent="false"
-                android:summaryOn="@string/regional_enable"
-                android:summaryOff="@string/regional_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_national_bf_news" 
-                android:title="@string/enable_disable_national"
-                android:persistent="false"
-                android:summaryOn="@string/national_enable"
-                android:summaryOff="@string/national_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_international_bf_news" 
-                android:title="@string/enable_disable_international"
-                android:persistent="false"
-                android:summaryOn="@string/international_enable"
-                android:summaryOff="@string/international_disable"/>
-                
-        <!--    
-        <ListPreference 
-                android:key="list_bf"
-                android:title="@string/bf_news_title"
-                android:summary="@string/bf_news_summary"
-                android:entries="@array/bf_news_entries"
-                android:entryValues="@array/bf_news_entryvalues"
-                android:dialogTitle="@string/bf_news_dialogtitle"/> -->
-    
-    </PreferenceCategory>
-    
-    <PreferenceCategory
-            android:title="@string/sports_news_settings">
-        
-        <CheckBoxPreference 
-                android:key="button_local_sports_news" 
-                android:title="@string/enable_disable_local"
-                android:persistent="false"
-                android:summaryOn="@string/local_enable"
-                android:summaryOff="@string/local_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_regional_sports_news" 
-                android:title="@string/enable_disable_regional"
-                android:persistent="false"
-                android:summaryOn="@string/regional_enable"
-                android:summaryOff="@string/regional_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_national_sports_news" 
-                android:title="@string/enable_disable_national"
-                android:persistent="false"
-                android:summaryOn="@string/national_enable"
-                android:summaryOff="@string/national_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_international_sports_news" 
-                android:title="@string/enable_disable_international"
-                android:persistent="false"
-                android:summaryOn="@string/international_enable"
-                android:summaryOff="@string/international_disable"/>
-                
-        <!--    
-        <ListPreference 
-                android:key="list_sports_news"
-                android:title="@string/sports_news_title"
-                android:summary="@string/sports_news_summary"
-                android:entries="@array/sports_news_entries"
-                android:entryValues="@array/sports_news_entryvalues"
-                android:dialogTitle="@string/sports_news_dialogtitle"/> -->
-                
-    </PreferenceCategory>
-    
-    <PreferenceCategory
-            android:title="@string/entertainment_news_settings">
-        
-        <CheckBoxPreference 
-                android:key="button_local_entertainment_news" 
-                android:title="@string/enable_disable_local"
-                android:persistent="false"
-                android:summaryOn="@string/local_enable"
-                android:summaryOff="@string/local_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_regional_entertainment_news" 
-                android:title="@string/enable_disable_regional"
-                android:persistent="false"
-                android:summaryOn="@string/regional_enable"
-                android:summaryOff="@string/regional_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_national_entertainment_news" 
-                android:title="@string/enable_disable_national"
-                android:persistent="false"
-                android:summaryOn="@string/national_enable"
-                android:summaryOff="@string/national_disable"/>
-                
-        <CheckBoxPreference 
-                android:key="button_international_entertainment_news" 
-                android:title="@string/enable_disable_international"
-                android:persistent="false"
-                android:summaryOn="@string/international_enable"
-                android:summaryOff="@string/international_disable"/>
-                
-        <!--    
-        <ListPreference 
-                android:key="list_entertainment_news"
-                android:title="@string/entertainment_news_title"
-                android:summary="@string/entertainment_news_summary"
-                android:entries="@array/entertainment_news_entries"
-                android:entryValues="@array/entertainment_news_entryvalues"
-                android:dialogTitle="@string/entertainment_news_dialogtitle"/> -->
-                
-    </PreferenceCategory>
-
-</PreferenceScreen>   
diff --git a/res/xml/gsm_umts_additional_options.xml b/res/xml/gsm_umts_additional_options.xml
index f2234e3..33b0769 100644
--- a/res/xml/gsm_umts_additional_options.xml
+++ b/res/xml/gsm_umts_additional_options.xml
@@ -14,7 +14,7 @@
         android:summary="@string/sum_loading_settings"
         android:enabled="false"/>
 
-    <com.android.phone.CallWaitingCheckBoxPreference
+    <com.android.phone.CallWaitingSwitchPreference
         android:key="button_cw_key"
         android:title="@string/labelCW"
         android:persistent="false"
diff --git a/res/xml/network_setting.xml b/res/xml/network_setting_fragment.xml
similarity index 97%
rename from res/xml/network_setting.xml
rename to res/xml/network_setting_fragment.xml
index 58c19f7..875e1f3 100644
--- a/res/xml/network_setting.xml
+++ b/res/xml/network_setting_fragment.xml
@@ -21,7 +21,7 @@
         android:title="@string/cdma_lte_data_service">
     </PreferenceScreen>
 
-    <SwitchPreference
+    <com.android.phone.RestrictedSwitchPreference
         android:key="button_roaming_key"
         android:title="@string/roaming"
         android:persistent="false"
diff --git a/res/xml/phone_account_settings.xml b/res/xml/phone_account_settings.xml
index 27da54c..8e0d17a 100644
--- a/res/xml/phone_account_settings.xml
+++ b/res/xml/phone_account_settings.xml
@@ -64,7 +64,7 @@
             android:entries="@array/sip_call_options_entries"
             android:entryValues="@array/sip_call_options_values"/>
 
-        <CheckBoxPreference
+        <SwitchPreference
             android:key="sip_receive_calls_key"
             android:title="@string/sip_receive_calls"
             android:summary="@string/sip_receive_calls_summary"
diff --git a/res/xml/voicemail_settings.xml b/res/xml/voicemail_settings.xml
index 9334566..021a764 100644
--- a/res/xml/voicemail_settings.xml
+++ b/res/xml/voicemail_settings.xml
@@ -50,18 +50,7 @@
 
     </PreferenceScreen>
 
-    <com.android.phone.settings.VoicemailRingtonePreference
-        android:key="@string/voicemail_notification_ringtone_key"
-        android:title="@string/voicemail_notification_ringtone_title"
-        android:persistent="false"
-        android:ringtoneType="notification" />
-
-    <CheckBoxPreference
-        android:key="@string/voicemail_notification_vibrate_key"
-        android:title="@string/voicemail_notification_vibrate_when_title"
-        android:persistent="true" />
-    <SwitchPreference
-        android:key="@string/voicemail_visual_voicemail_key"
-        android:title="@string/voicemail_visual_voicemail_switch_title" />"
-
+    <Preference
+        android:key="@string/voicemail_notifications_key"
+        android:title="@string/voicemail_notifications_preference_title"/>
 </PreferenceScreen>
diff --git a/sip/proguard.flags b/sip/proguard.flags
index 23ae8c1..1c380ed 100644
--- a/sip/proguard.flags
+++ b/sip/proguard.flags
@@ -1,3 +1,3 @@
 -verbose
 -keep class com.android.services.telephony.sip.SipConnectionService
--keep class com.android.services.telephony.sip.SipBroadcastReceiver
+-keep class com.android.services.telephony.sip.SipIncomingCallReceiver
diff --git a/sip/res/values-af/strings.xml b/sip/res/values-af/strings.xml
index 0a3a023..569953e 100644
--- a/sip/res/values-af/strings.xml
+++ b/sip/res/values-af/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Opsionele instellings"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Stawinggebruikernaam"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Gebruikernaam gebruik vir stawing"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nie gestel nie&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nie gestel nie&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nie gestel nie&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nie gestel nie&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Dieselfde as gebruikernaam&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opsioneel&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Raak om almal te wys"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Raak om almal te versteek"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Voer besonderhede van nuwe SIP-rekening in."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> word vereis en kan nie leeg wees nie."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Poortnommer moet tussen 1000 en 65534 wees."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Gaan eers jou internetverbinding na om \'n SIP-oproep te maak."</string>
diff --git a/sip/res/values-am/strings.xml b/sip/res/values-am/strings.xml
index 33afdda..9f86bff 100644
--- a/sip/res/values-am/strings.xml
+++ b/sip/res/values-am/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"አማራጭ ቅንብሮች"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"የማረጋገጫ  የተጠቃሚ ስም"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"ተጠቃሚ ስም ለማረጋገጫ ተጠቅሟል"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;አልተዘጋጀም&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;አልተዘጋጀም&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;አልተዘጋጀም&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;አልተዘጋጀም&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ከተጠቃሚ ስም ጋር አንድ አይነት&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;አስገዳጅ ያልሆነ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"ሁሉን ለማሳየት ▷ ይንኩ"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"ሁሉንም ለመደበቅ ▽ ይንኩ"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"አዲስ የSIP መለያ ዝርዝሮችን ያስገቡ።"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ይጠይቃል፣ ባዶ መተው አይቻልም።"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"የወደብ ቁጥር በ1000 እና 65534 ውስጥ መሆን አለበት።"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"የSIP ጥሪ ለማድረግ፣ በመጀመሪያ የበይነመረብ ግንኙነትዎን ይፈትሹ።"</string>
diff --git a/sip/res/values-ar/strings.xml b/sip/res/values-ar/strings.xml
index 6c4be12..1544bfd 100644
--- a/sip/res/values-ar/strings.xml
+++ b/sip/res/values-ar/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"الإعدادات الاختيارية"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"اسم المستخدِم للمصادقة"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"اسم المستخدِم المستخدَم للمصادقة"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"‏&lt;لم يتم التعيين&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"‏&lt;لم يتم التعيين&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"‏&lt;لم يتم التعيين&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"‏&lt;لم يتم التعيين&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"‏&lt;مثل اسم المستخدم&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"‏&lt;اختياري&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ المس لإظهار الكل"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ المس لإخفاء الكل"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"‏أدخل تفاصيل حساب SIP الجديد."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> مطلوب ولا يمكن تركه فارغًا."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"يجب أن يكون رقم المنفذ ما بين 1000 و65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"‏لإجراء اتصال SIP، تحقق من الاتصال بالإنترنت أولاً."</string>
diff --git a/sip/res/values-az-rAZ/strings.xml b/sip/res/values-az/strings.xml
similarity index 93%
rename from sip/res/values-az-rAZ/strings.xml
rename to sip/res/values-az/strings.xml
index 7f5f340..4e88535 100644
--- a/sip/res/values-az-rAZ/strings.xml
+++ b/sip/res/values-az/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Əlavə seçimlər"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Autentifikasiya istifadəçi adı"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Autentifikasiya üçün istifadə edilən istifadəçi adı"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Təyin edilməyib&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Təyin edilməyib&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Təyin edilməyib&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Təyin edilməyib&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;İstifadəçi adı ilə eyni&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;İstəyə görə&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"Hamısını göstərmək üçün toxunun ▷"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"Hamısını gizlətmək üçün toxunun ▽"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Yeni SIP hesabından detalları daxil edin."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> tələb olunur və boş buraxıla bilməz."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Port 1000 və 65534 arasında olmalıdır."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP zəngini yerləşdirmək üçün əvvəlcə İnternet bağlantınızı yoxlayın."</string>
diff --git a/sip/res/values-b+sr+Latn/strings.xml b/sip/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..740a3d7
--- /dev/null
+++ b/sip/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sip_settings" msgid="3768482698061677257">"Podešavanja SIP-a"</string>
+    <string name="sip_accounts" msgid="85559497282185405">"SIP nalozi"</string>
+    <string name="sip_accounts_title" msgid="2082527045326874519">"Nalozi"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Primaj dolazne pozive"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Više troši bateriju"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Koristite SIP pozive"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Koristite SIP pozive (samo za Wi-Fi)"</string>
+    <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Za sve pozive kada je mreža za prenos podataka dostupna"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Samo za SIP pozive"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Za sve pozive"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"Dodaj nalog"</string>
+    <string name="remove_sip_account" msgid="1367664438506503690">"Ukloni nalog"</string>
+    <string name="sip_account_list" msgid="5610858485304821480">"SIP nalozi"</string>
+    <string name="saving_account" msgid="5336529880235177448">"Čuvanje naloga..."</string>
+    <string name="removing_account" msgid="5537351356808985756">"Uklanjanje naloga..."</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"Sačuvaj"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"Odbaci"</string>
+    <string name="alert_dialog_close" msgid="1326011828713435134">"Zatvorite profil"</string>
+    <string name="alert_dialog_ok" msgid="4752048404605388940">"Potvrdi"</string>
+    <string name="close_profile" msgid="3122414058856309881">"Zatvori"</string>
+    <string name="registration_status_checking_status" msgid="6136793741862200337">"Provera statusa..."</string>
+    <string name="registration_status_registering" msgid="2677183977796278749">"Registrovanje..."</string>
+    <string name="registration_status_still_trying" msgid="7648151061205513458">"I dalje pokušava..."</string>
+    <string name="registration_status_not_receiving" msgid="7620333886153361090">"Ne primamo pozive."</string>
+    <string name="registration_status_no_data" msgid="2541999976218192413">"Registracija naloga je zaustavljena zato što ne postoji internet veza."</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Registracija naloga je zaustavljena zato što ne postoji Wi-Fi veza."</string>
+    <string name="registration_status_not_running" msgid="514205414303796800">"Registracija naloga nije uspela."</string>
+    <string name="registration_status_done" msgid="3264961069247314253">"Primamo pozive."</string>
+    <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Registracija naloga nije uspela: <xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>; pokušaćemo kasnije"</string>
+    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Registracija naloga nije uspela: netačno korisničko ime ili lozinka."</string>
+    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Registracija naloga nije uspela: Proverite naziv servera."</string>
+    <string name="third_party_account_summary" msgid="9041060473615403041">"Ovaj nalog trenutno koristi aplikacija <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Detalji o SIP nalogu"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Detalji o SIP nalogu"</string>
+    <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
+    <string name="username_title" msgid="6770064611005663470">"Korisničko ime"</string>
+    <string name="password_title" msgid="5289013731515564295">"Lozinka"</string>
+    <string name="display_name_title" msgid="579241787583079773">"Ime za prikaz"</string>
+    <string name="proxy_address_title" msgid="6890163365640631841">"Odlazna adresa proksija"</string>
+    <string name="port_title" msgid="6693965912656593862">"Broj porta"</string>
+    <string name="transport_title" msgid="889155457465372527">"Tip prenosa"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"Pošalji keep-alive poruku"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"Opcionalna podešavanja"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"Korisničko ime za potvrdu identiteta"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"Za potvrdu identiteta koristi se korisničko ime"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nije podešeno&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nije podešena&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nije podešena&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;Isto kao korisničko ime&gt;"</string>
+    <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcionalno&gt;"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dodirnite da biste prikazali sve"</string>
+    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dodirnite da biste sakrili sve"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Unesite detalje o novom SIP nalogu."</string>
+    <string name="empty_alert" msgid="6659484914371384024">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je obavezno i ne može da bude prazno."</string>
+    <string name="not_a_valid_port" msgid="7931422555587011830">"Broj porta bi trebalo da bude između 1000 i 65.534."</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"Da biste uputili SIP poziv, prvo proverite internet vezu."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"Treba da budete povezani sa Wi-Fi mrežom da biste upućivali SIP pozive (koristite Podešavanja bežičnih veza i mreža)."</string>
+    <string name="no_voip" msgid="3038021971231952704">"SIP pozivanje nije podržano"</string>
+    <string name="sip_system_decide" msgid="5577696249416700671">"Automatski"</string>
+    <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Uvek šalji"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"Ugrađena funkcija SIP poziva"</string>
+</resources>
diff --git a/sip/res/values-be/strings.xml b/sip/res/values-be/strings.xml
new file mode 100644
index 0000000..a848c52
--- /dev/null
+++ b/sip/res/values-be/strings.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sip_settings" msgid="3768482698061677257">"Налады SIP"</string>
+    <string name="sip_accounts" msgid="85559497282185405">"Уліковыя запісы SIP"</string>
+    <string name="sip_accounts_title" msgid="2082527045326874519">"Уліковыя запісы"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Прымаць уваходныя выклікі"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Спажывае больш зараду акумулятара"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Выкарыстоўваць SIP-выклікі"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Выкарыстоўваць SIP-выклікі (толькі Wi-Fi)"</string>
+    <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Для ўсіх выклікаў, калі ёсць падлучэнне да сеткі перадачы даных"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Толькі для SIP-выклікаў"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Для ўсіх выклікаў"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"Дадаць уліковы запіс"</string>
+    <string name="remove_sip_account" msgid="1367664438506503690">"Выдаліць уліковы запіс"</string>
+    <string name="sip_account_list" msgid="5610858485304821480">"Уліковыя запісы SIP"</string>
+    <string name="saving_account" msgid="5336529880235177448">"Захаванне ўліковага запісу..."</string>
+    <string name="removing_account" msgid="5537351356808985756">"Выдаленне ўліковага запісу..."</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"Захаваць"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"Скасаваць"</string>
+    <string name="alert_dialog_close" msgid="1326011828713435134">"Закрыць профіль"</string>
+    <string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
+    <string name="close_profile" msgid="3122414058856309881">"Закрыць"</string>
+    <string name="registration_status_checking_status" msgid="6136793741862200337">"Праверка стану..."</string>
+    <string name="registration_status_registering" msgid="2677183977796278749">"Рэгістрацыя..."</string>
+    <string name="registration_status_still_trying" msgid="7648151061205513458">"Спробы працягваюцца..."</string>
+    <string name="registration_status_not_receiving" msgid="7620333886153361090">"Выклікі не прымаюцца."</string>
+    <string name="registration_status_no_data" msgid="2541999976218192413">"Рэгістрацыя ўліковага запісу спынена, таму што няма падлучэння да інтэрнэту."</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Рэгістрацыя ўліковага запісу спынена, таму што няма падлучэння да Wi-Fi."</string>
+    <string name="registration_status_not_running" msgid="514205414303796800">"Няўдалая рэгістрацыя ўліковага запісу."</string>
+    <string name="registration_status_done" msgid="3264961069247314253">"Прыём выклікаў."</string>
+    <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Няўдалая рэгістрацыя ўліковага запісу: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); спроба будзе паўторана пазней"</string>
+    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Няўдалая рэгістрацыя ўліковага запісу: няправільнае імя карыстальніка або пароль."</string>
+    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Няўдалая рэгістрацыя ўліковага запісу: праверце імя сервера."</string>
+    <string name="third_party_account_summary" msgid="9041060473615403041">"Гэты ўліковы запіс зараз выкарыстоўваецца праграмай <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Дэталі уліковага запісу SIP"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Дэталі уліковага запісу SIP"</string>
+    <string name="domain_address_title" msgid="1968479941328225423">"Сервер"</string>
+    <string name="username_title" msgid="6770064611005663470">"Імя карыстальніка"</string>
+    <string name="password_title" msgid="5289013731515564295">"Пароль"</string>
+    <string name="display_name_title" msgid="579241787583079773">"Бачнае імя"</string>
+    <string name="proxy_address_title" msgid="6890163365640631841">"Адрас выходнага проксі-сервера"</string>
+    <string name="port_title" msgid="6693965912656593862">"Нумар порта"</string>
+    <string name="transport_title" msgid="889155457465372527">"Тып транспарту"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"Адправіць паведамленне праверкі актыўнасці"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"Неабавязковыя налады"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"Імя карыстальніка для праверкі сапраўднасці"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"Імя карыстальніка, якое выкарыстоўваецца для праверкі сапраўднасці"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Не зададзены&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Не зададзены&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Не зададзены&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;Такі ж, як імя карыстальніка&gt;"</string>
+    <string name="optional_summary" msgid="2363105560396317624">"&lt;Неабавязкова&gt;"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Дакраніцеся, каб паказаць усё"</string>
+    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Дакраніцеся, каб схаваць усё"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Увесці інфармацыю аб новым уліковым запісе SIP."</string>
+    <string name="empty_alert" msgid="6659484914371384024">"Поле <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> з\'яўляецца абавязковым для запаўнення, яго нельга пакідаць пустым."</string>
+    <string name="not_a_valid_port" msgid="7931422555587011830">"Порт павінен мець нумар ад 1000 да 65534."</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"Каб зрабіць SIP-выклік, спачатку праверце інтэрнэт-злучэнне."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"Каб рабіць SIP-выклікі, вы павінны падлучыцца да сеткі Wi-Fi (скарыстайцеся раздзелам \"Бесправадная сувязь і сеткі\")."</string>
+    <string name="no_voip" msgid="3038021971231952704">"SIP-выклікі не падтрымліваюцца"</string>
+    <string name="sip_system_decide" msgid="5577696249416700671">"Аўтаматычна"</string>
+    <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Заўсёды адпраўляць"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"Убудаваныя SIP-выклікі"</string>
+</resources>
diff --git a/sip/res/values-bg/strings.xml b/sip/res/values-bg/strings.xml
index 7e5ac23..d6830ed 100644
--- a/sip/res/values-bg/strings.xml
+++ b/sip/res/values-bg/strings.xml
@@ -48,7 +48,7 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Профилът не бе регистриран успешно: Неправилно потребителско име или парола."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Профилът не бе регистриран успешно: Проверете името на сървъра."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Този профил понастоящем се използва от приложението <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Подробности за профила за SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Профил за SIP"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"Подробности за профила за SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Сървър"</string>
     <string name="username_title" msgid="6770064611005663470">"Потребителско име"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Незадължителни настройки"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Потребит. име за удостоверяване"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Потребителско име, използвано за удостоверяване"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Не е зададено&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Не е зададено&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Не е зададено&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Не е зададено&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Същото като потребителското име&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;По избор&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Докоснете за показване на всички"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Докоснете за скриване на всички"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Въведете подробностите за новия профил за SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Полето „<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>“ е задължително и трябва да се попълни."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Номерът на порта трябва да е между 1000 и 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"За да осъществите обаждане през SIP, първо проверете връзката си с интернет."</string>
diff --git a/sip/res/values-bn-rBD/strings.xml b/sip/res/values-bn/strings.xml
similarity index 88%
rename from sip/res/values-bn-rBD/strings.xml
rename to sip/res/values-bn/strings.xml
index 3cc1e6e..fc238ea 100644
--- a/sip/res/values-bn-rBD/strings.xml
+++ b/sip/res/values-bn/strings.xml
@@ -22,7 +22,7 @@
     <string name="sip_receive_calls" msgid="426678617137462173">"আগত কলগুলি গ্রহণ করুন"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"আরো বেশি ব্যাটারি লাইফ ব্যবহার করে"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP কলিং ব্যবহার করুন"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP কলিং ব্যবহার করুন (শুধুমাত্র Wi-Fi)"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP কলিং ব্যবহার করুন (শুধুমাত্র ওয়াই-ফাই)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"যখন ডেটা নেটওয়ার্ক উপলব্ধ তখন সব কলের জন্য"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"শুধুমাত্র SIP কলগুলির জন্য"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"সব কলের জন্য"</string>
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7648151061205513458">"এখনও চেষ্টা করছে..."</string>
     <string name="registration_status_not_receiving" msgid="7620333886153361090">"কলগুলি গ্রহণ করা হচ্ছে না৷"</string>
     <string name="registration_status_no_data" msgid="2541999976218192413">"কোনো ইন্টারনেট সংযোগ না থাকায় অ্যাকাউন্ট নিবন্ধন করা বন্ধ হয়ে গেছে৷"</string>
-    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"কোনো Wi-Fi সংযোগ না থাকায় অ্যাকাউন্ট নিবন্ধন করা বন্ধ হয়ে গেছে৷"</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"কোনো ওয়াই-ফাই সংযোগ না থাকায় অ্যাকাউন্ট নিবন্ধন করা বন্ধ হয়ে গেছে৷"</string>
     <string name="registration_status_not_running" msgid="514205414303796800">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে৷"</string>
     <string name="registration_status_done" msgid="3264961069247314253">"কলগুলি গ্রহণ করা হচ্ছে৷"</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"অ্যাকাউন্টের নিবন্ধন অসফল হয়েছে: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); পরে আবার চেষ্টা করা হবে"</string>
@@ -61,15 +61,18 @@
     <string name="advanced_settings" msgid="6622996380747040711">"ঐচ্ছিক সেটিংস"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"প্রমাণীকরণের ব্যবহারকারীর নাম"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"প্রমাণীকরণের জন্য ব্যবহৃত ব্যবহারকারী নাম"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;সেট করা নেই&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;সেট করা নেই&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;সেট করা নেই&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;সেট করা নেই&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ব্যবহারকারী নামের অনুরূপ&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ঐচ্ছিক&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ সবকিছু দেখানোর জন্য স্পর্শ করুন"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ সবকিছু লুকানোর জন্য স্পর্শ করুন"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"নতুন SIP অ্যাকাউন্ট সম্বন্ধে বিশদ বিবরণ লিখুন।"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> প্রয়োজনীয় এবং এটিকে ফাঁকা রাখা যাবে না৷"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"পোর্ট নম্বরটিকে ১০০০ ও ৬৫৫৩৪ এর মধ্যে হতে হবে৷"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"একটি SIP কল করতে প্রথমে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন৷"</string>
-    <string name="no_wifi_available" msgid="1955023904229673488">"SIP কলগুলি করার জন্য আপনাকে একটি Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত হতে হবে (ওয়ারলেস নেটওয়ার্ক সেটিংস ব্যবহার করুন)৷"</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"SIP কলগুলি করার জন্য আপনাকে একটি ওয়াই-ফাই নেটওয়ার্কের সাথে সংযুক্ত হতে হবে (ওয়ারলেস নেটওয়ার্ক সেটিংস ব্যবহার করুন)৷"</string>
     <string name="no_voip" msgid="3038021971231952704">"SIP কলিং সমর্থিত নয়"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"স্বয়ংক্রিয়"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"সবসময় পাঠান"</string>
diff --git a/sip/res/values-bs/strings.xml b/sip/res/values-bs/strings.xml
new file mode 100644
index 0000000..84b045e
--- /dev/null
+++ b/sip/res/values-bs/strings.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sip_settings" msgid="3768482698061677257">"SIP postavke"</string>
+    <string name="sip_accounts" msgid="85559497282185405">"SIP računi"</string>
+    <string name="sip_accounts_title" msgid="2082527045326874519">"Računi"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Primi dolazne pozive"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Troši više baterije"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Koristi SIP pozivanje"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Koristi SIP pozivanje (samo Wi-Fi)"</string>
+    <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Za sve pozive kada je podatkovna mreža dostupna"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Samo za SIP pozive"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Za sve pozive"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"Dodaj račun"</string>
+    <string name="remove_sip_account" msgid="1367664438506503690">"Ukloni račun"</string>
+    <string name="sip_account_list" msgid="5610858485304821480">"SIP računi"</string>
+    <string name="saving_account" msgid="5336529880235177448">"Spremanje računa u toku…"</string>
+    <string name="removing_account" msgid="5537351356808985756">"Račun se uklanja…"</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"Sačuvaj"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"Odbaci"</string>
+    <string name="alert_dialog_close" msgid="1326011828713435134">"Zatvori profil"</string>
+    <string name="alert_dialog_ok" msgid="4752048404605388940">"Uredu"</string>
+    <string name="close_profile" msgid="3122414058856309881">"Zatvori"</string>
+    <string name="registration_status_checking_status" msgid="6136793741862200337">"Provjera statusa u toku..."</string>
+    <string name="registration_status_registering" msgid="2677183977796278749">"Registriranje u toku…"</string>
+    <string name="registration_status_still_trying" msgid="7648151061205513458">"Još uvijek pokušavamo…"</string>
+    <string name="registration_status_not_receiving" msgid="7620333886153361090">"Ne prima pozive."</string>
+    <string name="registration_status_no_data" msgid="2541999976218192413">"Registracija računa je zaustavljena jer niste povezani na internet."</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Registracija računa je zaustavljena jer nema Wi-Fi veze."</string>
+    <string name="registration_status_not_running" msgid="514205414303796800">"Registracija računa neuspješna."</string>
+    <string name="registration_status_done" msgid="3264961069247314253">"Primanje poziva."</string>
+    <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Registracija računa neuspješna: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); pokušat ćemo kasnije"</string>
+    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Registracija računa neuspješna: netačno korisničko ime ili lozinka."</string>
+    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Registracija računa neuspješna: provjerite naziv servera."</string>
+    <string name="third_party_account_summary" msgid="9041060473615403041">"Ovaj račun trenutno koristi aplikacija <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Detalji o SIP računima"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Detalji o SIP računima"</string>
+    <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
+    <string name="username_title" msgid="6770064611005663470">"Korisničko ime"</string>
+    <string name="password_title" msgid="5289013731515564295">"Lozinka"</string>
+    <string name="display_name_title" msgid="579241787583079773">"Ime za prikaz"</string>
+    <string name="proxy_address_title" msgid="6890163365640631841">"Odlazna proksi adresa"</string>
+    <string name="port_title" msgid="6693965912656593862">"Broj priključka"</string>
+    <string name="transport_title" msgid="889155457465372527">"Vrsta prijenosa"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"Pošalji keep-alive poruku"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"Opcionalne postavke"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"Korisničko ime za provjeru vjerodostojnosti"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"Korisničko ime upotrijebljeno za provjeru vjerodostojnosti"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nije postavljeno&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nije postavljeno&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nije postavljeno&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;Isto kao korisničko ime&gt;"</string>
+    <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcionalno&gt;"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dodirnite da prikažete sve"</string>
+    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dodirnite da sakrijete sve"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Unesite detalje novog SIP računa."</string>
+    <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je obavezno polje i ne može biti prazno."</string>
+    <string name="not_a_valid_port" msgid="7931422555587011830">"Broj priključka treba biti između 1000 i 65534."</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"Da uputite SIP poziv, prvo provjerite internet vezu."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"Trebate biti povezani na Wi-FI mrežu za SIP pozive (koristite postavke Bežično povezivanje i mreža)."</string>
+    <string name="no_voip" msgid="3038021971231952704">"SIP pozivanje nije podržano"</string>
+    <string name="sip_system_decide" msgid="5577696249416700671">"Automatski"</string>
+    <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Uvijek pošalji"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"Ugrađeno SIP pozivanje"</string>
+</resources>
diff --git a/sip/res/values-ca/strings.xml b/sip/res/values-ca/strings.xml
index 4a22672..4b8661f 100644
--- a/sip/res/values-ca/strings.xml
+++ b/sip/res/values-ca/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"Comptes SIP"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Comptes"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Rep trucades entrants"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Fa servir més bateria."</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consumeix més bateria"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"Fes servir trucades SIP"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Fes servir trucades SIP (només Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Per a totes les trucades quan hi hagi xarxes de dades disponibles"</string>
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"S\'ha produït un error en registrar el compte: el nom d\'usuari o la contrasenya no són correctes."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"S\'ha produït un error en registrar el compte: comprova el nom del servidor."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"L\'aplicació <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> està utilitzant aquest compte actualment."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Detalls del compte SIP"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Detalls del compte SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Compte SIP"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Compte SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Servidor"</string>
     <string name="username_title" msgid="6770064611005663470">"Nom d\'usuari"</string>
     <string name="password_title" msgid="5289013731515564295">"Contrasenya"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Configuració opcional"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nom d\'usuari per a l\'autenticació"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nom d\'usuari utilitzat per a l\'autenticació"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;No definit&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;No definit&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;No definit&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;No definit&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual que el nom d\'usuari&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toca per mostrar-ho tot."</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toca per mostrar-ho tot"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toca per amagar-ho tot."</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Introdueix els detalls del compte SIP nou."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> és obligatori i no es pot deixar en blanc."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"El número de port hauria d\'estar entre 1000 i 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Per fer una trucada SIP, comprova la connexió a Internet."</string>
diff --git a/sip/res/values-cs/strings.xml b/sip/res/values-cs/strings.xml
index fdb0e50..0b71b53 100644
--- a/sip/res/values-cs/strings.xml
+++ b/sip/res/values-cs/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Nepovinná nastavení"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Ověřovací uživatelské jméno"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Uživatelské jméno používané k ověření"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nenastaveno&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nenastaveno&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nenastaveno&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nenastaveno&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Stejné jako uživatelské jméno&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Nepovinné&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Výběrem této položky zobrazíte všechna nastavení"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Výběrem této položky skryjete všechna nastavení"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Zadejte podrobnosti nového účtu SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je povinné. Nelze je ponechat prázdné."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Číslo portu by mělo být od 1000 do 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Chcete-li uskutečnit volání SIP, nejdříve si zkontrolujte připojení k internetu."</string>
diff --git a/sip/res/values-da/strings.xml b/sip/res/values-da/strings.xml
index 462435e..94fef38 100644
--- a/sip/res/values-da/strings.xml
+++ b/sip/res/values-da/strings.xml
@@ -25,7 +25,7 @@
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Anvend SIP-opkald (kun Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Gælder alle opkald ved tilgængeligt datanetværk"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Kun for SIP-opkald"</string>
-    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Gælder alle opkald"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"For alle opkald"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Tilføj konto"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Fjern konto"</string>
     <string name="sip_account_list" msgid="5610858485304821480">"SIP-konti"</string>
@@ -46,7 +46,7 @@
     <string name="registration_status_done" msgid="3264961069247314253">"Modtager opkald."</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Registreringen af konto mislykkedes: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>). Vi prøver igen senere."</string>
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Registreringen af kontoen mislykkedes: Forkert brugernavn eller adgangskode."</string>
-    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Registreringen af kontoen mislykkedes. Kontrollér servernavn."</string>
+    <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Registreringen af kontoen mislykkedes. Tjek servernavn."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Denne konto benyttes i øjeblikket af appen <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
     <string name="sip_edit_title" msgid="1967247832635750410">"Oplysninger om SIP-konto"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"Oplysninger om SIP-konto"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Valgfri indstillinger"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Brugernavn til godkendelse"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Brugernavn ved godkendelse"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ikke angivet&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ikke angivet&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ikke angivet&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ikke angivet&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Samme som brugernavn&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valgfrit&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tryk for at vise alle"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tryk for at skjule alle"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Indtast oplysninger om den nye SIP-konto."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> skal udfyldes. Feltet må ikke være tomt."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Portnummeret skal være mellem 1000 og 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Før du foretager et SIP-opkald, skal du kontrollere din internetforbindelse."</string>
diff --git a/sip/res/values-de/strings.xml b/sip/res/values-de/strings.xml
index 7be04d2..2e8c8a2 100644
--- a/sip/res/values-de/strings.xml
+++ b/sip/res/values-de/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Optionale Einstellungen"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nutzername für die Authentifizierung"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Für die Authentifizierung verwendeter Nutzername"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nicht festgelegt&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nicht festgelegt&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nicht festgelegt&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nicht festgelegt&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Wie Nutzername&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Optional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tippen, um alle einzublenden"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tippen, um alle auszublenden"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Gib Details zum neuen SIP-Konto ein."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ist ein Pflichtfeld. Es darf nicht leer bleiben."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Portnummer muss zwischen 1000 und 65534 liegen."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Überprüfe zunächst deine Internetverbindung, um einen SIP-Anruf zu tätigen."</string>
diff --git a/sip/res/values-el/strings.xml b/sip/res/values-el/strings.xml
index 5f241ae..bed0726 100644
--- a/sip/res/values-el/strings.xml
+++ b/sip/res/values-el/strings.xml
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Αποτυχία εγγραφής λογαριασμού: Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Αποτυχία εγγραφής λογαριασμού: Ελέγξτε το όνομα του διακομιστή."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Αυτήν τη στιγμή ο λογαριασμός χρησιμοποιείται από την εφαρμογή <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Πληροφορίες λογαριασμού SIP"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Πληροφορίες λογαριασμού SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Λογ. SIP"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Λογ. SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Διακομιστής"</string>
     <string name="username_title" msgid="6770064611005663470">"Όνομα χρήστη"</string>
     <string name="password_title" msgid="5289013731515564295">"Κωδικός πρόσβασης"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Προαιρετικές ρυθμίσεις"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Όνομα χρήστη ελέγχου ταυτότητας"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Όνομα χρήστη που χρησιμοποιείται για έλεγχο ταυτότητας"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Δεν έχει οριστεί&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Δεν έχει οριστεί&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Δεν έχει οριστεί&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Δεν έχει οριστεί&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Ίδιο με το όνομα χρήστη&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Προαιρετικό&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Αγγίξτε για εμφάνιση όλων"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▷ Αγγίξτε για απόκρυψη όλων"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Εισαγάγετε τα στοιχεία του νέου λογαριασμού SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Το πεδίο <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> είναι υποχρεωτικό και δεν μπορεί να είναι κενό."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Ο αριθμός της θύρας θα πρέπει να είναι μεταξύ 1000 και 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Για να πραγματοποιήσετε μια κλήση SIP, ελέγξτε πρώτα τη σύνδεση διαδικτύου."</string>
diff --git a/sip/res/values-en-rAU/strings.xml b/sip/res/values-en-rAU/strings.xml
index 2b8c14a..24693a4 100644
--- a/sip/res/values-en-rAU/strings.xml
+++ b/sip/res/values-en-rAU/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Not set&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Same as username&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Optional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Enter details of new SIP account."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
diff --git a/sip/res/values-en-rGB/strings.xml b/sip/res/values-en-rGB/strings.xml
index 2b8c14a..24693a4 100644
--- a/sip/res/values-en-rGB/strings.xml
+++ b/sip/res/values-en-rGB/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Not set&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Same as username&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Optional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Enter details of new SIP account."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
diff --git a/sip/res/values-en-rIN/strings.xml b/sip/res/values-en-rIN/strings.xml
index 2b8c14a..24693a4 100644
--- a/sip/res/values-en-rIN/strings.xml
+++ b/sip/res/values-en-rIN/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Optional settings"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Authentication username"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Username used for authentication"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Not set&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Not set&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Same as username&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Optional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touch to show all"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Touch to hide all"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Enter details of new SIP account."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is required and can\'t be left blank."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Port number should be within 1000 and 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"To place a SIP call, check your Internet connection first."</string>
diff --git a/sip/res/values-es-rUS/strings.xml b/sip/res/values-es-rUS/strings.xml
index 8da8d43..dc0615f 100644
--- a/sip/res/values-es-rUS/strings.xml
+++ b/sip/res/values-es-rUS/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para autenticación"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Sin configurar&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Sin configurar&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Sin configurar&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Sin configurar&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual que el nombre de usuario&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocar para mostrar todo"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tocar para ocultar todo"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Ingresa los detalles de la cuenta SIP nueva."</string>
     <string name="empty_alert" msgid="6659484914371384024">"El campo <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> es obligatorio y no puede quedar en blanco."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"El número de puerto debe estar dentro de 1000 y 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Para realizar una llamada SIP, primero comprueba que tienes conexión a Internet."</string>
diff --git a/sip/res/values-es/strings.xml b/sip/res/values-es/strings.xml
index ad97696..60da3b7 100644
--- a/sip/res/values-es/strings.xml
+++ b/sip/res/values-es/strings.xml
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Registro de cuenta incorrecto: nombre de usuario o contraseña incorrectos."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Error al registrar la cuenta: comprueba el nombre del servidor."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"La aplicación <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> está utilizando esta cuenta en este momento."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Detalles de cuenta SIP"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Detalles de cuenta SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Cuenta SIP"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Cuenta SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Servidor"</string>
     <string name="username_title" msgid="6770064611005663470">"Nombre de usuario"</string>
     <string name="password_title" msgid="5289013731515564295">"Contraseña"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Ajustes opcionales"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nombre de usuario de autenticación"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nombre de usuario utilizado para la autenticación"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;No definido&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;No configurado&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;No configurada&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;No configurado&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual que el nombre de usuario&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocar para mostrar todo"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toca para ocultar todo"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Introduce la información de la nueva cuenta de SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"El campo <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> es obligatorio y no se puede dejar en blanco."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"El número de puerto debe estar comprendido entre 1.000 y 65.534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Antes de realizar una llamada SIP, comprueba tu conexión a Internet."</string>
diff --git a/sip/res/values-et-rEE/strings.xml b/sip/res/values-et/strings.xml
similarity index 91%
rename from sip/res/values-et-rEE/strings.xml
rename to sip/res/values-et/strings.xml
index cc14644..02379ba 100644
--- a/sip/res/values-et-rEE/strings.xml
+++ b/sip/res/values-et/strings.xml
@@ -19,12 +19,12 @@
     <string name="sip_settings" msgid="3768482698061677257">"SIP-i seaded"</string>
     <string name="sip_accounts" msgid="85559497282185405">"SIP-kontod"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Kontod"</string>
-    <string name="sip_receive_calls" msgid="426678617137462173">"Võta vastu sissetulevad kõned"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Sissetulevate kõnede vastuvõtmine"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Kasutab rohkem akut"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-kõnede tegemine"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-helistamise kasutus"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-kõnede tegemine (ainult WiFi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Kõikide kõnede puhul, kui andmesidevõrk on saadaval"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Ainult SIP-kõnede tegemiseks"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Ainult SIP-kõnede jaoks"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Kõikide kõnede jaoks"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Lisa konto"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Eemalda konto"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Valikulised seaded"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Autentimise kasutajanimi"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Autentimiseks kasutatav kasutajanimi"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Määramata&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Määramata&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Määramata&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Määramata&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sama kui kasutajanimi&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valikuline&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Puudutage kõige kuvamiseks"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Puudutage kõige peitmiseks"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Sisestage uue SPI-konto üksikasjad."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Väli <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> on kohustuslik, seda ei saa tühjaks jätta."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Pordi number peab jääma vahemikku 1000 kuni 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP-kõne tegemiseks kontrollige esmalt Interneti-ühendust."</string>
diff --git a/sip/res/values-eu-rES/strings.xml b/sip/res/values-eu/strings.xml
similarity index 92%
rename from sip/res/values-eu-rES/strings.xml
rename to sip/res/values-eu/strings.xml
index c62a29f..f9800f4 100644
--- a/sip/res/values-eu-rES/strings.xml
+++ b/sip/res/values-eu/strings.xml
@@ -19,12 +19,12 @@
     <string name="sip_settings" msgid="3768482698061677257">"SIP ezarpenak"</string>
     <string name="sip_accounts" msgid="85559497282185405">"SIP kontuak"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Kontuak"</string>
-    <string name="sip_receive_calls" msgid="426678617137462173">"Jaso sarrerako deiak"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Jaso deiak"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bateria gehiago erabiltzen du"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"Erabili SIP deiak"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Erabili SIP deiak (Wi-Fi bidez soilik)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Dei guztietan datu-sarea erabilgarri dagoenean"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP deietarako soilik"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP deietan soilik"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Dei guztietan"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Gehitu kontua"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Kendu kontua"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Aukerako ezarpenak"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Autentifikatzeko erabiltzaile-izena"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Autentifikatzeko erabili den erabiltzaile-izena"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ezarri gabe&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ezarri gabe&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ezarri gabe&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ezarri gabe&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Erabiltzaile-izenaren berdina&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Aukerakoa&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Guztiak erakusteko, ukitu"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Guztiak ezkutatzeko, ukitu"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Idatzi SIP kontu berriaren xehetasunak."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> beharrezkoa da eta ezin da hutsik utzi."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Ataka-zenbakiak 1000 eta 65534 artean egon behar luke."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP deiak egiteko, egiaztatu Interneteko konexioa."</string>
diff --git a/sip/res/values-fa/strings.xml b/sip/res/values-fa/strings.xml
index 5b0cde0..2731021 100644
--- a/sip/res/values-fa/strings.xml
+++ b/sip/res/values-fa/strings.xml
@@ -56,16 +56,19 @@
     <string name="display_name_title" msgid="579241787583079773">"نام نمایشی"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"آدرس پروکسی خارج از محدوده"</string>
     <string name="port_title" msgid="6693965912656593862">"شماره درگاه"</string>
-    <string name="transport_title" msgid="889155457465372527">"نوع حمل و نقل"</string>
+    <string name="transport_title" msgid="889155457465372527">"نوع حمل‌ونقل"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"ارسال حفظ اتصال"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"تنظیمات اختیاری"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"نام کاربری برای احراز هویت"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"نام کاربری مورد استفاده برای احراز هویت"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"‏&lt;تنظیم نشده&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"‏&lt;تنظیم نشده&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"‏&lt;تنظیم نشده&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"‏&lt;تنظیم نشده&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"‏&lt;مانند نام کاربری&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"‏&lt;اختیاری&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ جهت نمایش همه لمس کنید"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ برای پنهان کردن همه لمس کنید"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"‏جزئیات حساب جدید SIP را وارد کنید."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ضروری است و نباید خالی بماند."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"شماره درگاه باید بین ۱۰۰۰ و ۶۵۵۳۴ باشد."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"‏برای برقراری تماس SIP، ابتدا اتصال اینترنتتان را بررسی کنید."</string>
@@ -73,5 +76,5 @@
     <string name="no_voip" msgid="3038021971231952704">"‏تماس SIP پشتیبانی نمی‌شود"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"خودکار"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"همیشه ارسال شود"</string>
-    <string name="sip_connection_service_label" msgid="6935325004265884453">"‏تماس SIP درونی"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"‏تماس SIP داخلی"</string>
 </resources>
diff --git a/sip/res/values-fi/strings.xml b/sip/res/values-fi/strings.xml
index dd0b69a..fd39cfd 100644
--- a/sip/res/values-fi/strings.xml
+++ b/sip/res/values-fi/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Lisäasetukset"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Todennuksessa käytettävä käyttäjänimi"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Käyttäjänimeä käytetään todennukseen"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ei asetettu&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ei määritetty&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ei määritetty&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ei määritetty&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sama kuin käyttäjänimi&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valinnainen&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Näytä kaikki koskettamalla"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Piilota kaikki koskettamalla"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Anna uuden SIP-tilin tiedot."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> on pakollinen, joten se ei voi olla tyhjä."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Porttinumeron tulee olla 1 000 – 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Jos haluat soittaa SIP-puhelun, tarkista ensin internetyhteytesi."</string>
diff --git a/sip/res/values-fr-rCA/strings.xml b/sip/res/values-fr-rCA/strings.xml
index ea210ec..5ad6e0a 100644
--- a/sip/res/values-fr-rCA/strings.xml
+++ b/sip/res/values-fr-rCA/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Non défini&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Identique au nom d\'utilisateur&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Facultatif&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"Touchez ▷ pour tout afficher"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Touchez ici pour tout afficher"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"Touchez ▽ pour tout masquer"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Entrez les détails du nouveau compte SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Le champ « <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> » est obligatoire. Veuillez le remplir."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Le numéro de port doit être compris entre 1000 et 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Pour faire un appel SIP, veuillez d\'abord vérifier votre connexion Internet."</string>
diff --git a/sip/res/values-fr/strings.xml b/sip/res/values-fr/strings.xml
index a98533e..5773ff3 100644
--- a/sip/res/values-fr/strings.xml
+++ b/sip/res/values-fr/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Paramètres facultatifs"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nom d\'utilisateur d\'authentification"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nom d\'utilisateur utilisé pour l\'authentification"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Non défini&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Non définie&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Identique au nom d\'utilisateur&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Facultatif&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Appuyer ici pour tout afficher"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Appuyer ici pour tout masquer"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Saisissez les informations concernant le nouveau compte SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Le champ \"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>\" est obligatoire. Veuillez le renseigner."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Le numéro de port doit être compris entre 1000 et 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Pour passer un appel SIP, veuillez d\'abord vérifier votre connexion Internet."</string>
diff --git a/sip/res/values-gl-rES/strings.xml b/sip/res/values-gl/strings.xml
similarity index 91%
rename from sip/res/values-gl-rES/strings.xml
rename to sip/res/values-gl/strings.xml
index 5a2c4ed..ec8b666 100644
--- a/sip/res/values-gl-rES/strings.xml
+++ b/sip/res/values-gl/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"Contas SIP"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Contas"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Recibir chamadas entrantes"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consume máis batería"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Consome máis batería"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"Utilizar chamadas SIP"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Utilizar chamadas SIP (só coa wifi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Para todas as chamadas cando a rede de datos está dispoñible"</string>
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"O rexistro da conta non se completou correctamente: nome de usuario ou contrasinal incorrectos."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Rexistro da conta incorrecto. Comproba o nome do servidor."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Esta conta está sendo utilizada actualmente pola aplicación de <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Detalles da conta SIP"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Detalles da conta SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"Conta SIP"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"Conta SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Servidor"</string>
     <string name="username_title" msgid="6770064611005663470">"Nome de usuario"</string>
     <string name="password_title" msgid="5289013731515564295">"Contrasinal"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Configuración opcional"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nome de usuario da autenticación"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nome de usuario utilizado para a autenticación"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Sen configurar&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Sen definir&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Sen definir&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Sen definir&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual que o nome de usuario&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toca aquí para mostrar todo"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toca aquí para ocultar todo"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Introduce os datos da nova conta SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é obrigatorio e non se pode deixar en branco."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"O número do porto debe estar comprendido entre o 1000 e o 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Para realizar unha chamada SIP, primeiro debes comprobar a túa conexión de Internet."</string>
diff --git a/sip/res/values-gu-rIN/strings.xml b/sip/res/values-gu/strings.xml
similarity index 93%
rename from sip/res/values-gu-rIN/strings.xml
rename to sip/res/values-gu/strings.xml
index 40619d5..b7f3f17 100644
--- a/sip/res/values-gu-rIN/strings.xml
+++ b/sip/res/values-gu/strings.xml
@@ -34,7 +34,7 @@
     <string name="sip_menu_save" msgid="7882219814563869225">"સાચવો"</string>
     <string name="sip_menu_discard" msgid="2350421645423888438">"છોડી દો"</string>
     <string name="alert_dialog_close" msgid="1326011828713435134">"પ્રોફાઇલ બંધ કરો"</string>
-    <string name="alert_dialog_ok" msgid="4752048404605388940">"ઑકે"</string>
+    <string name="alert_dialog_ok" msgid="4752048404605388940">"ઓકે"</string>
     <string name="close_profile" msgid="3122414058856309881">"બંધ કરો"</string>
     <string name="registration_status_checking_status" msgid="6136793741862200337">"સ્થિતિ તપાસી રહ્યાં છે..."</string>
     <string name="registration_status_registering" msgid="2677183977796278749">"નોંધણી કરી રહ્યાં છે…"</string>
@@ -47,7 +47,7 @@
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"એકાઉન્ટની નોંધણી અસફળ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); પછીથી પ્રયાસ કરીશું"</string>
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"એકાઉન્ટની નોંધણી અસફળ: ખોટું વપરાશકર્તાનામ અથવા પાસવર્ડ."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"એકાઉન્ટની નોંધણી અસફળ: સર્વરનું નામ તપાસો."</string>
-    <string name="third_party_account_summary" msgid="9041060473615403041">"આ એકાઉન્ટ હાલમાં <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> એપ્લિકેશન દ્વારા ઉપયોગમાં છે."</string>
+    <string name="third_party_account_summary" msgid="9041060473615403041">"આ એકાઉન્ટ હાલમાં <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ઍપ્લિકેશન દ્વારા ઉપયોગમાં છે."</string>
     <string name="sip_edit_title" msgid="1967247832635750410">"SIP એકાઉન્ટ વિગતો"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"SIP એકાઉન્ટ વિગતો"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"સર્વર"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"વૈકલ્પિક સેટિંગ્સ"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"પ્રમાણીકરણ વપરાશકર્તાનામ"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"પ્રમાણીકરણ માટે ઉપયોગમાં લેવાયેલ વપરાશકર્તાનામ"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;સેટ કરેલ નથી&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;સેટ કરેલ નથી&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;સેટ કરેલ નથી&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;સેટ કરેલ નથી&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;વપરાશકર્તાનામના સમાન&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;વૈકલ્પિક&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ બધુ દર્શાવવા માટે ટચ કરો"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ બધુ છુપાવવા માટે ટચ કરો"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"નવા SIP એકાઉન્ટની વિગતો દાખલ કરો."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> આવશ્યક છે અને ખાલી છોડી શકાતું નથી."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"પોર્ટ નંબર 1000 અને 65534 ની અંદરનો હોવો જોઈએ."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP કૉલ કરવા માટે, પ્રથમ તમારું ઇન્ટરનેટ કનેક્શન તપાસો."</string>
diff --git a/sip/res/values-hi/strings.xml b/sip/res/values-hi/strings.xml
index fbf3fd2..db63b01 100644
--- a/sip/res/values-hi/strings.xml
+++ b/sip/res/values-hi/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP खाते"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"खाते"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"इनकमिंग कॉल प्राप्त करें"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बैटरी जीवन काल का उपयोग करती है"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बैटरीलाइफ़ काल का उपयोग करती है"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कॉलिंग का उपयोग करें"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कॉलिंग का उपयोग करें (केवल वाई-फ़ाई)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध होने पर सभी कॉल के लिए"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिंग"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण उपयोगकर्ता नाम"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरण के लिए उपयोग होने वाला उपयोगकर्ता नाम"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;सेट नहीं है&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;सेट नहीं है&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;सेट नहीं है&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;सेट नहीं है&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;उपयोगकर्ता नाम के समान&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;वैकल्पिक&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ सभी दिखाने के लिए स्पर्श करें"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ सभी छिपाने के लिए स्पर्श करें"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"नए SIP खाते के विवरण डालें."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> आवश्यक है और इसे खाली नहीं छोड़ा जा सकता."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट नंबर 1000 और 65534 के बीच होना चाहिए."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP कॉल करने के लिए, पहले अपना इंटरनेट कनेक्‍शन जांचें."</string>
diff --git a/sip/res/values-hr/strings.xml b/sip/res/values-hr/strings.xml
index 49d6970..ba6cbc0 100644
--- a/sip/res/values-hr/strings.xml
+++ b/sip/res/values-hr/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Izborne postavke"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Korisničko ime za autentifikaciju"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Korisničko ime koje se upotrebljava za autentifikaciju"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nije postavljeno&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nije postavljeno&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nije postavljeno&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nije postavljeno&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Isto kao korisničko ime&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Izborno&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dodirnite da biste prikazali sve"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dodirnite da biste sakrili sve"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Unesite pojedinosti novog SIP računa."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> obavezno je i ne može ostati prazno."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Broj priključka trebao bi biti između 1000 i 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Da biste uputili SIP poziv, provjerite jeste li povezani s internetom."</string>
diff --git a/sip/res/values-hu/strings.xml b/sip/res/values-hu/strings.xml
index eda6bd0..520255f 100644
--- a/sip/res/values-hu/strings.xml
+++ b/sip/res/values-hu/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"További beállítások"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Azonosításhoz használt felhasználónév"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Azonosításhoz használt felhasználónév"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nincs beállítva&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nincs megadva&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nincs megadva&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nincs megadva&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Ugyanaz, mint a felhasználónév&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Nem kötelező&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Érintse meg az összes megjelenítéséhez"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Érintse meg az összes elrejtéséhez"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Adja meg az új SIP-fiók részleteit."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> megadása kötelező, nem maradhat üresen."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"A port számának 1000 és 65534 között kell lennie."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP-hívás indításához előbb ellenőrizze az internetkapcsolatát."</string>
diff --git a/sip/res/values-hy-rAM/strings.xml b/sip/res/values-hy/strings.xml
similarity index 93%
rename from sip/res/values-hy-rAM/strings.xml
rename to sip/res/values-hy/strings.xml
index e0eb582..2cca1b7 100644
--- a/sip/res/values-hy-rAM/strings.xml
+++ b/sip/res/values-hy/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Ընտրովի կարգավորումներ"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Նույնականացման օգտանուն"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Օգտանունն օգտագործվել է նույնականացման համար"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Կարգավորված չէ&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Սահմանված չէ&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Սահմանված չէ&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Սահմանված չէ&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Նույնը, ինչ օգտանունը&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Ընտրովի&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Հպեք՝ ցուցադրելու ամենը"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Հպեք՝ տեսնելու համար"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Հպեք՝ թաքցնելու ամենը"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Մուտքագրեք նոր SIP հաշվի տվյալները:"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>-ը պարտադիր է և չի կարող լինել դատարկ:"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Միացքի համարը պետք է լինի 1000-ի և 65534-ի սահմաններում:"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP-ի միջոցով զանգ կատարելու համար նախ ստուգեք ձեր համացանցի կապակցումը:"</string>
diff --git a/sip/res/values-in/strings.xml b/sip/res/values-in/strings.xml
index d217120..c2f40b7 100644
--- a/sip/res/values-in/strings.xml
+++ b/sip/res/values-in/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Setelan opsional"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna autentikasi"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk autentikasi"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Tidak disetel&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Tidak disetel&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Tidak disetel&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Tidak disetel&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sama dengan nama pengguna&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opsional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Sentuh untuk menampilkan semua"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Sentuh untuk menyembunyikan semua"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Masukkan detail akun SIP baru."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> diwajibkan dan tidak boleh kosong."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Nomor port harus dalam rentang 1000 dan 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Untuk melakukan panggilan SIP, periksa sambungan internet terlebih dahulu."</string>
diff --git a/sip/res/values-is-rIS/strings.xml b/sip/res/values-is/strings.xml
similarity index 92%
rename from sip/res/values-is-rIS/strings.xml
rename to sip/res/values-is/strings.xml
index 49a45e7..ff15909 100644
--- a/sip/res/values-is-rIS/strings.xml
+++ b/sip/res/values-is/strings.xml
@@ -21,8 +21,8 @@
     <string name="sip_accounts_title" msgid="2082527045326874519">"Reikningar"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Svara símtölum"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Notar meiri rafhlöðuorku"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"Nota SIP-símtal"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Nota SIP-símtal (eingöngu Wi-Fi)"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Nota SIP-hringingar"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Nota SIP-hringingar (eingöngu Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Fyrir öll símtöl þegar gagnanet er tiltækt"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Aðeins fyrir SIP-símtöl"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Fyrir öll símtöl"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Valfrjálsar stillingar"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Notandanafn til auðkenningar"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Notandanafn notað til auðkenningar"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ekki valið&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ekki valið&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ekki valið&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ekki valið&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sama og notandanafnið&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valfrjálst&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Snertu til að sýna allt"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Snertu til að fela allt"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Sláðu inn upplýsingar um nýjan SIP-reikning."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> er áskilið og má ekki vera autt."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Númer gáttar á að vera milli 1000 og 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Til að hringja SIP-símtal skaltu fyrst athuga nettenginguna þína."</string>
diff --git a/sip/res/values-it/strings.xml b/sip/res/values-it/strings.xml
index 97de314..982b7bd 100644
--- a/sip/res/values-it/strings.xml
+++ b/sip/res/values-it/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Impostazioni facoltative"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nome utente per autenticazione"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nome utente utilizzato per l\'autenticazione"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Non impostato&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Non impostato&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Non impostata&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Non impostato&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Uguale al nome utente&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Facoltativo&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tocca per mostrare tutto"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tocca per nascondere tutto"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Inserisci i dati del nuovo account SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> è obbligatorio e non può essere lasciato vuoto."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Il numero della porta deve essere compreso tra 1000 e 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Per effettuare una chiamata SIP, verifica prima la connessione Internet."</string>
diff --git a/sip/res/values-iw/strings.xml b/sip/res/values-iw/strings.xml
index 54712b7..edd8d64 100644
--- a/sip/res/values-iw/strings.xml
+++ b/sip/res/values-iw/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"הגדרות אופציונליות"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"שם משתמש לאימות"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"שם משתמש המשמש לאימות"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"‏&lt;לא הוגדר&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"‏&lt;לא מוגדר&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"‏&lt;לא מוגדרת&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"‏&lt;לא הוגדר&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"‏&lt;זהה לשם משתמש&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"‏&lt;אופציונלי&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ גע כדי להציג את הכל"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"איפה כל ההגדרות?"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ גע כדי להסתיר את הכל"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"‏הזן את פרטי חשבון ה-SIP החדש."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> הוא שדה חובה ולא ניתן להשאיר אותו ריק."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"מספר היציאה צריך להיות בין 1000 ל-65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"‏כדי לבצע שיחת SIP, ראשית בדוק את חיבור האינטרנט שלך."</string>
diff --git a/sip/res/values-ja/strings.xml b/sip/res/values-ja/strings.xml
index d9dbc59..fdd791b 100644
--- a/sip/res/values-ja/strings.xml
+++ b/sip/res/values-ja/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"オプション設定"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"認証ユーザー名"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"認証に使用するユーザー名"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;未設定&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ユーザー名と同じ&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;オプション&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷すべて表示"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷タップしてすべて表示"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽すべて非表示"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"新しいSIPアカウントの詳細情報を入力してください。"</string>
     <string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」は必須です。空欄にはできません。"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"ポート番号は1000~65534で指定してください。"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP通話を発信する前に、インターネット接続を確認してください。"</string>
diff --git a/sip/res/values-ka-rGE/strings.xml b/sip/res/values-ka/strings.xml
similarity index 92%
rename from sip/res/values-ka-rGE/strings.xml
rename to sip/res/values-ka/strings.xml
index e5dfb94..3559f65 100644
--- a/sip/res/values-ka-rGE/strings.xml
+++ b/sip/res/values-ka/strings.xml
@@ -24,7 +24,7 @@
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP დარეკვის გამოყენება"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP დარეკვის გამოყენება (მხოლოდ Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ყველა ზარზე, როდესაც მონაცემთა ქსელი ხელმისაწვდომია"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"მხოლოდ SIP ზარებისათვის"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"მხოლოდ SIP ზარებზე"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ყველა ზარზე"</string>
     <string name="add_sip_account" msgid="800843669753980091">"ანგარიშის დამატება"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"ანგარიშის წაშლა"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"არასავალდებულო პარამეტრები"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"ავტორიზაციის მომხმარებლის სახელი"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"ავტორიზაციისათვის გამოყენებული მომხმარებლის სახელი"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;არ არის დაყენებული&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;არ არის დაყენებული&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;არ არის დაყენებული&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;არ არის დაყენებული&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;იგივეა, რაც მომხმარებლის სახელი&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;სურვილისამებრ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ შეეხეთ ყველას საჩვენებლად"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ შეეხეთ ყველას დასამალად"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"შეიყვანეთ თქვენი ახალი SIP ანგარიშის დეტალები."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> აუცილებელია და ცარიელი ვერ დარჩება."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"პორტის ნომერი უნდა იყოს 1000 – 65534 არეალში."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP ზარის განხორციელებისათვის, პირველ რიგში შეამოწმეთ თქვენი ინტერნეტ კავშირი."</string>
diff --git a/sip/res/values-kk-rKZ/strings.xml b/sip/res/values-kk/strings.xml
similarity index 93%
rename from sip/res/values-kk-rKZ/strings.xml
rename to sip/res/values-kk/strings.xml
index 379e7df..03eef64 100644
--- a/sip/res/values-kk-rKZ/strings.xml
+++ b/sip/res/values-kk/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Қосымша параметрлер"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Аутентификациялау пайдаланушы аты"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Аутентификациялау үшін пайдаланылатын пайдаланушы аты"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Орнатылмаған&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Орнатылмаған&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Орнатылмаған&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Орнатылмаған&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Пайдаланушы атымен бірдей&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Міндетті емес&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Барлығын көрсету үшін түрту"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Барлығын жасыру үшін түрту"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Жаңа SIP есептік жазбасының мәліметтерін енгізіңіз."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> міндетті және оны бос қалдыруға болмайды."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Порт нөмірі 1000 және 65534 аралығында болуы керек."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP қоңырауын шалу үшін алдымен интернет қосылымын тексеріңіз."</string>
diff --git a/sip/res/values-km-rKH/strings.xml b/sip/res/values-km/strings.xml
similarity index 89%
rename from sip/res/values-km-rKH/strings.xml
rename to sip/res/values-km/strings.xml
index c1d80b3..2936007 100644
--- a/sip/res/values-km-rKH/strings.xml
+++ b/sip/res/values-km/strings.xml
@@ -53,19 +53,22 @@
     <string name="domain_address_title" msgid="1968479941328225423">"ម៉ាស៊ីន​មេ"</string>
     <string name="username_title" msgid="6770064611005663470">"ឈ្មោះ​អ្នកប្រើ"</string>
     <string name="password_title" msgid="5289013731515564295">"ពាក្យសម្ងាត់"</string>
-    <string name="display_name_title" msgid="579241787583079773">"បង្ហាញ​ឈ្មោះ"</string>
+    <string name="display_name_title" msgid="579241787583079773">"​ឈ្មោះដែល​បង្ហាញ"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"អាសយដ្ឋាន​ប្រូកស៊ី​ចេញ"</string>
     <string name="port_title" msgid="6693965912656593862">"លេខ​ច្រក"</string>
     <string name="transport_title" msgid="889155457465372527">"ប្រភេទ​បញ្ជូន"</string>
-    <string name="send_keepalive_title" msgid="599627072150501159">"នៅតែ​មាន​ការ​ផ្ញើ"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"​ផ្ញើសារពិនិត្យបន្ត"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"ការ​កំណត់​​ជា​​ជម្រើស"</string>
-    <string name="auth_username_title" msgid="8262491689004708265">"ឈ្មោះ​អ្នកប្រើ​​សម្រាប់​​ផ្ទៀងផ្ទាត់"</string>
-    <string name="auth_username_summary" msgid="941160241371436473">"បាន​ប្រើ​ឈ្មោះ​អ្នកប្រើ​សម្រាប់​​​ផ្ទៀងផ្ទាត់"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;មិន​បាន​កំណត់&gt;"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"ឈ្មោះ​អ្នកប្រើ​​ប្រាស់​សម្រាប់​​ផ្ទៀងផ្ទាត់"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"ឈ្មោះ​អ្នកប្រើប្រាស់​ដែលបាន​ប្រើ​សម្រាប់​​​ផ្ទៀងផ្ទាត់"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;មិន​បាន​កំណត់&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;មិន​បាន​កំណត់&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;មិន​បាន​កំណត់&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ដូច​ឈ្មោះ​អ្នកប្រើ&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ជា​ជម្រើស&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"ប៉ះ ▷ ដើម្បី​បង្ហាញ​ទាំងអស់"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"ប៉ះ ▽ ដើម្បី​លាក់​ទាំងអស់"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"បញ្ចូលព័ត៌មានលម្អិតអំពីគណនី SIP ថ្មី"</string>
     <string name="empty_alert" msgid="6659484914371384024">"មិន​​អាច​ទុក​ឲ្យ​នៅ​ទទេ និង​បាន​ទាមទារ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ។"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"លេខ​ច្រក​គួរតែ​នៅ​ចន្លោះ ១០០០ និង ៦៥៥៣៤។"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"ដើម្បីដាក់ការហៅ SIP ពិនិត្យការភ្ជាប់អ៊ីនធឺណិតរបស់អ្នកជាមុនសិន។"</string>
diff --git a/sip/res/values-kn-rIN/strings.xml b/sip/res/values-kn/strings.xml
similarity index 75%
rename from sip/res/values-kn-rIN/strings.xml
rename to sip/res/values-kn/strings.xml
index 8d95917..e6896ec 100644
--- a/sip/res/values-kn-rIN/strings.xml
+++ b/sip/res/values-kn/strings.xml
@@ -16,19 +16,19 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="sip_settings" msgid="3768482698061677257">"SIP ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="sip_accounts" msgid="85559497282185405">"SIP ಖಾತೆಗಳು"</string>
+    <string name="sip_settings" msgid="3768482698061677257">"ಎಸ್‌ಐಪಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+    <string name="sip_accounts" msgid="85559497282185405">"ಎಸ್‌ಐಪಿ ಖಾತೆಗಳು"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"ಖಾತೆಗಳು"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"ಒಳಬರುವ ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸು"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ಹೆಚ್ಚು ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ (Wi-Fi ಮಾತ್ರ)"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ಹೆಚ್ಚು ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸುತ್ತದೆ"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ (ವೈ-ಫೈ ಮಾತ್ರ)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ಡೇಟಾ ನೆಟ್‌ವರ್ಕ್‌ ಲಭ್ಯವಿರುವಾಗ ಎಲ್ಲ ಕರೆಗಳಿಗಾಗಿ"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ಕೇವಲ SIP ಕರೆಗಳಿಗೆ ಮಾತ್ರ"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ಕೇವಲ ಎಸ್‌ಐಪಿ ಕರೆಗಳಿಗೆ ಮಾತ್ರ"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ಎಲ್ಲ ಕರೆಗಳಿಗಾಗಿ"</string>
-    <string name="add_sip_account" msgid="800843669753980091">"ಖಾತೆ ಸೇರಿಸು"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"ಖಾತೆ ಸೇರಿಸಿ"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕು"</string>
-    <string name="sip_account_list" msgid="5610858485304821480">"SIP ಖಾತೆಗಳು"</string>
+    <string name="sip_account_list" msgid="5610858485304821480">"ಎಸ್‌ಐಪಿ ಖಾತೆಗಳು"</string>
     <string name="saving_account" msgid="5336529880235177448">"ಖಾತೆಯನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="removing_account" msgid="5537351356808985756">"ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತಿದೆ…"</string>
     <string name="sip_menu_save" msgid="7882219814563869225">"ಉಳಿಸು"</string>
@@ -41,15 +41,15 @@
     <string name="registration_status_still_trying" msgid="7648151061205513458">"ಇನ್ನೂ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ…"</string>
     <string name="registration_status_not_receiving" msgid="7620333886153361090">"ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತಿಲ್ಲ."</string>
     <string name="registration_status_no_data" msgid="2541999976218192413">"ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವಿಲ್ಲದ ಕಾರಣ ಖಾತೆ ನೋಂದಣಿಯನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ."</string>
-    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi ಸಂಪರ್ಕವಿಲ್ಲದ ಕಾರಣ ಖಾತೆ ನೋಂದಣಿಯನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ."</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"ವೈ-ಫೈ ಸಂಪರ್ಕವಿಲ್ಲದ ಕಾರಣ ಖಾತೆ ನೋಂದಣಿಯನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ."</string>
     <string name="registration_status_not_running" msgid="514205414303796800">"ಖಾತೆ ನೋಂದಣಿಯು ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ."</string>
     <string name="registration_status_done" msgid="3264961069247314253">"ಕರೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತಿದೆ."</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"ಖಾತೆ ನೋಂದಣಿಯು ಯಶಸ್ವಿಯಾಗಿಲ್ಲ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ನಂತರ ಪ್ರಯತ್ನಿಸುತ್ತೇನೆ"</string>
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ಖಾತೆ ನೋಂದಣಿಯು ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ: ಬಳಕೆದಾರರ ಹೆಸರು ಅಥವಾ ಪಾಸ್‌ವರ್ಡ್‌ ತಪ್ಪಾಗಿದೆ."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"ಖಾತೆ ನೋಂದಣಿಯು ಯಶಸ್ವಿಯಾಗಲಿಲ್ಲ: ಸರ್ವರ್‌ ಹೆಸರನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"ಈ ಖಾತೆಯನ್ನು ಪ್ರಸ್ತುತ <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ ಬಳಸುತ್ತಿದೆ."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"SIP ಖಾತೆ ವಿವರಗಳು"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP ಖಾತೆ ವಿವರಗಳು"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"ಎಸ್‌ಐಪಿ ಖಾತೆ ವಿವರಗಳು"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"ಎಸ್‌ಐಪಿ ಖಾತೆ ವಿವರಗಳು"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"ಸರ್ವರ್"</string>
     <string name="username_title" msgid="6770064611005663470">"ಬಳಕೆದಾರಹೆಸರು"</string>
     <string name="password_title" msgid="5289013731515564295">"ಪಾಸ್‌ವರ್ಡ್"</string>
@@ -61,17 +61,20 @@
     <string name="advanced_settings" msgid="6622996380747040711">"ಐಚ್ಛಿಕ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"ದೃಢೀಕರಣ ಬಳಕೆದಾರಹೆಸರು"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ಬಳಸಲಾಗಿದೆ"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;ಹೊಂದಿಸಿಲ್ಲ&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;ಹೊಂದಿಸಿಲ್ಲ&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;ಹೊಂದಿಸಿಲ್ಲ&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;ಹೊಂದಿಸಿಲ್ಲ&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ಬಳಕೆದಾರ ಹೆಸರಿನಂತೆ&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ಐಚ್ಛಿಕ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ಎಲ್ಲವನ್ನೂ ತೋರಿಸಲು ಸ್ಪರ್ಶಿಸಿ"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ಎಲ್ಲವನ್ನೂ ಮರೆಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"ಹೊಸ ಎಸ್‌ಐಪಿ ಖಾತೆಯ ವಿವರಗಳನ್ನು ನಮೂದಿಸಿ."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ಅಗತ್ಯವಿದೆ ಮತ್ತು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"ಪೋರ್ಟ್‌ ಸಂಖ್ಯೆಯು 1000 ಮತ್ತು 65534 ರ ವ್ಯಾಪ್ತಿಯೊಳಗಿರಬೇಕು."</string>
-    <string name="no_internet_available" msgid="5523747991760017298">"SIP ಕರೆ ಮಾಡಲು, ಮೊದಲು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
-    <string name="no_wifi_available" msgid="1955023904229673488">"SIP ಕರೆಗಳಿಗಾಗಿ ನೀವು Wi-Fi ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಅಗತ್ಯವಿದೆ (ವೈರ್‌ಲೆಸ್ &amp; ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬಳಸಿ)."</string>
-    <string name="no_voip" msgid="3038021971231952704">"SIP ಕರೆ ಮಾಡುವಿಕೆ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡಲು, ಮೊದಲು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"ಎಸ್‌ಐಪಿ ಕರೆಗಳಿಗಾಗಿ ನೀವು ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಅಗತ್ಯವಿದೆ (ವೈರ್‌ಲೆಸ್ &amp; ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬಳಸಿ)."</string>
+    <string name="no_voip" msgid="3038021971231952704">"ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆ ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"ಸ್ವಯಂಚಾಲಿತ"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"ಯಾವಾಗಲೂ ಕಳುಹಿಸು"</string>
-    <string name="sip_connection_service_label" msgid="6935325004265884453">"ಅಂತರ್ನಿರ್ಮಿತ SIP ಕರೆ ಮಾಡುವಿಕೆ"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"ಅಂತರ್ನಿರ್ಮಿತ ಎಸ್‌ಐಪಿ ಕರೆ ಮಾಡುವಿಕೆ"</string>
 </resources>
diff --git a/sip/res/values-ko/strings.xml b/sip/res/values-ko/strings.xml
index 0f5b7db..3274adc 100644
--- a/sip/res/values-ko/strings.xml
+++ b/sip/res/values-ko/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"설정(선택사항)"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"인증 사용자 이름"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"인증에 사용된 사용자 이름"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;설정 안 됨&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;설정 안됨&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;설정 안됨&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;설정 안됨&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;사용자 이름과 동일&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;선택사항&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ 모두 표시하려면 터치"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 모두 숨기려면 터치"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"새 SIP 계정의 세부정보를 입력하세요."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>은(는) 필수이므로 비워 둘 수 없습니다."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"포트 번호는 1000~65534 사이여야 합니다."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP 통화를 하려면 먼저 인터넷 연결을 확인하세요."</string>
diff --git a/sip/res/values-ky-rKG/strings.xml b/sip/res/values-ky/strings.xml
similarity index 89%
rename from sip/res/values-ky-rKG/strings.xml
rename to sip/res/values-ky/strings.xml
index a61df19..afde29d 100644
--- a/sip/res/values-ky-rKG/strings.xml
+++ b/sip/res/values-ky/strings.xml
@@ -17,14 +17,14 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="sip_settings" msgid="3768482698061677257">"SIP жөндөөлөрү"</string>
-    <string name="sip_accounts" msgid="85559497282185405">"SIP эсептик жазуулары"</string>
+    <string name="sip_accounts" msgid="85559497282185405">"SIP каттоо эсептери"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Каттоо эсептери"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Келген чалууларды кабыл алуу"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Көбүрөөк батарея кубатын колдонот"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP чалуусун пайдалануу"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP чалуусун пайдалануу (Wi-Fi гана)"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Батареянын кубаты көбүрөөк керектелет"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP аркылуу чалуу"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP аркылуу чалуу (Wi-Fi гана)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Дайындар тармагы жеткиликтүү болгон учурдагы бардык чалуулар үчүн"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP чалуулар үчүн гана"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP аркылуу чалуулар үчүн гана"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Бардык чалуулар үчүн"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Каттоо эсебин кошуу"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Каттоо эсебин алып салуу"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Кошумча жөндөөлөр"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Аныктыкты текшерүүчү колдонуучунун ысымы"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Колдонуучунун ысымы аныктыкты текшерүү үчүн колдонулат"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Коюлган эмес&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Коюлган эмес&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Коюлган эмес&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Коюлган эмес&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Колдонуучунун ысымына окшош&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Кошумча&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Бардыгын көрсөтүү үчүн тийип коюңуз"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Бардыгын жашыруу үчүн тийип коюңуз"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Жаңы SIP каттоо эсебинин чоо-жайын киргизиңиз."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> талап кылынат жана бош калтырганга болбойт."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Порттун номери 1000 баштап 65534 чейин болушу керек."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP чалуу жайгаштыруу үчүн, адегенде Интернет туташууңузду текшериңиз."</string>
diff --git a/sip/res/values-lo-rLA/strings.xml b/sip/res/values-lo/strings.xml
similarity index 89%
rename from sip/res/values-lo-rLA/strings.xml
rename to sip/res/values-lo/strings.xml
index 3bdc32c..2c202cb 100644
--- a/sip/res/values-lo-rLA/strings.xml
+++ b/sip/res/values-lo/strings.xml
@@ -45,13 +45,13 @@
     <string name="registration_status_not_running" msgid="514205414303796800">"ການ​ລົງທະບຽນ​ບັນຊີ​ບໍ່ສຳເລັດ."</string>
     <string name="registration_status_done" msgid="3264961069247314253">"ຮັບສາຍ."</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"ການ​ລົງທະບຽນ​ບັນຊີ​ບໍ່ສຳເລັດ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ຈະ​ລອງ​ໃໝ່​ໃນ​ພາຍຫຼັງ"</string>
-    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ການ​ລົງທະບຽນ​ບັນຊີ​ບໍ່ສຳເລັດ: ຊື່ຜູ່ໃຊ້ ຫຼື​ລະຫັດຜ່ານ​ບໍ່ຖືກຕ້ອງ."</string>
+    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ການ​ລົງທະບຽນ​ບັນຊີ​ບໍ່ສຳເລັດ: ຊື່ຜູ້ໃຊ້ ຫຼື​ລະຫັດຜ່ານ​ບໍ່ຖືກຕ້ອງ."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"ການ​ລົງທະບຽນ​ບັນຊີ​ບໍ່​ສຳເລັດ: ກະລຸນາ​ກວດສອບ​ຊື່​ເຊີບເວີ."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"ແອັບຯ <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ກຳລັງໃຊ້ບັນຊີນີ້ຢູ່"</string>
     <string name="sip_edit_title" msgid="1967247832635750410">"ລາຍລະອຽດບັນຊີ SIP"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"ລາຍລະອຽດບັນຊີ SIP"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"ເຊີບເວີ"</string>
-    <string name="username_title" msgid="6770064611005663470">"ຊື່ຜູ່ໃຊ້"</string>
+    <string name="username_title" msgid="6770064611005663470">"ຊື່ຜູ້ໃຊ້"</string>
     <string name="password_title" msgid="5289013731515564295">"ລະຫັດຜ່ານ"</string>
     <string name="display_name_title" msgid="579241787583079773">"ຊື່ທີ່ສະແດງ"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"ທີ່ຢູ່ Proxy ຂາອອກ"</string>
@@ -59,13 +59,16 @@
     <string name="transport_title" msgid="889155457465372527">"ປະເພດການສົ່ງຂໍ້ມູນ"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"ສົ່ງ keep-alive"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"ການ​ຕັ້ງ​ຄ່າທາງ​ເລືອກ​ເສີມ"</string>
-    <string name="auth_username_title" msgid="8262491689004708265">"ຊື່​ຜູ່ໃຊ້​ສຳລັບ​ການ​ພິສູດ​ຢືນຢັນ​ໂຕ"</string>
-    <string name="auth_username_summary" msgid="941160241371436473">"ຊື່​ຜູ່ໃຊ້​ເພື່ອ​ການ​ພິສູດ​ຢືນຢັນ​ໂຕ"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;ຍັງບໍ່ໄດ້ຕັ້ງ&gt;"</string>
-    <string name="display_name_summary" msgid="7155076491675565407">"&lt;ອັນດຽວກັບຊື່ຜູ່ໃຊ້&gt;"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"ຊື່​ຜູ້ໃຊ້​ສຳລັບ​ການ​ພິສູດ​ຢືນຢັນ​ຕົວ"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"ຊື່​ຜູ້ໃຊ້​ເພື່ອ​ການ​ພິສູດ​ຢືນຢັນ​ຕົວ"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;ບໍ່ໄດ້ຕັ້ງ&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;ບໍ່ໄດ້ຕັ້ງ&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;ບໍ່ໄດ້ຕັ້ງ&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;ອັນດຽວກັບຊື່ຜູ້ໃຊ້&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ໂຕເລືອກເສີມ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ແຕະ​ເພື່ອ​ສະແດງ​ທັງໝົດ"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ແຕະ​ເພື່ອ​ເຊື່ອງ​ທັງໝົດ"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"ປ້ອນ​ລາຍ​ລະ​ອຽດ​ຂອງ​ບັນ​ຊີ SIP ໃໝ່​ເຂົ້າ​ໄປ."</string>
     <string name="empty_alert" msgid="6659484914371384024">"ຕ້ອງ​ລະບຸ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ແລະ​ບໍ່​ສາມາດ​ປ່ອຍ​ຫວ່າງ​ໄດ້."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"ໝາຍ​ເລກ​ພອດ​ຄວນ​ຢູ່​ລະຫວ່າງ 1000 ແລະ 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"ເພື່ອ​ໃຊ້​ການ​ໂທ SIP, ກວດ​ເບິ່ງ​ການ​ເຊື່ອມ​ຕໍ່​ອິນ​ເຕີ​ເນັດ​ຂອງ​ທ່ານ​ກ່ອນ."</string>
diff --git a/sip/res/values-lt/strings.xml b/sip/res/values-lt/strings.xml
index b340e3b..2d3f53f 100644
--- a/sip/res/values-lt/strings.xml
+++ b/sip/res/values-lt/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Pasirenkami nustatymai"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Tapatybės nustatymo naudotojo vardas"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Tapatybei nustatyti naudotas naudotojo vardas"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nenustatyta&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nenustatyta&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nenustatyta&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nenustatyta&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Kaip naudotojo vardas&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Pasirenkama&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Jei norite viską parodyti, palieskite"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Jei norite viską paslėpti, palieskite"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Įveskite išsamią naujos SIP paskyros informaciją."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Lauke „<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>“ būtina nurodyti vertę – jis negali likti tuščias."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Prievado numeris turi būti nuo 1 000 iki 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Kad atliktumėte SIP skambutį, pirmiausia patikrinkite interneto ryšį."</string>
diff --git a/sip/res/values-lv/strings.xml b/sip/res/values-lv/strings.xml
index 0e6b541..345c5b2 100644
--- a/sip/res/values-lv/strings.xml
+++ b/sip/res/values-lv/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Neobligāti iestatījumi"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Autentifikācijai izmantotais lietotājvārds"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Autentifikācijai izmantotais lietotājvārds"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nav iestatīts&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nav iestatīts&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nav iestatīts&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nav iestatīts&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Tāds pats kā lietotājvārds&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Neobligāti&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Pieskarieties, lai rādītu visu"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Pieskarieties, lai paslēptu visu"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Ievadiet jaunā SIP konta datus."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Lauks <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ir jāaizpilda obligāti; tas nedrīkst būt tukšs."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Porta numuram ir jābūt skaitlim no 1000 līdz 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Pirms veicat SIP zvanu, pārbaudiet interneta savienojumu."</string>
diff --git a/sip/res/values-mk-rMK/strings.xml b/sip/res/values-mk/strings.xml
similarity index 84%
rename from sip/res/values-mk-rMK/strings.xml
rename to sip/res/values-mk/strings.xml
index 96c043c..ea8107b 100644
--- a/sip/res/values-mk-rMK/strings.xml
+++ b/sip/res/values-mk/strings.xml
@@ -16,15 +16,15 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="sip_settings" msgid="3768482698061677257">"Поставки на СИП"</string>
+    <string name="sip_settings" msgid="3768482698061677257">"Поставки на SIP"</string>
     <string name="sip_accounts" msgid="85559497282185405">"Сметки за SIP"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Сметки"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Примај дојдовни повици"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Повеќе ја троши батеријата"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"Користете повикување со СИП"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користете повикување со СИП (само преку Wi-Fi)"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Користете повикување со SIP"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користете повикување со SIP (само преку Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"За сите повици кога е достапна мрежа на податоци"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за повици со СИП"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за повици со SIP"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"За сите повици"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Додај сметка"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Отстрани сметка"</string>
@@ -48,30 +48,33 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Регистрацијата на сметка е неуспешна: неточно корисничко име или лозинка."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Регистрацијата на сметка е неуспешна: проверете го името на серверот."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Апликацијата на <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ја употребува оваа сметка во моментов."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Детали на сметка за SIP"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Детали на сметка за SIP"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"SIP-сметка"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-сметка"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Сервер"</string>
     <string name="username_title" msgid="6770064611005663470">"Корисничко име"</string>
     <string name="password_title" msgid="5289013731515564295">"Лозинка"</string>
-    <string name="display_name_title" msgid="579241787583079773">"Прикажи име"</string>
+    <string name="display_name_title" msgid="579241787583079773">"Име за приказ"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"Излезна адреса на прокси"</string>
     <string name="port_title" msgid="6693965912656593862">"Број на порта"</string>
-    <string name="transport_title" msgid="889155457465372527">"Тип превоз"</string>
+    <string name="transport_title" msgid="889155457465372527">"Вид на пренос"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"Испрати „одржувај врска“"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"Изборни поставки"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за автентикација"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Корисничко име што се користи за автентикација"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Не е поставен&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Не е поставено&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Не е поставено&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Не е поставено&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Исто како корисничкото име&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"Изборно"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Допрете за да се прикажат сите"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Допрете за да се сокријат сите"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Внесете ги деталите за новата сметка со SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Потребно е <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> и не може да се остави празно."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Бројот на портата треба да биде меѓу 1000 и 65534."</string>
-    <string name="no_internet_available" msgid="5523747991760017298">"За да воспоставите повик со СИП, прво проверете го поврзувањето на интернет."</string>
-    <string name="no_wifi_available" msgid="1955023904229673488">"Треба да бидете поврзани со мрежа на Wi-Fi за повици со СИП (користете ги поставките за безжичен интернет и за мрежа)."</string>
-    <string name="no_voip" msgid="3038021971231952704">"Повикување со СИП не е поддржано"</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"За да воспоставите повик со SIP, прво проверете ја интернет врската."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"Треба да бидете поврзани со мрежа на Wi-Fi за повици со SIP (користете ги поставките за безжичен интернет и за мрежа)."</string>
+    <string name="no_voip" msgid="3038021971231952704">"Повици со SIP не се поддржани"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"Автоматски"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Испраќај секогаш"</string>
-    <string name="sip_connection_service_label" msgid="6935325004265884453">"Вградено повикување со СИП"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"Вградено повикување со SIP"</string>
 </resources>
diff --git a/sip/res/values-ml-rIN/strings.xml b/sip/res/values-ml/strings.xml
similarity index 91%
rename from sip/res/values-ml-rIN/strings.xml
rename to sip/res/values-ml/strings.xml
index 85b99aa..071152d 100644
--- a/sip/res/values-ml-rIN/strings.xml
+++ b/sip/res/values-ml/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP അക്കൗണ്ടുകൾ"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"അക്കൗണ്ടുകൾ"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"ഇൻകമിംഗ് കോൾ സ്വീകരിക്കൂ"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"കൂടുതൽ ബാറ്ററി ആയുസ് ഉപയോഗിക്കുന്നു"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"കൂടുതൽ ബാറ്ററി ഉപയോഗിക്കുന്നു"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP കോൾചെയ്യൽ ഉപയോഗിക്കുക"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP കോൾചെയ്യൽ ഉപയോഗിക്കുക (വൈഫൈ മാത്രം)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ഡാറ്റ നെറ്റ്‌വർക്ക് ലഭ്യമാകുമ്പോൾ എല്ലാ കോളുകൾക്കായും"</string>
@@ -31,8 +31,8 @@
     <string name="sip_account_list" msgid="5610858485304821480">"SIP അക്കൗണ്ടുകൾ"</string>
     <string name="saving_account" msgid="5336529880235177448">"അക്കൗണ്ട് സംരക്ഷിക്കുന്നു…"</string>
     <string name="removing_account" msgid="5537351356808985756">"അക്കൗണ്ട് നീക്കംചെയ്യുന്നു…"</string>
-    <string name="sip_menu_save" msgid="7882219814563869225">"സംരക്ഷിക്കുക"</string>
-    <string name="sip_menu_discard" msgid="2350421645423888438">"നിരസിക്കുക"</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"സംരക്ഷിക്കൂ"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"നിരസിക്കൂ"</string>
     <string name="alert_dialog_close" msgid="1326011828713435134">"പ്രൊഫൈൽ അടയ്‌ക്കുക"</string>
     <string name="alert_dialog_ok" msgid="4752048404605388940">"ശരി"</string>
     <string name="close_profile" msgid="3122414058856309881">"അടയ്‌ക്കുക"</string>
@@ -61,17 +61,20 @@
     <string name="advanced_settings" msgid="6622996380747040711">"ഓപ്‌ഷണൽ ക്രമീകരണങ്ങൾ"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"പ്രാമാണീകരണ ഉപയോക്തൃനാമം"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"പ്രാമാണീകരണത്തിന് ഉപയോഗിച്ച ഉപയോക്തൃനാമം"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;സജ്ജീകരിച്ചിട്ടില്ല&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;ക്രമീകരിച്ചിട്ടില്ല&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;ക്രമീകരിച്ചിട്ടില്ല&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;ക്രമീകരിച്ചിട്ടില്ല&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;ഉപയോക്തൃനാമത്തിന് സമാനം&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ഓപ്‌ഷണൽ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ എല്ലാം കാണിക്കാൻ സ്‌പർശിക്കുക"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ എല്ലാം മറയ്‌ക്കാൻ സ്‌പർശിക്കുക"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"പുതിയ SIP അക്കൗണ്ട് വിശദാംശങ്ങൾ നൽകുക."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ആവശ്യമായതിനാൽ ശൂന്യമായിടാനാകില്ല."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"പോർട്ട് നമ്പർ 1000, 65534 എന്നിവയ്‌ക്കിടയിലായിരിക്കണം."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP കോൾചെയ്യുന്നതിന്, ആദ്യം നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക."</string>
     <string name="no_wifi_available" msgid="1955023904229673488">"SIP കോളുകൾക്കായി വൈഫൈ നെറ്റ്‌വർക്കിലേക്ക് കണക്‌റ്റുചെയ്യേണ്ടതുണ്ട് (വയർലെസ്, നെറ്റ്‌വർക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക)."</string>
     <string name="no_voip" msgid="3038021971231952704">"SIP കോൾചെയ്യൽ പിന്തുണയ്‌ക്കുന്നില്ല"</string>
-    <string name="sip_system_decide" msgid="5577696249416700671">"യാന്ത്രികമായി"</string>
+    <string name="sip_system_decide" msgid="5577696249416700671">"സ്വയമേവ"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"എല്ലായ്പ്പോഴും അയയ്‌ക്കുക"</string>
     <string name="sip_connection_service_label" msgid="6935325004265884453">"അന്തർ നിർമ്മിത SIP കോൾചെയ്യൽ"</string>
 </resources>
diff --git a/sip/res/values-mn-rMN/strings.xml b/sip/res/values-mn/strings.xml
similarity index 88%
rename from sip/res/values-mn-rMN/strings.xml
rename to sip/res/values-mn/strings.xml
index 48792c6..1dc5c64 100644
--- a/sip/res/values-mn-rMN/strings.xml
+++ b/sip/res/values-mn/strings.xml
@@ -18,38 +18,38 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="sip_settings" msgid="3768482698061677257">"SIP тохиргоонууд"</string>
     <string name="sip_accounts" msgid="85559497282185405">"SIP акаунтууд"</string>
-    <string name="sip_accounts_title" msgid="2082527045326874519">"Акаунт"</string>
+    <string name="sip_accounts_title" msgid="2082527045326874519">"Бүртгэл"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Ирж буй дуудлага хүлээж авах"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Илүү их цэнэг хэрэглэдэг"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP дуудлагыг ашигла"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP дуудлагыг ашигла (зөвхөн Wi-Fi)"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP дуудлага ашиглах"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP дуудлага ашиглах (зөвхөн Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Дата сүлжээтэй үед бүх дуудлагад"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"SIP дуудлага хийхэд зориулагдсан"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Бүх дуудлагад"</string>
-    <string name="add_sip_account" msgid="800843669753980091">"Акаунт нэмэх"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"Бүртгэл нэмэх"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Акаунтыг арилгах"</string>
-    <string name="sip_account_list" msgid="5610858485304821480">"SIP акаунт"</string>
+    <string name="sip_account_list" msgid="5610858485304821480">"SIP бүртгэл"</string>
     <string name="saving_account" msgid="5336529880235177448">"Акаунтыг хадгалж байна…"</string>
     <string name="removing_account" msgid="5537351356808985756">"Акаунтыг арилгаж байна…"</string>
     <string name="sip_menu_save" msgid="7882219814563869225">"Хадгалах"</string>
     <string name="sip_menu_discard" msgid="2350421645423888438">"Устг"</string>
     <string name="alert_dialog_close" msgid="1326011828713435134">"Профайлыг хаана уу"</string>
-    <string name="alert_dialog_ok" msgid="4752048404605388940">"Тийм"</string>
+    <string name="alert_dialog_ok" msgid="4752048404605388940">"OK"</string>
     <string name="close_profile" msgid="3122414058856309881">"Хаах"</string>
     <string name="registration_status_checking_status" msgid="6136793741862200337">"Статусыг шалгаж байна..."</string>
     <string name="registration_status_registering" msgid="2677183977796278749">"Бүртгэж байна…"</string>
     <string name="registration_status_still_trying" msgid="7648151061205513458">"Оролдож байна…"</string>
     <string name="registration_status_not_receiving" msgid="7620333886153361090">"Дуудлага хүлээж авахгүй байна."</string>
-    <string name="registration_status_no_data" msgid="2541999976218192413">"Интернэт холболтгүй болсон учир акаунтын бүртгэл зогслоо."</string>
-    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi холболтгүй болсон учир акаунтын бүртгэл зогслоо"</string>
+    <string name="registration_status_no_data" msgid="2541999976218192413">"Интернэт холболтгүй болсон учир бүртгэлийн бүртгэл зогслоо."</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"Wi-Fi холболтгүй болсон учир бүртгэлийн бүртгэл зогслоо"</string>
     <string name="registration_status_not_running" msgid="514205414303796800">"Акаунтын бүртгэл амжилтгүй."</string>
     <string name="registration_status_done" msgid="3264961069247314253">"Дуудлага хүлээн авч байна."</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"Акаунтын бүртгэл амжилтгүй боллоо: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); дараа дахин оролдох болно"</string>
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Акаунтын бүртгэл амжилтгүй боллооl: Хэрэглэгчийн нэр буюу нууц үг буруу"</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Акаунтын бүртгэл амжилтгүй: Серверийн нэрийг шалгана уу."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Энэ акаунтыг <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> апп одоо ашиглаж байна."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"SIP акаунтын мэдээлэл"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP акаунтын мэдээлэл"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"SIP бүртгэлийн мэдээлэл"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP бүртгэлийн мэдээлэл"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Сервер"</string>
     <string name="username_title" msgid="6770064611005663470">"Хэрэглэгчийн нэр"</string>
     <string name="password_title" msgid="5289013731515564295">"Нууц үг"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Сонголтын тохиргоо"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Гэрчлэлийн хэрэглэгчийн нэр"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Гэрчлэлд ашигласан хэрэглэгчийн нэр"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Тохируулаагүй&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Тохируулаагүй&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Тохируулаагүй&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Тохируулаагүй&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Хэрэглэгчийн нэртэй адил&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Сонголтын&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Бүгдийг харуулахын тулд хүрнэ үү"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Бүгдийг нуухын тулд хүрнэ үү"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Шинэ SIP бүртгэлд дэлгэрэнгүй мэдээлэл нэмэх."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> заавал шаардагдах бөгөөд хоосон орхиж болохгүй."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Портын дугаар 1000 болон 65534 хооронд байх ёстой."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP дуудлага хийхийн тулд эхлээд интернет сүлжээгээ шалгана уу"</string>
diff --git a/sip/res/values-mr-rIN/strings.xml b/sip/res/values-mr/strings.xml
similarity index 93%
rename from sip/res/values-mr-rIN/strings.xml
rename to sip/res/values-mr/strings.xml
index 66914f2..49f158c 100644
--- a/sip/res/values-mr-rIN/strings.xml
+++ b/sip/res/values-mr/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP खाती"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"खाती"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"येणारे कॉल प्राप्त करा"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बॅटरी आयुष्‍य वापरते"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"अधिक बॅटरी वापरते"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कॉलिंग वापरा"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कॉलिंग वापरा (वाय-फाय केवळ)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध असल्यावर सर्व कॉलसाठी"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"पर्यायी सेटिंग्ज"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण वापरकर्तानाव"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणासाठी वापरकर्तानाव वापरले"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;सेट नाही&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;सेट नाही&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;सेट नाही&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;सेट नाही&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;वापरकर्तानावासमान&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;पर्यायी&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ सर्व दर्शविण्‍यासाठी स्‍पर्श करा"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ सर्व लपविण्‍यासाठी स्‍पर्श करा"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"नवीन SIP खात्याचा तपशील प्रविष्ट करा."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> आवश्‍यक आहे आणि रिक्त सोडले जाऊ शकत नाही."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट नंबर 1000 आणि 65534 मध्‍ये असावा."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"एक SIP कॉल करण्‍यासाठी, प्रथम आपले इंटरनेट कनेक्‍शन तपासा."</string>
diff --git a/sip/res/values-ms-rMY/strings.xml b/sip/res/values-ms/strings.xml
similarity index 93%
rename from sip/res/values-ms-rMY/strings.xml
rename to sip/res/values-ms/strings.xml
index b42068b..e147623 100644
--- a/sip/res/values-ms-rMY/strings.xml
+++ b/sip/res/values-ms/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Tetapan pilihan"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nama pengguna pengesahan"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nama pengguna yang digunakan untuk pengesahan"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Tidak ditetapkan&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Tidak ditetapkan&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Tidak ditetapkan&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Tidak ditetapkan&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sama dengan nama pengguna&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Pilihan&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Sentuh untuk menunjukkan semua"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Sentuh untuk sembunyikan semua"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Masukkan butiran akaun SIP baharu."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> diperlukan dan tidak boleh dibiarkan kosong."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Nombor port harus berada dalam lingkungan 1000 dan 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Untuk membuat panggilan SIP, periksa sambungan Internet anda dahulu."</string>
diff --git a/sip/res/values-my-rMM/strings.xml b/sip/res/values-my/strings.xml
similarity index 89%
rename from sip/res/values-my-rMM/strings.xml
rename to sip/res/values-my/strings.xml
index 621d4fe..eb32dda 100644
--- a/sip/res/values-my-rMM/strings.xml
+++ b/sip/res/values-my/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP အကောင့်များ"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"အကောင့်များ"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"အဝင် ခေါ်ဆိုမှုများ လက်ခံရန်"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ဘတ်ထရီ သက်တမ်းပိုသုံးပါသည်"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ဘက်ထရီ သက်တမ်းပိုသုံးပါသည်"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ခေါ်ဆိုမှု အသုံးပြုမည်"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ခေါ်ဆိုမှု အသုံးပြုမည် (ကြိုးမဲ့ အင်တာနက်သာ)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ဒေတာ ကွန်ရက် ရှိနေစဉ် ခေါ်ဆိုမှုများ အားလုံး အတွက်"</string>
@@ -31,8 +31,8 @@
     <string name="sip_account_list" msgid="5610858485304821480">"SIP အကောင့်များ"</string>
     <string name="saving_account" msgid="5336529880235177448">"အကောင့်ကို သိမ်းဆည်းနေ…"</string>
     <string name="removing_account" msgid="5537351356808985756">"အကောင့်ကို ဖယ်ရှားနေ…"</string>
-    <string name="sip_menu_save" msgid="7882219814563869225">"သိမ်းပါ"</string>
-    <string name="sip_menu_discard" msgid="2350421645423888438">"စွန့်ပစ်ရန်"</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"သိမ်းရန်"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"ဖယ်ပစ်ရန်"</string>
     <string name="alert_dialog_close" msgid="1326011828713435134">"ပရိုဖိုင်ကို ပိတ်ရန်"</string>
     <string name="alert_dialog_ok" msgid="4752048404605388940">"အိုကေ"</string>
     <string name="close_profile" msgid="3122414058856309881">"ပိတ်ရန်"</string>
@@ -54,21 +54,24 @@
     <string name="username_title" msgid="6770064611005663470">"အသုံးပြုသူ အမည်"</string>
     <string name="password_title" msgid="5289013731515564295">"စကားဝှက်"</string>
     <string name="display_name_title" msgid="579241787583079773">"အမည်ကို ပြပေးရန်"</string>
-    <string name="proxy_address_title" msgid="6890163365640631841">"အထွက် ပရော့စီ လိပ်စာ"</string>
+    <string name="proxy_address_title" msgid="6890163365640631841">"အထွက် ပရောက်စီ လိပ်စာ"</string>
     <string name="port_title" msgid="6693965912656593862">"ပို့ နံပါတ်"</string>
     <string name="transport_title" msgid="889155457465372527">"သယ်ယူပို့ဆောင်ရေးအမျိုးအစား"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"keep-alive ကို ပို့ပါ"</string>
-    <string name="advanced_settings" msgid="6622996380747040711">"ရွေးနိုင်သော ရွေးစရာများ"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"ရွေးနိုင်သော ဆက်တင်များ"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"အသုံးပြုသူ အမည် အထောက်အထားကို စိစစ်ခြင်း"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"အသုံးပြုသူ အမည်ကို အထောက်အထား စိစစ်ရန် သုံးခဲ့"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;သတ်မှတ်မထားပါ&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;သတ်မှတ်မထားပါ&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;သတ်မှတ်မထားပါ&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;သတ်မှတ်မထားပါ&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;အသုံးပြုသူ အမည်နှင့် တူညီသော&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;လိုချင်မှ လုပ်ရန်&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ အားလုံးပြရန် ထိပါ"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ အားလုံး ဖျောက်ရန် ထိပါ"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"SIP အကောင့်သစ်၏ အသေးစိတ်များရိုက်ထည့်ပါ။"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> မှာ လိုအပ်ပြီး ပလာထား မရပါ"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"ပို့ နံပါတ်မှာ ၁၀၀၀ မှ ၆၅၅၃၄ အတွင်းမှာ ရှိရပါမည်"</string>
-    <string name="no_internet_available" msgid="5523747991760017298">"SIP ခေါ်ဆိုမှု ပြုလုပ်ရန်၊ သင့်အင်တာနက် ချိတ်ဆက်မှုကိုဦးစွာ စစ်ဆေးပါ။"</string>
+    <string name="no_internet_available" msgid="5523747991760017298">"SIP ဖုန်းခေါ်ရန်၊ သင့်အင်တာနက် ချိတ်ဆက်မှုကိုဦးစွာ စစ်ဆေးပါ။"</string>
     <string name="no_wifi_available" msgid="1955023904229673488">"ခေါ်ဆိုမှုအတွက် ကြိုးမဲ့ကွန်ရက် ချိတ်ဆက်ရန်လိုအပ်ပါသည် (ကြိုးမဲ့ နှင့် ကွန်ရက်ချိန်ညှိချက်များကို အသုံးပြုပါ)။"</string>
     <string name="no_voip" msgid="3038021971231952704">"SIP ခေါ်ဆိုမှု မထောက်ပံံ့ပါ။"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"အလိုအလျောက်"</string>
diff --git a/sip/res/values-nb/strings.xml b/sip/res/values-nb/strings.xml
index 0d563e8..0ce35ed 100644
--- a/sip/res/values-nb/strings.xml
+++ b/sip/res/values-nb/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP-kontoer"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Kontoer"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Motta innkommende anrop"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bruker mer batterilevetid"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Bruker mer batteri"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"Bruk SIP-anrop"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Bruk SIP-anrop (kun for Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"For alle anrop hvor datanettverk er tilgjengelige"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Valgfrie innstillinger"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Brukernavn for autentisering"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Brukernavn som brukes til autentisering"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ikke angitt&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ikke angitt&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ikke angitt&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ikke angitt&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Samme som brukernavn&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valgfritt&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Trykk for å vise alle"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Trykk for å skjule alle"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Skriv inn opplysningene tilknyttet den nye SIP-kontoen."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> er obligatorisk. Feltet kan ikke være tomt."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Portnummeret må være mellom 1000 og 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"For å bruke SIP-anrop må du først sjekke internettilkoblingen din."</string>
diff --git a/sip/res/values-ne-rNP/strings.xml b/sip/res/values-ne/strings.xml
similarity index 87%
rename from sip/res/values-ne-rNP/strings.xml
rename to sip/res/values-ne/strings.xml
index 7ef1773..2f9010b 100644
--- a/sip/res/values-ne-rNP/strings.xml
+++ b/sip/res/values-ne/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP खाताहरू"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"खाताहरू"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"आगमन कलहरू प्राप्त गर्नुहोस्"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"बढि ब्याट्री आयु खपत गर्छ"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"बढी ब्याट्री आयु खपत गर्छ"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP कल प्रयोग गर्नुहोस्"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP कल प्रयोग गर्नुहोस् (Wi-Fi मात्र)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"डेटा नेटवर्क उपलब्ध हुँदा सबै कलहरूको लागि"</string>
@@ -41,7 +41,7 @@
     <string name="registration_status_still_trying" msgid="7648151061205513458">"प्रयास गरिँदै..."</string>
     <string name="registration_status_not_receiving" msgid="7620333886153361090">"कलहरू प्राप्त भैरहेका छैनन्"</string>
     <string name="registration_status_no_data" msgid="2541999976218192413">"खाता दर्ता प्रक्रिया रोकियो किनकि इन्टरनेट जडित छैन।"</string>
-    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"खाता दर्ता रोकियो किनकि वाइफाइ जडित छैन।"</string>
+    <string name="registration_status_no_wifi_data" msgid="9154717387473039546">"खाता दर्ता रोकियो किनकि Wi-Fi जडित छैन।"</string>
     <string name="registration_status_not_running" msgid="514205414303796800">"खाता दर्ता गर्न विफल"</string>
     <string name="registration_status_done" msgid="3264961069247314253">"कलहरू प्राप्त गर्दै।"</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"खाता दर्ता गर्न विफल: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); पछि प्रयास गर्नुहोस्"</string>
@@ -51,7 +51,7 @@
     <string name="sip_edit_title" msgid="1967247832635750410">"SIP खाता विवरणहरू"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"SIP खाता विवरणहरू"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"सर्भर"</string>
-    <string name="username_title" msgid="6770064611005663470">"प्रयोगकर्ता नाम"</string>
+    <string name="username_title" msgid="6770064611005663470">"एक-पटके पाठ सन्देश"</string>
     <string name="password_title" msgid="5289013731515564295">"पासवर्ड"</string>
     <string name="display_name_title" msgid="579241787583079773">"नाम प्रदर्शन गर्नुहोस्"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"बाहिरका प्रोक्सी ठेगाना"</string>
@@ -59,17 +59,20 @@
     <string name="transport_title" msgid="889155457465372527">"यातायात प्रकार"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"चालु राख्नको लागि पठाउनुहोस्"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"वैकल्पिक सेटिङहरू"</string>
-    <string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरण प्रयोगकर्ता नाम"</string>
-    <string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणको लागि प्रयोगकर्ता नाम प्रयोग भएको"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;सेट गरिएको छैन&gt;"</string>
-    <string name="display_name_summary" msgid="7155076491675565407">"&lt;प्रयोगकर्ता नाम जस्तै&gt;"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"प्रमाणीकरणको एक-पटके पाठ सन्देश"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"प्रमाणीकरणको लागि एक-पटके पाठ सन्देश प्रयोग भएको"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;सेट गरिएको छैन&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;सेट गरिएको छैन&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;सेट गरिएको छैन&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;एक-पटके पाठ सन्देश जस्तै&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;वैकल्पिकgt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ छोएर सबै देखाउनुहोस्"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ छोएर सबै लुकाउनुहोस्"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"नयाँ SIP खाताको विवरणहरू प्रविष्ट गर्नुहोस्।"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> चाहिन्छ र खाली छोड्न सकिँदैन।"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"पोर्ट संख्या १००० र  ६५५३४ को बीचमा हुनुपर्छ।"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"एक SIP कल गर्नका लागि पहिले तपाईंको इन्टरनेट जडान जाँच गर्नुहोस्।"</string>
-    <string name="no_wifi_available" msgid="1955023904229673488">"SIP कलका लागि तपाईँ एउटा Wi-Fi सञ्जालमा जडित हुन पर्छ (ताररहित &amp; सञ्जाल सेटिङ प्रयोग गर्नुहोस्)."</string>
+    <string name="no_wifi_available" msgid="1955023904229673488">"SIP कलका लागि तपाईं एउटा Wi-Fi सञ्जालमा जडित हुन पर्छ (ताररहित &amp; सञ्जाल सेटिङ प्रयोग गर्नुहोस्)."</string>
     <string name="no_voip" msgid="3038021971231952704">"SIP कल गर्न समर्थित छैन"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"स्वचालित"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"सधैँ पठाउनुहोस्"</string>
diff --git a/sip/res/values-nl/strings.xml b/sip/res/values-nl/strings.xml
index e090652..4715559 100644
--- a/sip/res/values-nl/strings.xml
+++ b/sip/res/values-nl/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP-accounts"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Accounts"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Binnenkomende oproepen ontvangen"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Gebruikt meer acculading"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Gebruikt meer batterijlading"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-oproepen gebruiken"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-oproepen gebruiken (alleen wifi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Voor alle oproepen indien gegevensnetwerk beschikbaar is"</string>
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Accountregistratie mislukt: gebruikersnaam of wachtwoord onjuist."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Accountregistratie mislukt: controleer de servernaam."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Dit account wordt momenteel gebruikt door de app <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"SIP-accountdetails"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-accountdetails"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"SIP-gegevens"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-gegevens"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
     <string name="username_title" msgid="6770064611005663470">"Gebruikersnaam"</string>
     <string name="password_title" msgid="5289013731515564295">"Wachtwoord"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Optionele instellingen"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Gebruikersnaam voor verificatie"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Gebruikersnaam die voor de verificatie wordt gebruikt"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Niet ingesteld&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Niet ingesteld&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Niet ingesteld&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Niet ingesteld&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Gelijk aan gebruikersnaam&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Optioneel&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tikken om alles weer te geven"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tikken om alles te verbergen"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Geef details op voor nieuw SIP-account."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> is verplicht en mag niet leeg worden gelaten."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Het poortnummer moet tussen 1000 en 65534 liggen."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Als je een SIP-oproep wilt plaatsen, controleer je eerst je internetverbinding."</string>
diff --git a/sip/res/values-pa-rIN/strings.xml b/sip/res/values-pa/strings.xml
similarity index 84%
rename from sip/res/values-pa-rIN/strings.xml
rename to sip/res/values-pa/strings.xml
index 1db0e5c..8426a72 100644
--- a/sip/res/values-pa-rIN/strings.xml
+++ b/sip/res/values-pa/strings.xml
@@ -20,19 +20,19 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP ਖਾਤੇ"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"ਖਾਤੇ"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ਵੱਧ ਬੈਟਰੀ ਸਮਰੱਥਾ ਵਰਤਦਾ ਹੈ"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ਬੈਟਰੀ ਦੀ ਖਪਤ ਵਧ ਜਾਂਦੀ ਹੈ"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP ਕਾਲਿੰਗ ਵਰਤੋ"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP ਕਾਲਿੰਗ ਵਰਤੋ (ਕੇਵਲ Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"ਜਦੋਂ ਡਾਟਾ ਨੈਟਵਰਕ ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਲਈ"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"ਕੇਵਲ SIP ਕਾਲਾਂ ਲਈ"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"ਸਾਰੀਆਂ ਕਾਲਾਂ ਲਈ"</string>
-    <string name="add_sip_account" msgid="800843669753980091">"ਖਾਤਾ ਜੋੜੋ"</string>
+    <string name="add_sip_account" msgid="800843669753980091">"ਖਾਤਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"ਖਾਤਾ ਹਟਾਓ"</string>
     <string name="sip_account_list" msgid="5610858485304821480">"SIP ਖਾਤੇ"</string>
     <string name="saving_account" msgid="5336529880235177448">"ਖਾਤਾ ਸੁਰੱਖਿਅਤ ਕਰ ਰਿਹਾ ਹੈ…"</string>
     <string name="removing_account" msgid="5537351356808985756">"ਖਾਤਾ ਹਟਾ ਰਿਹਾ ਹੈ…"</string>
-    <string name="sip_menu_save" msgid="7882219814563869225">"ਸੁਰੱਖਿਅਤ ਕਰੋ"</string>
-    <string name="sip_menu_discard" msgid="2350421645423888438">"ਬਰਖਾਸਤ ਕਰੋ"</string>
+    <string name="sip_menu_save" msgid="7882219814563869225">"ਰੱਖਿਅਤ ਕਰੋ"</string>
+    <string name="sip_menu_discard" msgid="2350421645423888438">"ਖਾਰਜ ਕਰੋ"</string>
     <string name="alert_dialog_close" msgid="1326011828713435134">"ਪ੍ਰੋਫਾਈਲ ਬੰਦ ਕਰੋ"</string>
     <string name="alert_dialog_ok" msgid="4752048404605388940">"ਠੀਕ"</string>
     <string name="close_profile" msgid="3122414058856309881">"ਬੰਦ ਕਰੋ"</string>
@@ -45,33 +45,36 @@
     <string name="registration_status_not_running" msgid="514205414303796800">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ।"</string>
     <string name="registration_status_done" msgid="3264961069247314253">"ਕਾਲਾਂ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ।"</string>
     <string name="registration_status_failed_try_later" msgid="2199970021756384317">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: (<xliff:g id="REGISTRATION_ERROR_MESSAGE">%s</xliff:g>); ਬਾਅਦ ਵਿੱਚ ਕੋਸ਼ਿਸ਼ ਕਰੇਗਾ"</string>
-    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਗ਼ਲਤ ਉਪਭੋਗਤਾ ਨਾਮ ਜਾਂ ਪਾਸਵਰਡ।"</string>
+    <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਗ਼ਲਤ ਵਰਤੋਂਕਾਰ ਨਾਮ ਜਾਂ ਪਾਸਵਰਡ।"</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"ਖਾਤਾ ਰਜਿਸਟਰੇਸ਼ਨ ਅਸਫਲ: ਸਰਵਰ ਨਾਮ ਦੀ ਜਾਂਚ ਕਰੋ।"</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"ਇਹ ਖਾਤਾ ਇਸ ਵੇਲੇ <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ਐਪ ਵੱਲੋਂ ਵਰਤੋਂ ਵਿੱਚ ਹੈ।"</string>
     <string name="sip_edit_title" msgid="1967247832635750410">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"SIP ਖਾਤਾ ਵੇਰਵੇ"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"ਸਰਵਰ"</string>
-    <string name="username_title" msgid="6770064611005663470">"ਉਪਭੋਗਤਾ ਨਾਮ"</string>
+    <string name="username_title" msgid="6770064611005663470">"ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
     <string name="password_title" msgid="5289013731515564295">"ਪਾਸਵਰਡ"</string>
     <string name="display_name_title" msgid="579241787583079773">"ਡਿਸਪਲੇ ਨਾਮ"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"ਆਊਟਬਾਊਂਡ ਪ੍ਰੌਕਸੀ ਪਤਾ"</string>
     <string name="port_title" msgid="6693965912656593862">"ਪੋਰਟ ਨੰਬਰ"</string>
-    <string name="transport_title" msgid="889155457465372527">"ਟ੍ਰਾਂਸਪੋਰਟ ਪ੍ਰਕਾਰ"</string>
+    <string name="transport_title" msgid="889155457465372527">"ਟ੍ਰਾਂਸਪੋਰਟ ਦੀ ਕਿਸਮ"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"ਕੀਪ-ਅਲਾਈਵ ਭੇਜੋ"</string>
-    <string name="advanced_settings" msgid="6622996380747040711">"ਚੋਣ ਸੰਬੰਧੀ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="auth_username_title" msgid="8262491689004708265">"ਪ੍ਰਮਾਣੀਕਰਨ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
-    <string name="auth_username_summary" msgid="941160241371436473">"ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਉਪਭੋਗਤਾ ਨਾਮ"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;ਸੈਟ ਨਹੀਂ ਕੀਤਾ&gt;"</string>
-    <string name="display_name_summary" msgid="7155076491675565407">"&lt;ਉਪਭੋਗਤਾ ਨਾਮ ਦੇ ਸਮਾਨ&gt;"</string>
-    <string name="optional_summary" msgid="2363105560396317624">"&lt;ਚੋਣਵਾਂ&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ਸਾਰੇ ਦਿਖਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
-    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ਸਾਰੇ ਲੁਕਾਉਣ ਲਈ ਛੋਹਵੋ"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"ਵਿਕਲਪਕ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="auth_username_title" msgid="8262491689004708265">"ਪ੍ਰਮਾਣੀਕਰਨ ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਗਿਆ ਵਰਤੋਂਕਾਰ ਨਾਮ"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;ਸੈੱਟ ਨਹੀਂ&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;ਸੈੱਟ ਨਹੀਂ&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;ਸੈੱਟ ਨਹੀਂ&gt;"</string>
+    <string name="display_name_summary" msgid="7155076491675565407">"&lt;ਉਹੀ ਹੈ ਜੋ ਵਰਤੋਂਕਾਰ ਨਾਮ ਹੈ&gt;"</string>
+    <string name="optional_summary" msgid="2363105560396317624">"&lt;ਵਿਕਲਪਕ&gt;"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ ਸਾਰੇ ਦਿਖਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ"</string>
+    <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ ਸਾਰੇ ਲੁਕਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰੋ"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"ਨਵੇਂ SIP ਖਾਤੇ ਦੇ ਵੇਰਵੇ ਦਾਖ਼ਲ ਕਰੋ।"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> ਲੁੜੀਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਖਾਲੀ ਨਹੀਂ ਛੱਡਿਆ ਜਾ ਸਕਦਾ।"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"ਪੋਰਟ ਨੰਬਰ 1000 ਅਤੇ 65534 ਵਿਚਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"ਇੱਕ SIP ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਆਪਣੇ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ।"</string>
     <string name="no_wifi_available" msgid="1955023904229673488">"SIP ਕਾਲਾਂ ਲਈ ਤੁਹਾਨੂੰ ਇੱਕ Wi-Fi ਨੈਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ (ਵਾਇਰਲੈਸ &amp; ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਵਰਤੋ)।"</string>
     <string name="no_voip" msgid="3038021971231952704">"SIP ਕਾਲਿੰਗ ਸਮਰਥਿਤ ਨਹੀਂ"</string>
-    <string name="sip_system_decide" msgid="5577696249416700671">"ਆਟੋਮੈਟਿਕ"</string>
+    <string name="sip_system_decide" msgid="5577696249416700671">"ਸਵੈਚਲਿਤ"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"ਹਮੇਸ਼ਾਂ ਭੇਜੋ"</string>
     <string name="sip_connection_service_label" msgid="6935325004265884453">"ਬਿਲਟ-ਇਨ SIP ਕਾਲਿੰਗ"</string>
 </resources>
diff --git a/sip/res/values-pl/strings.xml b/sip/res/values-pl/strings.xml
index 47aa286..d41a95e 100644
--- a/sip/res/values-pl/strings.xml
+++ b/sip/res/values-pl/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Ustawienia opcjonalne"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nazwa do uwierzytelniania"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nazwa użytkownika używana do uwierzytelniania"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nie ustawiono&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nie ustawiono&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nie ustawiono&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nie ustawiono&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Taka sama jak nazwa użytkownika&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcjonalny&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotknij, by wyświetlić wszystkie ustawienia"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dotknij, by ukryć wszystko"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Wpisz szczegóły nowego konta SIP"</string>
     <string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> jest wymagane i nie może pozostać puste."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Numer portu powinien mieć wartość od 1000 do 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Aby nawiązać połączenie SIP, najpierw sprawdź połączenie internetowe."</string>
diff --git a/sip/res/values-pt-rPT/strings.xml b/sip/res/values-pt-rPT/strings.xml
index 6c4fa54..912941d 100644
--- a/sip/res/values-pt-rPT/strings.xml
+++ b/sip/res/values-pt-rPT/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Definições opcionais"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nome de utilizador para autenticação"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nome de utilizador usado para autenticação"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Não definido&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual ao nome de utilizador&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar tudo"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toque para ocultar tudo"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Introduza os detalhes da nova conta SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é obrigatório e tem de ser preenchido."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"O número da porta deve estar entre 1000 e 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Para efetuar uma chamada SIP, verifique primeiro a ligação à Internet."</string>
diff --git a/sip/res/values-pt/strings.xml b/sip/res/values-pt/strings.xml
index fabe5ad..29f0d9f 100644
--- a/sip/res/values-pt/strings.xml
+++ b/sip/res/values-pt/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Configurações opcionais"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nome de usuário da autenticação"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Nome de usuário utilizado para autenticação"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Não definido&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Não definido&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Igual ao nome de usuário&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opcional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Toque para mostrar todas"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Toque para ocultar todas"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Digite os detalhes da nova conta SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> é um campo obrigatório e não pode ser deixado em branco."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"O número da porta deve estar entre 1000 e 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Para fazer uma chamada SIP, verifique sua conexão com a Internet primeiro."</string>
diff --git a/sip/res/values-ro/strings.xml b/sip/res/values-ro/strings.xml
index a167b12..2a92257 100644
--- a/sip/res/values-ro/strings.xml
+++ b/sip/res/values-ro/strings.xml
@@ -57,15 +57,18 @@
     <string name="proxy_address_title" msgid="6890163365640631841">"Adresă proxy de ieșire"</string>
     <string name="port_title" msgid="6693965912656593862">"Numărul portului"</string>
     <string name="transport_title" msgid="889155457465372527">"Tip de transport"</string>
-    <string name="send_keepalive_title" msgid="599627072150501159">"Trimiteți mesaje keep-alive"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"Trimite keep-alive"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"Setări opționale"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Nume de utilizator pentru autentificare"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Numele de utilizator folosit pentru autentificare"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nesetat&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nesetat&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nesetat&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nesetat&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Identic cu numele de utilizator&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opțional&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Atingeți pentru a afișa tot"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Atingeți pentru a ascunde tot"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Introduceți detaliile noului cont SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Câmpul <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> este obligatoriu și nu poate fi lăsat necompletat."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Numărul portului trebuie să fie cuprins între 1000 și 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Pentru a efectua un apel SIP, mai întâi verificați conexiunea la internet."</string>
diff --git a/sip/res/values-ru/strings.xml b/sip/res/values-ru/strings.xml
index 4a1c7be..a950823 100644
--- a/sip/res/values-ru/strings.xml
+++ b/sip/res/values-ru/strings.xml
@@ -25,7 +25,7 @@
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Звонок через SIP (только Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Для всех вызовов при возможности передачи данных"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Только для звонков через SIP"</string>
-    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Для всех вызовов"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Для всех звонков"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Добавить аккаунт"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"Удалить аккаунт"</string>
     <string name="sip_account_list" msgid="5610858485304821480">"SIP-аккаунты"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Расширенные настройки"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Имя пользователя"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Имя пользователя для аутентификации"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Не задано&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Не задано&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Не задано&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Не задано&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Совпадает с именем пользователя&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Необязательно&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Нажмите, чтобы показать все"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Нажмите, чтобы скрыть все"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Укажите параметры нового SIP-аккаунта."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Поле \"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>\" должно быть заполнено."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Номер порта должен быть от 1000 до 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Чтобы сделать звонок через SIP, проверьте подключение к Интернету."</string>
diff --git a/sip/res/values-si-rLK/strings.xml b/sip/res/values-si/strings.xml
similarity index 92%
rename from sip/res/values-si-rLK/strings.xml
rename to sip/res/values-si/strings.xml
index cee3923..541c196 100644
--- a/sip/res/values-si-rLK/strings.xml
+++ b/sip/res/values-si/strings.xml
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"ගිණුම ලියාපදිංචි කිරීම අසාර්ථකයි: වැරදි පරිශීලක නාමයක් හෝ මුරපදයකි"</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"ගිණුම් ලියාපදිංචිය අසාර්ථකයි: සේවාදායකයේ නම පරික්ෂා කර බලන්න."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"මෙම ගිණුම දැනට <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> යෙදුම විසින් භාවිතා කරයි."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"SIP ගිණුම් විස්තර"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP ගිණුම් විස්තර"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"SIP ගිණුමේ විස්තර"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP ගිණුමේ විස්තර"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"සේවාදායකය"</string>
     <string name="username_title" msgid="6770064611005663470">"පරිශීලක නාමය"</string>
     <string name="password_title" msgid="5289013731515564295">"මුරපදය"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"වෛකල්පිත සැකසුම්"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"සත්‍යාපන පරිශීලක නාමය"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"සත්‍යාපනය සඳහා භාවිතා වන පරිශීලක නාමය"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;පිහිටුවා නැත&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;පිහිටුවා නැත&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;පිහිටුවා නැත&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;පිහිටුවා නැත&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;පරිශීලක නාමය වාගේම&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;වෛකල්පිත&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ සියල්ල පෙන්වීමට ස්පර්ශ කරන්න"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ සියල්ල සැඟවීමට ස්පර්ශ කරන්න"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"අලුත් SIP ගිණුමේ විස්තර ඇතුළත් කරන්න."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> අවශ්‍ය වන අතර හිස්ව තැබිය නොහැක."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"කවුළුවේ අංකය 1000 ත් 65534 ත් අතර විය යුතුය."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP ඇමතුමක් ලබාගැනීමට, ඔබගේ අන්තර්ජාල සම්බන්ධතාව මුලින් පරික්ෂා කරන්න."</string>
diff --git a/sip/res/values-sk/strings.xml b/sip/res/values-sk/strings.xml
index 1800b88..872edcb 100644
--- a/sip/res/values-sk/strings.xml
+++ b/sip/res/values-sk/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Voliteľné nastavenia"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Používateľské meno na overenie"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Používateľské meno použité na overenie"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Nenastavené&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Nenastavené&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Nenastavené&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Nenastavené&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Rovnaké ako používateľské meno&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Voliteľné&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Klepnutím všetko zobrazíte"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Klepnutím zobrazíte všetky"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Klepnutím všetko skryjete"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Zadajte informácie o novom účte SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Pole <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je povinné a nemôže zostať prázdne."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Číslo portu by malo byť od 1 000 do 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Ak chcete uskutočniť hovor SIP, najprv skontrolujte svoje internetové pripojenie."</string>
diff --git a/sip/res/values-sl/strings.xml b/sip/res/values-sl/strings.xml
index 55f556b..c9c6d57 100644
--- a/sip/res/values-sl/strings.xml
+++ b/sip/res/values-sl/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Izbirne nastavitve"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Uporabniško ime za preverjanje pristnosti"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Uporabniško ime za preverjanje pristnosti"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ni nastavljeno&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ni nastavljeno&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ni nastavljeno&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ni nastavljeno&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Enako kot uporabniško ime&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Izbirno&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Dotaknite se, da prikažete vse"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Dotaknite se, če želite skriti vse"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Vnesite podrobnosti novega računa SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Polje <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> je obvezno in ne sme biti prazno."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Številka vrat mora biti med 1000 in 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Če želite opraviti klic SIP, najprej preverite internetno povezavo."</string>
diff --git a/sip/res/values-sq-rAL/strings.xml b/sip/res/values-sq/strings.xml
similarity index 93%
rename from sip/res/values-sq-rAL/strings.xml
rename to sip/res/values-sq/strings.xml
index f7c794f..8118e61 100644
--- a/sip/res/values-sq-rAL/strings.xml
+++ b/sip/res/values-sq/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Cilësimet opsionale"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Emri i përdoruesit për vërtetim"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Emri i përdoruesit i përdorur për vërtetim"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;I pavendosur&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;I pavendosur&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;I pavendosur&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;I pavendosur&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Njësoj si emri i përdoruesit&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Jo e detyrueshme&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Prek për t\'i shfaqur të gjitha"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Prek për t\'i fshehur të gjitha"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Fut të dhënat e një llogarie të re SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> është e detyrueshme dhe nuk mund të lihet bosh."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Numri i portës duhet të jetë brenda 1 000 dhe 65 534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Për të kryer një telefonatë SIP, kontrollo lidhjen e internetit së pari."</string>
diff --git a/sip/res/values-sr/strings.xml b/sip/res/values-sr/strings.xml
index 18ae28f..4d38760 100644
--- a/sip/res/values-sr/strings.xml
+++ b/sip/res/values-sr/strings.xml
@@ -21,8 +21,8 @@
     <string name="sip_accounts_title" msgid="2082527045326874519">"Налози"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Примај долазне позиве"</string>
     <string name="sip_receive_calls_summary" msgid="946161517528227523">"Више троши батерију"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"Користите SIP позиве"</string>
-    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користите SIP позиве (само за Wi-Fi)"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"Користите SIP позивање"</string>
+    <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Користите SIP позивање (само за Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"За све позиве када је мрежа за пренос података доступна"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Само за SIP позиве"</string>
     <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"За све позиве"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Опционална подешавања"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Корисничко име за потврду идентитета"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"За потврду идентитета користи се корисничко име"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Није подешено&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Није подешено&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Није подешено&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Није подешено&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Исто као корисничко име&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Опционално&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Додирните да бисте приказали све"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Додирните да бисте сакрили све"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Унесите детаље о новом SIP налогу."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Поље <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> је обавезно и не може да буде празно."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Број порта би требало да буде између 1000 и 65.534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Да бисте упутили SIP позив, прво проверите интернет везу."</string>
@@ -73,5 +76,5 @@
     <string name="no_voip" msgid="3038021971231952704">"SIP позивање није подржано"</string>
     <string name="sip_system_decide" msgid="5577696249416700671">"Аутоматски"</string>
     <string name="sip_always_send_keepalive" msgid="4773022409239823318">"Увек шаљи"</string>
-    <string name="sip_connection_service_label" msgid="6935325004265884453">"Уграђена функција SIP позива"</string>
+    <string name="sip_connection_service_label" msgid="6935325004265884453">"Уграђена функција SIP позивања"</string>
 </resources>
diff --git a/sip/res/values-sv/strings.xml b/sip/res/values-sv/strings.xml
index 685efd2..78947b1 100644
--- a/sip/res/values-sv/strings.xml
+++ b/sip/res/values-sv/strings.xml
@@ -48,8 +48,8 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"Det gick inte att registrera kontot: felaktigt användarnamn eller lösenord."</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"Det gick inte att registrera kontot. Kontrollera servernamnet."</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"Kontot används för närvarande i appen <xliff:g id="ACCOUNT_OWNER">%s</xliff:g>."</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"Information om SIP-kontot"</string>
-    <string name="sip_edit_new_title" msgid="266414118302574305">"Information om SIP-kontot"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"SIP-kontouppgifter"</string>
+    <string name="sip_edit_new_title" msgid="266414118302574305">"SIP-kontouppgifter"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
     <string name="username_title" msgid="6770064611005663470">"Användarnamn"</string>
     <string name="password_title" msgid="5289013731515564295">"Lösenord"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Valfria inställningar"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Användarnamn vid autentisering"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Användarnamn som används vid autentisering"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Har inte angetts&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Inte inställd&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Inte inställd&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Inte inställd&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Samma som användarnamn&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Valfritt&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tryck om du vill visa alla"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tryck om du vill dölja alla"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Ange uppgifter för det nya SIP-kontot."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> är ett obligatoriskt fält som måste fyllas i."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Portnumret ska vara mellan 1000 och 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Om du vill ringa ett SIP-samtal kontrollerar du först att du är ansluten till internet."</string>
diff --git a/sip/res/values-sw/strings.xml b/sip/res/values-sw/strings.xml
index 714b7b2..d18833b 100644
--- a/sip/res/values-sw/strings.xml
+++ b/sip/res/values-sw/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Mipangilio ya hiari"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Jina la mtumiaji la uthibitishaji"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Jina la mtumiaji hutumika kwa uthibitishaji"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Haijawekwa&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Haijawekwa&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Haijawekwa&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Haijawekwa&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Sawa na jina la mtumiaji&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&amp;lt Ni hiari &gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Gusa ili uonyeshe yote"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Gusa ili ufiche zote"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Weka maelezo ya akaunti mpya ya SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> sharti ijazwe na haiwezi kuachwa wazi."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Nambari ya mlango inafaa kuwa kati ya 1000 na 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Ili upige simu ya SIP, kwanza kagua muunganisho wako wa Intaneti."</string>
diff --git a/sip/res/values-ta-rIN/strings.xml b/sip/res/values-ta/strings.xml
similarity index 93%
rename from sip/res/values-ta-rIN/strings.xml
rename to sip/res/values-ta/strings.xml
index 130fbb6..9ba7cfc 100644
--- a/sip/res/values-ta-rIN/strings.xml
+++ b/sip/res/values-ta/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"விருப்ப அமைப்பு"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"அங்கீகாரப் பயனர்பெயர்"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"அங்கீகரிப்பிற்குப் பயன்படுத்தப்படும் பயனர்பெயர்"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;அமைக்கப்படவில்லை&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;அமைக்கப்படவில்லை&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;அமைக்கப்படவில்லை&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;அமைக்கப்படவில்லை&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;பயனர்பெயர் போன்றது&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;விரும்பினால்&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ எல்லாவற்றையும் காட்ட தொடவும்"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ எல்லாவற்றையும் மறைக்கத் தொடவும்"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"புதிய SIP கணக்கின் விவரங்களை உள்ளிடவும்."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> அவசியமானது மற்றும் வெறுமையாக விடக்கூடாது."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"போர்ட் எண் 1000 இலிருந்து 65534 க்குள் இருக்க வேண்டும்."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP மூலம் அழைக்க, முதலில் இணைய இணைப்பைச் சரிபார்க்கவும்."</string>
diff --git a/sip/res/values-te-rIN/strings.xml b/sip/res/values-te/strings.xml
similarity index 93%
rename from sip/res/values-te-rIN/strings.xml
rename to sip/res/values-te/strings.xml
index 713f42b..80a745b 100644
--- a/sip/res/values-te-rIN/strings.xml
+++ b/sip/res/values-te/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP ఖాతాలు"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"ఖాతాలు"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"ఇన్‌కమింగ్ కాల్‌లను స్వీకరించు"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ఎక్కువ బ్యాటరీ జీవితకాలాన్ని ఉపయోగిస్తుంది"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"ఎక్కువ బ్యాటరీని ఉపయోగిస్తుంది"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"SIP కాలింగ్‌ను ఉపయోగించండి"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP కాలింగ్‌ను (Wi-Fi మాత్రమే) ఉపయోగించండి"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"డేటా నెట్‌వర్క్ అందుబాటులో ఉన్నప్పుడు అన్ని కాల్‌ల కోసం"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"ఐచ్ఛిక సెట్టింగ్‌లు"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"ప్రామాణీకరణ వినియోగదారు పేరు"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"ప్రామాణీకరణ కోసం వినియోగదారు పేరు ఉపయోగించబడింది"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;సెట్ చేయలేదు&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;సెట్ చేయలేదు&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;సెట్ చేయలేదు&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;సెట్ చేయలేదు&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;వినియోగదారు పేరు మాదిరే&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ఐచ్ఛికం&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ అన్నీ చూపడానికి తాకండి"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ అన్నీ దాచడానికి తాకండి"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"కొత్త SIP ఖాతా వివరాలను నమోదు చేయండి."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> అవసరం కావున ఖాళీగా వదిలిపెట్టకూడదు."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"పోర్ట్ సంఖ్య 1000 మరియు 65534 మధ్య ఉండాలి."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP కాల్ చేయడానికి, ముందుగా మీ ఇంటర్నెట్ కనెక్షన్‌ను తనిఖీ చేయండి."</string>
diff --git a/sip/res/values-th/strings.xml b/sip/res/values-th/strings.xml
index c3e4e89..1616cec 100644
--- a/sip/res/values-th/strings.xml
+++ b/sip/res/values-th/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"การตั้งค่าที่ไม่บังคับ"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"ชื่อผู้ใช้สำหรับตรวจสอบสิทธิ์"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"ชื่อผู้ใช้ที่ใช้ในการตรวจสอบสิทธิ์"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;ไม่ได้ตั้งค่า&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;ไม่ได้ตั้งค่า&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;ไม่ได้ตั้งค่า&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;ไม่ได้ตั้งค่า&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;เหมือนกับชื่อผู้ใช้&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;ไม่บังคับ&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ แตะเพื่อแสดงทั้งหมด"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ แตะเพื่อซ่อนทั้งหมด"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"ป้อนรายละเอียดของบัญชี SIP ใหม่"</string>
     <string name="empty_alert" msgid="6659484914371384024">"ต้องระบุ <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> และไม่สามารถปล่อยว่างได้"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"หมายเลขพอร์ตควรอยู่ระหว่าง 1000 ถึง 65534"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"หากต้องการโทรผ่าน SIP ให้ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตก่อน"</string>
diff --git a/sip/res/values-tl/strings.xml b/sip/res/values-tl/strings.xml
index 893421a..7b7060d 100644
--- a/sip/res/values-tl/strings.xml
+++ b/sip/res/values-tl/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Mga opsyonal na setting"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Username sa pagpapatunay"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Ginamit ang username para sa pagpapatunay"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Hindi nakatakda&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Hindi nakatakda&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Hindi nakatakda&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Hindi nakatakda&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Katulad ng username&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Opsyonal&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Pindutin upang ipakita lahat"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Pindutin upang itago lahat"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Ilagay ang mga detalye ng bagong SIP account."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Kinakailangan ang <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> at hindi maaaring iwanang blangko."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Dapat na nasa pagitan ng 1000 at 65534 ang numero ng port."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Upang tumawag sa pamamagitan ng SIP, suriin muna ang iyong koneksyon sa Internet."</string>
diff --git a/sip/res/values-tr/strings.xml b/sip/res/values-tr/strings.xml
index dad7ab6..ff52b4e 100644
--- a/sip/res/values-tr/strings.xml
+++ b/sip/res/values-tr/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"İsteğe bağlı ayarlar"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Kimlik doğrulama kullanıcı adı"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Kimlik doğrulama için kullanılan kullanıcı adı"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ayarlanmadı&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ayarlanmadı&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ayarlanmadı&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ayarlanmadı&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Kullanıcı adıyla aynı&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;İsteğe bağlı&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Tümünü görmek için dokunun"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Tümünü gizlemek için dokunun"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Yeni SIP hesabının ayrıntılarını girin"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> gerekli, bu alan boş bırakılamaz."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Bağlantı noktası numarası 1000 ile 65534 arasında olmalıdır."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Bir SIP çağrısı yapmak için önce İnternet bağlantınızı kontrol edin."</string>
diff --git a/sip/res/values-uk/strings.xml b/sip/res/values-uk/strings.xml
index e295cb0..b9d9e77 100644
--- a/sip/res/values-uk/strings.xml
+++ b/sip/res/values-uk/strings.xml
@@ -57,15 +57,18 @@
     <string name="proxy_address_title" msgid="6890163365640631841">"Адреса проксі-сервера вихідних дзвінків"</string>
     <string name="port_title" msgid="6693965912656593862">"Номер порту"</string>
     <string name="transport_title" msgid="889155457465372527">"Тип транспортування"</string>
-    <string name="send_keepalive_title" msgid="599627072150501159">"Надсилання повідомлення для підтримки з’єднання"</string>
+    <string name="send_keepalive_title" msgid="599627072150501159">"Надсилання для підтримки з’єднання"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"Додаткові налаштування"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Ім’я користувача для автентифікації"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Ім’я користувача, використане для автентифікації"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Не встановлено&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Не встановлено&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Не встановлено&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Не встановлено&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Те саме, що й ім’я користувача&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Додатково&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Торкніться, щоб показати все"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Торкніться, щоб сховати все"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Введіть деталі нового облікового запису SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"Поле <xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> обов’язкове. Воно не може бути порожнім."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Введіть номер порту між 1000 та 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Щоб здійснити виклик SIP, спершу перевірте своє з’єднання з Інтернетом."</string>
diff --git a/sip/res/values-ur-rPK/strings.xml b/sip/res/values-ur/strings.xml
similarity index 93%
rename from sip/res/values-ur-rPK/strings.xml
rename to sip/res/values-ur/strings.xml
index 3ff39d1..4fe7bd8 100644
--- a/sip/res/values-ur-rPK/strings.xml
+++ b/sip/res/values-ur/strings.xml
@@ -48,7 +48,7 @@
     <string name="registration_status_invalid_credentials" msgid="8406872554323334182">"اکاؤنٹ رجسٹریشن ناکام ہوگیا: غلط صارف نام یا پاس ورڈ۔"</string>
     <string name="registration_status_server_unreachable" msgid="7710275557045148634">"اکاؤنٹ رجسٹریشن ناکام ہوگیا: سرور کا نام چیک کریں۔"</string>
     <string name="third_party_account_summary" msgid="9041060473615403041">"یہ اکاؤنٹ فی الحال <xliff:g id="ACCOUNT_OWNER">%s</xliff:g> ایپ کے ذریعہ زیر استعمال ہے۔"</string>
-    <string name="sip_edit_title" msgid="1967247832635750410">"‏SIP اکاؤنٹ کی تفصیلات"</string>
+    <string name="sip_edit_title" msgid="1967247832635750410">"‏SIP اکاؤنٹ تفصیلات"</string>
     <string name="sip_edit_new_title" msgid="266414118302574305">"‏SIP اکاؤنٹ کی تفصیلات"</string>
     <string name="domain_address_title" msgid="1968479941328225423">"سرور"</string>
     <string name="username_title" msgid="6770064611005663470">"صارف نام"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"اختیاری ترتیبات"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"توثیق کیلئے صارف نام"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"توثیق کیلئے استعمال کردہ صارف نام"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"‏&lt;سیٹ نہیں ہے&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"‏‎&lt;سیٹ نہیں ہے&gt;‎"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"‏‎&lt;سیٹ نہیں ہے&gt;‎"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"‏‎&lt;سیٹ نہیں ہے&gt;‎"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"‏&lt;بالکل وہی جو صارف نام ہے&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"‏&lt;اختیاری&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"◁ سبھی کو دکھانے کیلئے ٹچ کریں"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ سبھی کو چھپانے کیلئے ٹچ کریں"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"‏نئے SIP اکاؤنٹ کی تفصیلات شامل کریں۔"</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> مطلوب ہے اور خالی نہیں چھوڑا جا سکتا۔"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"پورٹ نمبر 1000 اور 65534 کے اندر ہونا چاہیے۔"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"‏ایک SIP کال کرنے کیلئے، پہلے اپنا انٹرنیٹ کنکشن چیک کریں۔"</string>
diff --git a/sip/res/values-uz-rUZ/strings.xml b/sip/res/values-uz/strings.xml
similarity index 88%
rename from sip/res/values-uz-rUZ/strings.xml
rename to sip/res/values-uz/strings.xml
index 94c6cef..1263e0c 100644
--- a/sip/res/values-uz-rUZ/strings.xml
+++ b/sip/res/values-uz/strings.xml
@@ -19,15 +19,15 @@
     <string name="sip_settings" msgid="3768482698061677257">"SIP sozlamalari"</string>
     <string name="sip_accounts" msgid="85559497282185405">"SIP hisoblari"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Hisoblar"</string>
-    <string name="sip_receive_calls" msgid="426678617137462173">"Kiruvchilarni qabul qilish"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Batareya quvvatini ko‘p sarflaydi"</string>
-    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP-qo‘ng‘iroq"</string>
+    <string name="sip_receive_calls" msgid="426678617137462173">"Kiruvchi chaqiruvlarni qabul qilish"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Batareya quvvati tezroq sarflanadi"</string>
+    <string name="sip_call_options_title" msgid="8421210494703869806">"SIP orqali chaqiruv"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"SIP-qo‘ng‘iroq (faqat Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Tarmoq trafigi mavjud bo‘lganda barcha qo‘ng‘iroqlar uchun"</string>
-    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Faqat SIP-qo‘ng‘iroqlar uchun"</string>
-    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Barcha qo‘ng‘iroqlar uchun"</string>
+    <string name="sip_call_options_entry_2" msgid="1815335903940609729">"Faqat SIP chaqiruvlar uchun"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"Barcha chaqiruvlar uchun"</string>
     <string name="add_sip_account" msgid="800843669753980091">"Hisob qo‘shish"</string>
-    <string name="remove_sip_account" msgid="1367664438506503690">"Hisobni o‘chirish"</string>
+    <string name="remove_sip_account" msgid="1367664438506503690">"Hisobni olib tashlash"</string>
     <string name="sip_account_list" msgid="5610858485304821480">"SIP hisoblari"</string>
     <string name="saving_account" msgid="5336529880235177448">"Hisob saqlanmoqda…"</string>
     <string name="removing_account" msgid="5537351356808985756">"Hisob o‘chirilmoqda…"</string>
@@ -53,19 +53,22 @@
     <string name="domain_address_title" msgid="1968479941328225423">"Server"</string>
     <string name="username_title" msgid="6770064611005663470">"Foydalanuvchi nomi"</string>
     <string name="password_title" msgid="5289013731515564295">"Parol"</string>
-    <string name="display_name_title" msgid="579241787583079773">"Ko‘rsatiladigan nom"</string>
+    <string name="display_name_title" msgid="579241787583079773">"Ko‘rsatiladigan ism"</string>
     <string name="proxy_address_title" msgid="6890163365640631841">"Proksi-server manzili"</string>
     <string name="port_title" msgid="6693965912656593862">"Port raqami"</string>
     <string name="transport_title" msgid="889155457465372527">"Protokol"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"Keep-alive elementini yuborish"</string>
-    <string name="advanced_settings" msgid="6622996380747040711">"Qo‘shimcha sozlamalar"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"Kengaytirilgan sozlamalar"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Foydalanuvchi nomi"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Haqiqiylikni tekshirish uchun foydalanuvchi nomi"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ko‘rsatilmagan&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Kiritilmagan&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Kiritilmagan&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Kiritilmagan&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Foydalanuvchi nomi bilan bir xil&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Ixtiyoriy&gt;"</string>
-    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Barchasini ko‘rsatish uchun bosing"</string>
+    <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Hammasini ochish uchun bosing"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Berkitish uchun bu yerga bosing"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Yangi SIP hisobingiz ma’lumotlarini kiriting."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>ni to‘ldirish shart, u bo‘sh qolmasligi kerak."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Port raqami 1000 va 65534 oralig‘ida bo‘lishi kerak."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"SIP qo‘ng‘irog‘ini amalga oshirish uchun avval internetga ulanishni tekshiring."</string>
diff --git a/sip/res/values-vi/strings.xml b/sip/res/values-vi/strings.xml
index c72eb03..4e4c35c 100644
--- a/sip/res/values-vi/strings.xml
+++ b/sip/res/values-vi/strings.xml
@@ -20,7 +20,7 @@
     <string name="sip_accounts" msgid="85559497282185405">"Tài khoản SIP"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"Tài khoản"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"Nhận cuộc gọi đến"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Sử dụng nhiều thời lượng pin hơn"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"Tốn pin hơn"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"Sử dụng tính năng gọi điện SIP"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"Sử dụng tính năng gọi điện SIP (chỉ Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"Dành cho tất cả các cuộc gọi khi mạng dữ liệu sẵn có"</string>
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Cài đặt tùy chọn"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Tên người dùng xác thực"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Tên người dùng để xác thực"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Chưa đặt&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Chưa được đặt&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Chưa được đặt&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Chưa được đặt&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Giống như tên người dùng&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Tùy chọn&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Chạm để hiển thị tất cả"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Chạm để ẩn tất cả"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Nhập chi tiết của tài khoản SIP mới."</string>
     <string name="empty_alert" msgid="6659484914371384024">"<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> là bắt buộc và không thể để trống."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Số cổng phải trong khoảng từ 1000 đến 65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Để thực hiện cuộc gọi SIP, trước tiên hãy kiểm tra kết nối Internet của bạn."</string>
diff --git a/sip/res/values-zh-rCN/strings.xml b/sip/res/values-zh-rCN/strings.xml
index db4e2e9..5ba209f 100644
--- a/sip/res/values-zh-rCN/strings.xml
+++ b/sip/res/values-zh-rCN/strings.xml
@@ -60,12 +60,15 @@
     <string name="send_keepalive_title" msgid="599627072150501159">"发送持续连接消息"</string>
     <string name="advanced_settings" msgid="6622996380747040711">"可选设置"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"身份验证用户名"</string>
-    <string name="auth_username_summary" msgid="941160241371436473">"用于身份验证的用户名"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;未设置&gt;"</string>
+    <string name="auth_username_summary" msgid="941160241371436473">"用于验证身份的用户名"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;未设置&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;未设置&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;未设置&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;与用户名相同&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;可选&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ 触摸可全部显示"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 触摸可全部隐藏"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"请输入新 SIP 帐号的详情。"</string>
     <string name="empty_alert" msgid="6659484914371384024">"“<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>”属于必填字段,不得留空。"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"端口号应在1000与65534之间。"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"要拨打 SIP 电话,请先检查您的互联网连接。"</string>
diff --git a/sip/res/values-zh-rHK/strings.xml b/sip/res/values-zh-rHK/strings.xml
index 84fbcf0..f844b77 100644
--- a/sip/res/values-zh-rHK/strings.xml
+++ b/sip/res/values-zh-rHK/strings.xml
@@ -20,12 +20,12 @@
     <string name="sip_accounts" msgid="85559497282185405">"SIP 帳戶"</string>
     <string name="sip_accounts_title" msgid="2082527045326874519">"帳戶"</string>
     <string name="sip_receive_calls" msgid="426678617137462173">"接聽來電"</string>
-    <string name="sip_receive_calls_summary" msgid="946161517528227523">"消耗更多電量"</string>
+    <string name="sip_receive_calls_summary" msgid="946161517528227523">"耗電量更多"</string>
     <string name="sip_call_options_title" msgid="8421210494703869806">"使用 SIP 通話"</string>
     <string name="sip_call_options_wifi_only_title" msgid="5112579243580893890">"使用 SIP 通話 (只限 Wi-Fi)"</string>
     <string name="sip_call_options_entry_1" msgid="7217659161237099900">"數據網絡可用時,適用於所有通話"</string>
     <string name="sip_call_options_entry_2" msgid="1815335903940609729">"只限 SIP 通話"</string>
-    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"適用於所有通話"</string>
+    <string name="sip_call_options_wifi_only_entry_1" msgid="1358513095551847314">"所有通話"</string>
     <string name="add_sip_account" msgid="800843669753980091">"新增帳戶"</string>
     <string name="remove_sip_account" msgid="1367664438506503690">"移除帳戶"</string>
     <string name="sip_account_list" msgid="5610858485304821480">"SIP 帳戶"</string>
@@ -58,14 +58,17 @@
     <string name="port_title" msgid="6693965912656593862">"通訊埠號碼"</string>
     <string name="transport_title" msgid="889155457465372527">"傳輸類型"</string>
     <string name="send_keepalive_title" msgid="599627072150501159">"傳送 keep-alive"</string>
-    <string name="advanced_settings" msgid="6622996380747040711">"選用設定"</string>
+    <string name="advanced_settings" msgid="6622996380747040711">"可選設定"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"用於驗證的使用者名稱"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;未設定&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;與使用者名稱相同&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;非必填&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ 輕觸即可全部顯示"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 輕觸即可全部隱藏"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"請輸入新 SIP 帳戶的詳細資料。"</string>
     <string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」為必填欄位,不得留空。"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"通訊埠號碼必須介乎 1000 至 65534 之間。"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"如要進行 SIP 通話,請先檢查您的互聯網連線。"</string>
diff --git a/sip/res/values-zh-rTW/strings.xml b/sip/res/values-zh-rTW/strings.xml
index 70a08dd..bdc3961 100644
--- a/sip/res/values-zh-rTW/strings.xml
+++ b/sip/res/values-zh-rTW/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"選用設定"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"驗證使用者名稱"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"用於進行驗證的使用者名稱"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;未設定&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;未設定&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;與使用者名稱相同&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;選擇性&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ 輕觸即可全部顯示"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ 輕觸即可全部隱藏"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"請輸入新 SIP 帳戶的詳細資料。"</string>
     <string name="empty_alert" msgid="6659484914371384024">"「<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g>」為必填欄位,不得留空。"</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"通訊埠號碼必須介於 1000 到 65534 間。"</string>
     <string name="no_internet_available" msgid="5523747991760017298">"如要撥打 SIP 電話,請先檢查您的網際網路連線。"</string>
diff --git a/sip/res/values-zu/strings.xml b/sip/res/values-zu/strings.xml
index 8e79375..dc9bbc0 100644
--- a/sip/res/values-zu/strings.xml
+++ b/sip/res/values-zu/strings.xml
@@ -61,11 +61,14 @@
     <string name="advanced_settings" msgid="6622996380747040711">"Izilungiselelo ongazikhetha"</string>
     <string name="auth_username_title" msgid="8262491689004708265">"Igama lomsebenzisi lokufakazela ubuqiniso"</string>
     <string name="auth_username_summary" msgid="941160241371436473">"Igama lomsebenzisi elisetshenziselwa ukufakazela ubuqiniso"</string>
-    <string name="default_preference_summary" msgid="1979249643719483249">"&lt;Ayisethiwe&gt;"</string>
+    <string name="default_preference_summary_username" msgid="8404717434312826082">"&lt;Ayisethiwe&gt;"</string>
+    <string name="default_preference_summary_password" msgid="4464464672997027904">"&lt;Ayisethiwe&gt;"</string>
+    <string name="default_preference_summary_domain_address" msgid="4871971710197441673">"&lt;Ayisethiwe&gt;"</string>
     <string name="display_name_summary" msgid="7155076491675565407">"&lt;Ifana negama lomsebenzisi&gt;"</string>
     <string name="optional_summary" msgid="2363105560396317624">"&lt;Ongakukhetha&gt;"</string>
     <string name="advanced_settings_show" msgid="7838761602853998622">"▷ Thinta ukuze ubonise konke"</string>
     <string name="advanced_settings_hide" msgid="3480554978705290228">"▽ Thinta ukuze ufihle konke"</string>
+    <string name="all_empty_alert" msgid="4087734950375192387">"Faka imininingwane ye-akhawunti entsha ye-SIP."</string>
     <string name="empty_alert" msgid="6659484914371384024">"I-<xliff:g id="INPUT_FIELD_NAME">%s</xliff:g> iyadingeka futhi ayikwazi ukungabi nalutho."</string>
     <string name="not_a_valid_port" msgid="7931422555587011830">"Inombolo yembobo kumele ibe phakathi kokungu-1000 nokungu-65534."</string>
     <string name="no_internet_available" msgid="5523747991760017298">"Ukuze wenze ikholi ye-SIP, hlola ukuxhumeka kwe-inthanethi yakho kuqala."</string>
diff --git a/sip/res/values/strings.xml b/sip/res/values/strings.xml
index b220d17..d515736 100644
--- a/sip/res/values/strings.xml
+++ b/sip/res/values/strings.xml
@@ -115,8 +115,12 @@
     <!-- Help text of the auth_username field. [CHAR LIMIT=NONE] -->
     <string name="auth_username_summary">Username used for authentication</string>
 
-    <!-- Initial status of the preferences is '<Not set>'. [CHAR LIMIT=NONE] -->
-    <string name="default_preference_summary">&lt;Not set&gt;</string>
+    <!-- Initial status of the username preference is '<Not set>'. [CHAR LIMIT=NONE] -->
+    <string name="default_preference_summary_username">&lt;Not set&gt;</string>
+    <!-- Initial status of the password preference is '<Not set>'. [CHAR LIMIT=NONE] -->
+    <string name="default_preference_summary_password">&lt;Not set&gt;</string>
+    <!-- Initial status of the domain address preference is '<Not set>'. [CHAR LIMIT=NONE] -->
+    <string name="default_preference_summary_domain_address">&lt;Not set&gt;</string>
     <!-- Default value for the display-name preference summary. [CHAR LIMIT=NONE] -->
     <string name="display_name_summary">&lt;Same as username&gt;</string>
     <!-- Default value for the outbound-proxy-address preference summary. [CHAR LIMIT=NONE] -->
@@ -133,6 +137,8 @@
     <!-- Hint to hide the advanced settings section. [CHAR LIMIT=NONE] -->
     <string name="advanced_settings_hide">▽ Touch to hide all</string>
 
+    <!-- Text in an alert dialog telling the user that all input fields can not be left blank. [CHAR LIMIT=NONE] -->
+    <string name="all_empty_alert">Enter details of new SIP account.</string>
     <!-- Text in an alert dialog telling the user that some input field (name of which is also part of the strings being translated above) is required and can not be left blank. [CHAR LIMIT=NONE] -->
     <string name="empty_alert"><xliff:g id="input_field_name" example="Username, Password...">%s</xliff:g> is required and can\'t be left blank.</string>
     <!-- Showing that port number is out of range in an alert dialog. [CHAR LIMIT=NONE] -->
diff --git a/sip/res/xml/sip_edit.xml b/sip/res/xml/sip_edit.xml
index 15e5ce1..58a8a92 100644
--- a/sip/res/xml/sip_edit.xml
+++ b/sip/res/xml/sip_edit.xml
@@ -22,7 +22,7 @@
         android:key="@string/username"
         android:title="@string/username_title"
         android:dialogTitle="@string/username_title"
-        android:summary="@string/default_preference_summary"
+        android:summary="@string/default_preference_summary_username"
         android:persistent="false"
         android:singleLine="true"
         android:inputType="textNoSuggestions"/>
@@ -32,7 +32,7 @@
         android:title="@string/password_title"
         android:dialogTitle="@string/password_title"
         android:password="true"
-        android:summary="@string/default_preference_summary"
+        android:summary="@string/default_preference_summary_password"
         android:persistent="false"
         android:singleLine="true"/>
 
@@ -40,7 +40,7 @@
         android:key="@string/domain_address"
         android:title="@string/domain_address_title"
         android:dialogTitle="@string/domain_address_title"
-        android:summary="@string/default_preference_summary"
+        android:summary="@string/default_preference_summary_domain_address"
         android:persistent="false"
         android:singleLine="true"
         android:inputType="textNoSuggestions"/>
diff --git a/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java b/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
index dd76c27..ec77ff1 100644
--- a/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
+++ b/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java
@@ -23,7 +23,6 @@
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
-import android.text.TextUtils;
 import android.util.Log;
 
 import java.util.List;
@@ -67,7 +66,7 @@
                     sipManager.open(
                             mProfile,
                             SipUtil.createIncomingCallPendingIntent(context,
-                                    mProfile.getUriString()),
+                                    mProfile.getProfileName()),
                             null);
                 } else {
                     sipManager.open(mProfile);
@@ -112,7 +111,10 @@
         return INSTANCE;
     }
 
-    void setup(Context context) {
+    /**
+     * Sets up the Account registry and performs any upgrade operations before it is used.
+     */
+    public void setup(Context context) {
         verifyAndPurgeInvalidPhoneAccounts(context);
         startSipProfilesAsync(context, (String) null, false);
     }
@@ -158,7 +160,7 @@
      *
      * @param sipProfileName Name of the SIP profile.
      */
-    void removeSipProfile(String sipProfileName) {
+    public void removeSipProfile(String sipProfileName) {
         AccountEntry accountEntry = getAccountEntry(sipProfileName);
 
         if (accountEntry != null) {
@@ -231,9 +233,8 @@
      * @param enableProfile Sip account should be enabled.
      */
     private void startSipProfiles(Context context, String sipProfileName, boolean enableProfile) {
-        final SipSharedPreferences sipSharedPreferences = new SipSharedPreferences(context);
-        boolean isReceivingCalls = sipSharedPreferences.isReceivingCallsEnabled();
-        String primaryProfile = sipSharedPreferences.getPrimaryAccount();
+        final SipPreferences sipPreferences = new SipPreferences(context);
+        boolean isReceivingCalls = sipPreferences.isReceivingCallsEnabled();
         TelecomManager telecomManager = TelecomManager.from(context);
         SipManager sipManager = SipManager.newInstance(context);
         SipProfileDb profileDb = new SipProfileDb(context);
@@ -251,12 +252,6 @@
                 startSipServiceForProfile(profile, sipManager, context, isReceivingCalls);
             }
         }
-
-        if (primaryProfile != null) {
-            // Remove the primary account shared preference, ensuring the migration does not
-            // occur again in the future.
-            sipSharedPreferences.cleanupPrimaryAccountSetting();
-        }
     }
 
     /**
diff --git a/sip/src/com/android/services/telephony/sip/SipConnection.java b/sip/src/com/android/services/telephony/sip/SipConnection.java
index 0d8a6f8..2dde5b5 100644
--- a/sip/src/com/android/services/telephony/sip/SipConnection.java
+++ b/sip/src/com/android/services/telephony/sip/SipConnection.java
@@ -17,15 +17,19 @@
 package com.android.services.telephony.sip;
 
 import android.net.Uri;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.telecom.AudioState;
 import android.telecom.Connection;
 import android.telecom.PhoneAccount;
+import android.telecom.TelecomManager;
+import android.util.EventLog;
 import android.util.Log;
 
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
+import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.sip.SipPhone;
 import com.android.services.telephony.DisconnectCauseUtil;
 
@@ -64,6 +68,7 @@
                     null);
         }
         updateAddress();
+        setTechnologyTypeExtra();
         setInitialized();
     }
 
@@ -177,6 +182,18 @@
             }
         } catch (CallStateException e) {
             log("onAnswer, exception: " + e);
+        } catch (IllegalStateException e) {
+            // Call could not be answered due to an invalid audio-codec offered by the caller.  We
+            // will reject the call to stop it from ringing.
+            log("onAnswer, IllegalStateException: " + e);
+            EventLog.writeEvent(0x534e4554, "31752213", -1, "Invalid codec.");
+            onReject();
+        } catch (IllegalArgumentException e) {
+            // Call could not be answered due to an error parsing the SDP.  We will reject the call
+            // to stop it from ringing.
+            log("onAnswer, IllegalArgumentException: " + e);
+            EventLog.writeEvent(0x534e4554, "31752213", -1, "Invalid SDP.");
+            onReject();
         }
     }
 
@@ -309,6 +326,17 @@
         }
     }
 
+    private void setTechnologyTypeExtra() {
+        int phoneType = PhoneConstants.PHONE_TYPE_SIP;
+        if (getExtras() == null) {
+            Bundle b = new Bundle();
+            b.putInt(TelecomManager.EXTRA_CALL_TECHNOLOGY_TYPE, phoneType);
+            setExtras(b);
+        } else {
+            getExtras().putInt(TelecomManager.EXTRA_CALL_TECHNOLOGY_TYPE, phoneType);
+        }
+    }
+
     /**
      * Determines the address for an incoming number.
      *
diff --git a/sip/src/com/android/services/telephony/sip/SipConnectionService.java b/sip/src/com/android/services/telephony/sip/SipConnectionService.java
index ab4223a..a5f48d3 100644
--- a/sip/src/com/android/services/telephony/sip/SipConnectionService.java
+++ b/sip/src/com/android/services/telephony/sip/SipConnectionService.java
@@ -27,7 +27,6 @@
 import android.net.sip.SipProfile;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.ResultReceiver;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
 import android.telecom.ConnectionService;
diff --git a/sip/src/com/android/services/telephony/sip/SipEditor.java b/sip/src/com/android/services/telephony/sip/SipEditor.java
index 6304220..dd475e6 100644
--- a/sip/src/com/android/services/telephony/sip/SipEditor.java
+++ b/sip/src/com/android/services/telephony/sip/SipEditor.java
@@ -17,8 +17,9 @@
 package com.android.services.telephony.sip;
 
 import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
 import android.content.Intent;
-import android.net.sip.SipManager;
 import android.net.sip.SipProfile;
 import android.os.Bundle;
 import android.os.Parcelable;
@@ -58,7 +59,7 @@
     private static final int NA = 0;
 
     private AdvancedSettings mAdvancedSettings;
-    private SipSharedPreferences mSharedPreferences;
+    private SipPreferences mSipPreferences;
     private boolean mDisplayNameSet;
     private boolean mHomeButtonClicked;
     private boolean mUpdateRequired;
@@ -68,10 +69,44 @@
     private Button mRemoveButton;
     private SipAccountRegistry mSipAccountRegistry;
 
+    /**
+     * Dialog fragment class to be used for displaying an alert dialog.
+     */
+    public static class AlertDialogFragment extends DialogFragment {
+        private static final String KEY_MESSAGE = "message";
+
+        /**
+         * Initialize the AlertDialogFragment instance.
+         *
+         * @param message the dialog message to display.
+         * @return the AlertDialogFragment.
+         */
+        public static AlertDialogFragment newInstance(String message) {
+            AlertDialogFragment frag = new AlertDialogFragment();
+            Bundle args = new Bundle();
+            args.putString(KEY_MESSAGE, message);
+            frag.setArguments(args);
+            return frag;
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            String message = getArguments().getString(KEY_MESSAGE);
+
+            return new AlertDialog.Builder(getActivity())
+                    .setTitle(android.R.string.dialog_alert_title)
+                    .setIconAttribute(android.R.attr.alertDialogIcon)
+                    .setMessage(message)
+                    .setPositiveButton(R.string.alert_dialog_ok, null)
+                    .create();
+        }
+    }
+
     enum PreferenceKey {
-        Username(R.string.username, 0, R.string.default_preference_summary),
-        Password(R.string.password, 0, R.string.default_preference_summary),
-        DomainAddress(R.string.domain_address, 0, R.string.default_preference_summary),
+        Username(R.string.username, 0, R.string.default_preference_summary_username),
+        Password(R.string.password, 0, R.string.default_preference_summary_password),
+        DomainAddress(R.string.domain_address, 0,
+                R.string.default_preference_summary_domain_address),
         DisplayName(R.string.display_name, 0, R.string.display_name_summary),
         ProxyAddress(R.string.proxy_address, 0, R.string.optional_summary),
         Port(R.string.port, R.string.default_port, R.string.default_port),
@@ -151,7 +186,7 @@
         if (VERBOSE) log("onCreate, start profile editor");
         super.onCreate(savedInstanceState);
 
-        mSharedPreferences = new SipSharedPreferences(this);
+        mSipPreferences = new SipPreferences(this);
         mProfileDb = new SipProfileDb(this);
         mSipAccountRegistry = SipAccountRegistry.getInstance();
 
@@ -259,7 +294,7 @@
      *
      * @param p The {@link SipProfile} to delete.
      */
-    private void deleteAndUnregisterProfile(SipProfile p) {
+    private void deleteAndUnregisterProfile(SipProfile p) throws IOException {
         if (p == null) return;
         mProfileDb.deleteProfile(p);
         mSipAccountRegistry.stopSipService(this, p.getProfileName());
@@ -285,17 +320,9 @@
             if (VERBOSE) log("Home button clicked, don't show dialog: " + message);
             return;
         }
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                new AlertDialog.Builder(SipEditor.this)
-                        .setTitle(android.R.string.dialog_alert_title)
-                        .setIconAttribute(android.R.attr.alertDialogIcon)
-                        .setMessage(message)
-                        .setPositiveButton(R.string.alert_dialog_ok, null)
-                        .show();
-            }
-        });
+
+        AlertDialogFragment newFragment = AlertDialogFragment.newInstance(message);
+        newFragment.show(getFragmentManager(), null);
     }
 
     private boolean isEditTextEmpty(PreferenceKey key) {
@@ -333,7 +360,13 @@
                             }
                     }
                 } else if (key == PreferenceKey.Port) {
-                    int port = Integer.parseInt(PreferenceKey.Port.getValue());
+                    int port;
+                    try {
+                        port = Integer.parseInt(PreferenceKey.Port.getValue());
+                    } catch (NumberFormatException e) {
+                        showAlert(getString(R.string.not_a_valid_port));
+                        return;
+                    }
                     if ((port < 1000) || (port > 65534)) {
                         showAlert(getString(R.string.not_a_valid_port));
                         return;
@@ -342,9 +375,12 @@
             }
         }
 
-        if (allEmpty || !mUpdateRequired) {
+        if (!mUpdateRequired) {
             finish();
             return;
+        } else if (allEmpty) {
+            showAlert(getString(R.string.all_empty_alert));
+            return;
         } else if (firstEmptyFieldTitle != null) {
             showAlert(getString(R.string.empty_alert, firstEmptyFieldTitle));
             return;
@@ -401,7 +437,7 @@
                 .setPort(Integer.parseInt(PreferenceKey.Port.getValue()))
                 .setSendKeepAlive(isAlwaysSendKeepAlive())
                 .setAutoRegistration(
-                        mSharedPreferences.isReceivingCallsEnabled())
+                        mSipPreferences.isReceivingCallsEnabled())
                 .setAuthUserName(PreferenceKey.AuthUserName.getValue())
                 .build();
     }
diff --git a/sip/src/com/android/services/telephony/sip/SipBroadcastReceiver.java b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
similarity index 69%
rename from sip/src/com/android/services/telephony/sip/SipBroadcastReceiver.java
rename to sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
index 545854d..c754ae4 100644
--- a/sip/src/com/android/services/telephony/sip/SipBroadcastReceiver.java
+++ b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
@@ -21,36 +21,35 @@
 import android.content.Intent;
 import android.net.sip.SipManager;
 import android.os.Bundle;
+import android.os.UserHandle;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.util.Log;
 
 /**
- * Broadcast receiver that handles SIP-related intents.
+ * Broadcast receiver that handles explicit incoming call intents
  */
-public class SipBroadcastReceiver extends BroadcastReceiver {
-    private static final String PREFIX = "[SipBroadcastReceiver] ";
+public class SipIncomingCallReceiver extends BroadcastReceiver {
+    private static final String PREFIX = "[SipIncomingCallReceiver] ";
     private static final boolean VERBOSE = false; /* STOP SHIP if true */
 
     @Override
     public void onReceive(Context context, final Intent intent) {
         String action = intent.getAction();
 
+        if (!isRunningInSystemUser()) {
+            if (VERBOSE) log("SipIncomingCallReceiver only run in system user, ignore " + action);
+            return;
+        }
+
         if (!SipUtil.isVoipSupported(context)) {
             if (VERBOSE) log("SIP VOIP not supported: " + action);
             return;
         }
 
-        SipAccountRegistry sipAccountRegistry = SipAccountRegistry.getInstance();
         if (action.equals(SipManager.ACTION_SIP_INCOMING_CALL)) {
             takeCall(context, intent);
-        } else if (action.equals(SipManager.ACTION_SIP_SERVICE_UP) ||
-                action.equals(SipManager.ACTION_SIP_CALL_OPTION_CHANGED)) {
-            sipAccountRegistry.setup(context);
-        } else if (action.equals(SipManager.ACTION_SIP_REMOVE_PHONE)) {
-            if (VERBOSE) log("SIP_REMOVE_PHONE " +
-                            intent.getStringExtra(SipManager.EXTRA_LOCAL_URI));
-            sipAccountRegistry.removeSipProfile(intent.getStringExtra(SipManager.EXTRA_LOCAL_URI));
         } else {
             if (VERBOSE) log("onReceive, action not processed: " + action);
         }
@@ -68,10 +67,20 @@
         if (accountHandle != null) {
             Bundle extras = new Bundle();
             extras.putParcelable(SipUtil.EXTRA_INCOMING_CALL_INTENT, intent);
-            TelecomManager.from(context).addNewIncomingCall(accountHandle, extras);
+            TelecomManager tm = TelecomManager.from(context);
+            PhoneAccount phoneAccount = tm.getPhoneAccount(accountHandle);
+            if (phoneAccount != null && phoneAccount.isEnabled()) {
+                tm.addNewIncomingCall(accountHandle, extras);
+            } else {
+                log("takeCall, PhoneAccount is disabled. Not accepting incoming call...");
+            }
         }
     }
 
+    private boolean isRunningInSystemUser() {
+        return UserHandle.myUserId() == UserHandle.USER_SYSTEM;
+    }
+
     private static void log(String msg) {
         Log.d(SipUtil.LOG_TAG, PREFIX + msg);
     }
diff --git a/sip/src/com/android/services/telephony/sip/SipSharedPreferences.java b/sip/src/com/android/services/telephony/sip/SipPreferences.java
similarity index 63%
rename from sip/src/com/android/services/telephony/sip/SipSharedPreferences.java
rename to sip/src/com/android/services/telephony/sip/SipPreferences.java
index bad7dd5..f344497 100644
--- a/sip/src/com/android/services/telephony/sip/SipSharedPreferences.java
+++ b/sip/src/com/android/services/telephony/sip/SipPreferences.java
@@ -18,57 +18,27 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.net.sip.SipManager;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.util.Log;
 
 /**
- * Wrapper for SIP's shared preferences.
+ * Wrapper for SIP's preferences.
  */
-public class SipSharedPreferences {
-    private static final String PREFIX = "[SipSharedPreferences] ";
+public class SipPreferences {
+    private static final String PREFIX = "[SipPreferences] ";
     private static final boolean VERBOSE = false; /* STOP SHIP if true */
 
+    // Used to clear out old SharedPreferences file during SipProfile Database Migration
     private static final String SIP_SHARED_PREFERENCES = "SIP_PREFERENCES";
 
-    /**
-     * @deprecated Primary account selection for SIP accounts is no longer relevant.
-     */
-    @Deprecated
-    private static final String KEY_PRIMARY_ACCOUNT = "primary";
-
-    private static final String KEY_NUMBER_OF_PROFILES = "profiles";
-
-    private SharedPreferences mPreferences;
     private Context mContext;
 
-    public SipSharedPreferences(Context context) {
-        mPreferences = context.getSharedPreferences(
-                SIP_SHARED_PREFERENCES, Context.MODE_WORLD_READABLE);
+    public SipPreferences(Context context) {
         mContext = context;
     }
 
-    /**
-     * Returns the primary account URI or null if it does not exist.
-     * @deprecated The primary account setting is no longer used.
-     */
-    @Deprecated
-    public String getPrimaryAccount() {
-        return mPreferences.getString(KEY_PRIMARY_ACCOUNT, null);
-    }
-
-    public void setProfilesCount(int number) {
-        SharedPreferences.Editor editor = mPreferences.edit();
-        editor.putInt(KEY_NUMBER_OF_PROFILES, number);
-        editor.apply();
-    }
-
-    public int getProfilesCount() {
-        return mPreferences.getInt(KEY_NUMBER_OF_PROFILES, 0);
-    }
-
     public void setSipCallOption(String option) {
         Settings.System.putString(mContext.getContentResolver(),
                 Settings.System.SIP_CALL_OPTIONS, option);
@@ -103,15 +73,10 @@
     }
 
     /**
-     * Performs cleanup of the shared preferences, removing the deprecated primary account key if
-     * it exists.
+     * Remove obsolete SharedPreferences File upon upgrade from M->N.
      */
-    public void cleanupPrimaryAccountSetting() {
-        if (mPreferences.contains(KEY_PRIMARY_ACCOUNT)) {
-            SharedPreferences.Editor editor = mPreferences.edit();
-            editor.remove(KEY_PRIMARY_ACCOUNT);
-            editor.apply();
-        }
+    public void clearSharedPreferences() {
+        mContext.deleteSharedPreferences(SIP_SHARED_PREFERENCES);
     }
 
     // TODO: back up to Android Backup
diff --git a/sip/src/com/android/services/telephony/sip/SipProfileDb.java b/sip/src/com/android/services/telephony/sip/SipProfileDb.java
index 578c683..bb1c7ec 100644
--- a/sip/src/com/android/services/telephony/sip/SipProfileDb.java
+++ b/sip/src/com/android/services/telephony/sip/SipProfileDb.java
@@ -21,10 +21,10 @@
 import android.content.Context;
 import android.net.sip.SipProfile;
 import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -45,20 +45,36 @@
 
     private static final String SCHEME_PREFIX = "sip:";
 
+    private Context mContext;
     private String mProfilesDirectory;
-    private SipSharedPreferences mSipSharedPreferences;
+    private SipPreferences mSipPreferences;
     private int mProfilesCount = -1;
 
     public SipProfileDb(Context context) {
-        mProfilesDirectory = context.getFilesDir().getAbsolutePath() + PROFILES_DIR;
-        mSipSharedPreferences = new SipSharedPreferences(context);
+        // Sip Profile Db should always reference CE storage.
+        mContext = context.createCredentialProtectedStorageContext();
+        setupDatabase();
     }
 
-    public void deleteProfile(SipProfile p) {
+    // Only should be used during migration from M->N to move database
+    public void accessDEStorageForMigration() {
+        mContext = mContext.createDeviceProtectedStorageContext();
+        setupDatabase();
+    }
+
+    private void setupDatabase() {
+        mProfilesDirectory = mContext.getFilesDir().getAbsolutePath() + PROFILES_DIR;
+        mSipPreferences = new SipPreferences(mContext);
+    }
+
+    public void deleteProfile(SipProfile p) throws IOException {
         synchronized(SipProfileDb.class) {
-            deleteProfile(new File(mProfilesDirectory + p.getProfileName()));
+            File profileFile = new File(mProfilesDirectory, p.getProfileName());
+            if (!isChild(new File(mProfilesDirectory), profileFile)) {
+                throw new IOException("Invalid Profile Credentials!");
+            }
+            deleteProfile(profileFile);
             if (mProfilesCount < 0) retrieveSipProfileListInternal();
-            mSipSharedPreferences.setProfilesCount(--mProfilesCount);
         }
     }
 
@@ -69,10 +85,23 @@
         file.delete();
     }
 
+    public void cleanupUponMigration() {
+        // Remove empty .../profiles/ directory
+        File dbDir = new File(mProfilesDirectory);
+        if(dbDir.isDirectory()) {
+            dbDir.delete();
+        }
+        // Remove SharedPreferences file as well
+        mSipPreferences.clearSharedPreferences();
+    }
+
     public void saveProfile(SipProfile p) throws IOException {
         synchronized(SipProfileDb.class) {
             if (mProfilesCount < 0) retrieveSipProfileListInternal();
-            File f = new File(mProfilesDirectory + p.getProfileName());
+            File f = new File(mProfilesDirectory, p.getProfileName());
+            if (!isChild(new File(mProfilesDirectory), f)) {
+                throw new IOException("Invalid Profile Credentials!");
+            }
             if (!f.exists()) f.mkdirs();
             AtomicFile atomicFile = new AtomicFile(new File(f, PROFILE_OBJ_FILE));
             FileOutputStream fos = null;
@@ -82,7 +111,6 @@
                 oos = new ObjectOutputStream(fos);
                 oos.writeObject(p);
                 oos.flush();
-                mSipSharedPreferences.setProfilesCount(++mProfilesCount);
                 atomicFile.finishWrite(fos);
             } catch (IOException e) {
                 atomicFile.failWrite(fos);
@@ -93,10 +121,6 @@
         }
     }
 
-    public int getProfilesCount() {
-        return (mProfilesCount < 0) ?  mSipSharedPreferences.getProfilesCount() : mProfilesCount;
-    }
-
     public List<SipProfile> retrieveSipProfileList() {
         synchronized(SipProfileDb.class) {
             return retrieveSipProfileListInternal();
@@ -116,7 +140,6 @@
             sipProfileList.add(p);
         }
         mProfilesCount = sipProfileList.size();
-        mSipSharedPreferences.setProfilesCount(mProfilesCount);
         return sipProfileList;
     }
 
@@ -158,4 +181,19 @@
     private static void log(String msg) {
         Log.d(SipUtil.LOG_TAG, PREFIX + msg);
     }
+
+    /**
+     * Verifies that the file is a direct child of the base directory.
+     */
+    private boolean isChild(File base, File file) {
+        if (base == null || file == null) {
+            return false;
+        }
+        if (!base.equals(file.getAbsoluteFile().getParentFile())) {
+            Log.w(SipUtil.LOG_TAG, "isChild, file is not a child of the base dir.");
+            EventLog.writeEvent(0x534e4554, "31530456", -1, "");
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/sip/src/com/android/services/telephony/sip/SipSettings.java b/sip/src/com/android/services/telephony/sip/SipSettings.java
index 76470e5..0d87798 100644
--- a/sip/src/com/android/services/telephony/sip/SipSettings.java
+++ b/sip/src/com/android/services/telephony/sip/SipSettings.java
@@ -16,9 +16,6 @@
 
 package com.android.services.telephony.sip;
 
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
-
 import android.app.ActionBar;
 import android.app.AlertDialog;
 import android.content.Context;
@@ -34,13 +31,9 @@
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.os.Process;
-import android.preference.CheckBoxPreference;
 import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceCategory;
-import android.telecom.PhoneAccount;
-import android.telecom.TelecomManager;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.Menu;
@@ -76,7 +69,7 @@
     private PreferenceCategory mSipListContainer;
     private Map<String, SipPreference> mSipPreferenceMap;
     private List<SipProfile> mSipProfileList;
-    private SipSharedPreferences mSipSharedPreferences;
+    private SipPreferences mSipPreferences;
     private int mUid = Process.myUid();
 
     private class SipPreference extends Preference {
@@ -93,7 +86,7 @@
         void setProfile(SipProfile p) {
             mProfile = p;
             setTitle(getProfileName(p));
-            updateSummary(mSipSharedPreferences.isReceivingCallsEnabled()
+            updateSummary(mSipPreferences.isReceivingCallsEnabled()
                     ? getString(R.string.registration_status_checking_status)
                     : getString(R.string.registration_status_not_receiving));
         }
@@ -133,7 +126,7 @@
         super.onCreate(savedInstanceState);
 
         mSipManager = SipManager.newInstance(this);
-        mSipSharedPreferences = new SipSharedPreferences(this);
+        mSipPreferences = new SipPreferences(this);
         mProfileDb = new SipProfileDb(this);
 
         mPackageManager = getPackageManager();
@@ -231,7 +224,7 @@
             }
         }
 
-        if (!mSipSharedPreferences.isReceivingCallsEnabled()) return;
+        if (!mSipPreferences.isReceivingCallsEnabled()) return;
         for (SipProfile p : mSipProfileList) {
             if (mUid == p.getCallingUid()) {
                 try {
@@ -245,7 +238,12 @@
     }
 
     private void processActiveProfilesFromSipService() {
-        SipProfile[] activeList = mSipManager.getListOfProfiles();
+        SipProfile[] activeList = {};
+        try {
+            activeList = mSipManager.getListOfProfiles();
+        } catch (SipException e) {
+            log("SipManager could not retrieve SIP profiles: " + e);
+        }
         for (SipProfile activeProfile : activeList) {
             SipProfile profile = getProfileFromList(activeProfile);
             if (profile == null) {
diff --git a/sip/src/com/android/services/telephony/sip/SipUtil.java b/sip/src/com/android/services/telephony/sip/SipUtil.java
index e885fad..28fa6c7 100644
--- a/sip/src/com/android/services/telephony/sip/SipUtil.java
+++ b/sip/src/com/android/services/telephony/sip/SipUtil.java
@@ -31,8 +31,11 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.phone.PhoneGlobals;
 import com.android.phone.R;
+import com.android.server.sip.SipService;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -55,10 +58,10 @@
     }
 
     static PendingIntent createIncomingCallPendingIntent(
-            Context context, String sipUri) {
-        Intent intent = new Intent(context, SipBroadcastReceiver.class);
+            Context context, String sipProfileName) {
+        Intent intent = new Intent(context, SipIncomingCallReceiver.class);
         intent.setAction(SipManager.ACTION_SIP_INCOMING_CALL);
-        intent.putExtra(EXTRA_PHONE_ACCOUNT, SipUtil.createAccountHandle(context, sipUri));
+        intent.putExtra(EXTRA_PHONE_ACCOUNT, SipUtil.createAccountHandle(context, sipProfileName));
         return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
@@ -133,13 +136,65 @@
     }
 
     /**
+     * Upon migration from M->N, the SIP Profile database will be moved into DE storage. This will
+     * not be a problem for non-FBE enabled devices, since DE and CE storage is available at the
+     * same time. This will be a problem for backup/restore, however if the SIP Profile DB is
+     * restored onto a new FBE enabled device.
+     *
+     * Checks if the Sip Db is in DE storage. If it is, the Db is moved to CE storage and
+     * deleted.
+     */
+    private static void possiblyMigrateSipDb(Context context) {
+        SipProfileDb dbDeStorage = new SipProfileDb(context);
+        dbDeStorage.accessDEStorageForMigration();
+        List<SipProfile> profilesDeStorage = dbDeStorage.retrieveSipProfileList();
+        if(profilesDeStorage.size() != 0) {
+            Log.i(LOG_TAG, "Migrating SIP Profiles over!");
+            SipProfileDb dbCeStorage = new SipProfileDb(context);
+            //Perform Profile Migration
+            for (SipProfile profileToMove : profilesDeStorage) {
+                if (dbCeStorage.retrieveSipProfileFromName(
+                        profileToMove.getProfileName()) == null) {
+                    try {
+                        dbCeStorage.saveProfile(profileToMove);
+                    } catch (IOException e) {
+                        Log.w(LOG_TAG, "Error Migrating file to CE: " +
+                                profileToMove.getProfileName(), e);
+                    }
+                }
+                Log.i(LOG_TAG, "(Migration) Deleting SIP profile: " +
+                        profileToMove.getProfileName());
+                try {
+                    dbDeStorage.deleteProfile(profileToMove);
+                } catch (IOException e) {
+                    Log.w(LOG_TAG, "Error Deleting file: " +
+                            profileToMove.getProfileName(), e);
+                }
+            }
+        }
+        // Delete supporting structures if they exist
+        dbDeStorage.cleanupUponMigration();
+    }
+
+    /**
+     * Migrates the DB files over from CE->DE storage and starts the SipService.
+     */
+    public static void startSipService() {
+        Context phoneGlobalsContext = PhoneGlobals.getInstance();
+        // Migrate SIP database from DE->CE storage if the device has just upgraded.
+        possiblyMigrateSipDb(phoneGlobalsContext);
+        // Wait until boot complete to start SIP so that it has access to CE storage.
+        SipService.start(phoneGlobalsContext);
+    }
+
+    /**
      * Determines if the user has chosen to use SIP for PSTN calls as well as SIP calls.
      * @param context The context.
      * @return {@code True} if SIP should be used for PSTN calls.
      */
     private static boolean useSipForPstnCalls(Context context) {
-        final SipSharedPreferences sipSharedPreferences = new SipSharedPreferences(context);
-        return sipSharedPreferences.getSipCallOption().equals(Settings.System.SIP_ALWAYS);
+        final SipPreferences sipPreferences = new SipPreferences(context);
+        return sipPreferences.getSipCallOption().equals(Settings.System.SIP_ALWAYS);
     }
 
     /**
diff --git a/src/com/android/phone/ADNList.java b/src/com/android/phone/ADNList.java
index 2e2db31..b1cb16b 100644
--- a/src/com/android/phone/ADNList.java
+++ b/src/com/android/phone/ADNList.java
@@ -28,7 +28,10 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.text.BidiFormatter;
+import android.text.TextDirectionHeuristics;
 import android.util.Log;
+import android.view.View;
 import android.view.Window;
 import android.widget.CursorAdapter;
 import android.widget.SimpleCursorAdapter;
@@ -161,27 +164,43 @@
     }
 
     protected CursorAdapter newAdapter() {
-        return new SimpleCursorAdapter(this,
-                    android.R.layout.simple_list_item_2,
-                    mCursor, COLUMN_NAMES, VIEW_NAMES);
+        SimpleCursorAdapter sca = new SimpleCursorAdapter(this,
+                android.R.layout.simple_list_item_2,
+                mCursor, COLUMN_NAMES, VIEW_NAMES);
+
+        // This code block is for displaying a phone number including "+ country code" correctly
+        // in bidirectional language (b/35180168).
+        // Without this code, e.g. "+0123456789" is wrongly displayed as "0123456789+".
+        sca.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
+            public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
+                view.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
+                if (columnIndex == NUMBER_COLUMN) {
+                    String num = cursor.getString(NUMBER_COLUMN);
+                    if (num != null) {
+                        BidiFormatter bf = BidiFormatter.getInstance();
+                        num = bf.unicodeWrap(num, TextDirectionHeuristics.LTR, true);
+                    }
+                    if (view instanceof TextView) {
+                        ((TextView) view).setText(num);
+                    }
+                    return true;
+                }
+                return false;
+            }
+        });
+        return sca;
     }
 
     private void displayProgress(boolean loading) {
         if (DBG) log("displayProgress: " + loading);
 
         mEmptyText.setText(loading ? R.string.simContacts_emptyLoading:
-            (isAirplaneModeOn(this) ? R.string.simContacts_airplaneMode :
-                R.string.simContacts_empty));
+                R.string.simContacts_empty);
         getWindow().setFeatureInt(
                 Window.FEATURE_INDETERMINATE_PROGRESS,
                 loading ? PROGRESS_VISIBILITY_ON : PROGRESS_VISIBILITY_OFF);
     }
 
-    private static boolean isAirplaneModeOn(Context context) {
-        return Settings.System.getInt(context.getContentResolver(),
-                Settings.System.AIRPLANE_MODE_ON, 0) != 0;
-    }
-
     private class QueryHandler extends AsyncQueryHandler {
         public QueryHandler(ContentResolver cr) {
             super(cr);
diff --git a/src/com/android/phone/Assert.java b/src/com/android/phone/Assert.java
new file mode 100644
index 0000000..37ccda8
--- /dev/null
+++ b/src/com/android/phone/Assert.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+
+package com.android.phone;
+
+import android.os.Looper;
+
+/**
+ * Assertions which will result in program termination.
+ */
+public class Assert {
+
+    private static Boolean sIsMainThreadForTest;
+
+    public static void isTrue(boolean condition) {
+        if (!condition) {
+            throw new AssertionError("Expected condition to be true");
+        }
+    }
+
+    public static void isMainThread() {
+        if (sIsMainThreadForTest != null) {
+            isTrue(sIsMainThreadForTest);
+            return;
+        }
+        isTrue(Looper.getMainLooper().equals(Looper.myLooper()));
+    }
+
+    public static void isNotMainThread() {
+        if (sIsMainThreadForTest != null) {
+            isTrue(!sIsMainThreadForTest);
+            return;
+        }
+        isTrue(!Looper.getMainLooper().equals(Looper.myLooper()));
+    }
+
+    public static void fail() {
+        fail("Fail");
+    }
+
+    public static void fail(String reason) {
+        throw new AssertionError(reason);
+    }
+
+    /**
+     * Override the main thread status for tests. Set to null to revert to normal behavior
+     */
+    @NeededForTesting
+    public static void setIsMainThreadForTesting(Boolean isMainThread) {
+        sIsMainThreadForTest = isMainThread;
+    }
+}
diff --git a/src/com/android/phone/CallController.java b/src/com/android/phone/CallController.java
index 3af4d7d..a5d340c 100644
--- a/src/com/android/phone/CallController.java
+++ b/src/com/android/phone/CallController.java
@@ -19,7 +19,6 @@
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.phone.CallGatewayManager.RawGatewayInfo;
 import com.android.phone.Constants.CallStatusCode;
 
@@ -226,24 +225,6 @@
             throw new IllegalArgumentException("Unexpected action: " + action);
         }
 
-        // Check to see if this is an OTASP call (the "activation" call
-        // used to provision CDMA devices), and if so, do some
-        // OTASP-specific setup.
-        Phone phone = mApp.mCM.getDefaultPhone();
-        if (TelephonyCapabilities.supportsOtasp(phone)) {
-            checkForOtaspCall(intent);
-        }
-
-        // Clear out the "restore mute state" flag since we're
-        // initiating a brand-new call.
-        //
-        // (This call to setRestoreMuteOnInCallResume(false) informs the
-        // phone app that we're dealing with a new connection
-        // (i.e. placing an outgoing call, and NOT handling an aborted
-        // "Add Call" request), so we should let the mute state be handled
-        // by the PhoneUtils phone state change handler.)
-        mApp.setRestoreMuteOnInCallResume(false);
-
         CallStatusCode status = placeCallInternal(intent);
 
         switch (status) {
@@ -680,28 +661,6 @@
         mApp.startActivity(intent);
     }
 
-    /**
-     * Checks the current outgoing call to see if it's an OTASP call (the
-     * "activation" call used to provision CDMA devices).  If so, do any
-     * necessary OTASP-specific setup before actually placing the call.
-     */
-    private void checkForOtaspCall(Intent intent) {
-        if (OtaUtils.isOtaspCallIntent(intent)) {
-            Log.i(TAG, "checkForOtaspCall: handling OTASP intent! " + intent);
-
-            // ("OTASP-specific setup" basically means creating and initializing
-            // the OtaUtils instance.  Note that this setup needs to be here in
-            // the CallController.placeCall() sequence, *not* in
-            // OtaUtils.startInteractiveOtasp(), since it's also possible to
-            // start an OTASP call by manually dialing "*228" (in which case
-            // OtaUtils.startInteractiveOtasp() never gets run at all.)
-            OtaUtils.setupOtaspCall(intent);
-        } else {
-            if (DBG) log("checkForOtaspCall: not an OTASP call.");
-        }
-    }
-
-
     //
     // Debugging
     //
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 00c9170..1d264fb 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -25,20 +25,24 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
 import android.os.Bundle;
 import android.os.PersistableBundle;
 import android.os.UserHandle;
-import android.preference.CheckBoxPreference;
+import android.os.UserManager;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
 import android.provider.Settings;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
@@ -82,8 +86,6 @@
         implements Preference.OnPreferenceChangeListener {
     private static final String LOG_TAG = "CallFeaturesSetting";
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
-    // STOPSHIP if true. Flag to override behavior default behavior to hide VT setting.
-    private static final boolean ENABLE_VT_FLAG = true;
 
     // String keys for preference lookup
     // TODO: Naming these "BUTTON_*" is confusing since they're not actually buttons(!)
@@ -106,9 +108,9 @@
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
     private TelecomManager mTelecomManager;
 
-    private CheckBoxPreference mButtonAutoRetry;
+    private SwitchPreference mButtonAutoRetry;
     private PreferenceScreen mVoicemailSettingsScreen;
-    private CheckBoxPreference mEnableVideoCalling;
+    private SwitchPreference mEnableVideoCalling;
 
     /*
      * Click Listeners, handle click based on objects attached to UI.
@@ -171,9 +173,9 @@
         super.onCreate(icicle);
         if (DBG) log("onCreate: Intent is " + getIntent());
 
-        // Make sure we are running as the primary user.
-        if (UserHandle.myUserId() != UserHandle.USER_OWNER) {
-            Toast.makeText(this, R.string.call_settings_primary_user_only,
+        // Make sure we are running as an admin user.
+        if (!UserManager.get(this).isAdminUser()) {
+            Toast.makeText(this, R.string.call_settings_admin_user_only,
                     Toast.LENGTH_SHORT).show();
             finish();
             return;
@@ -186,6 +188,24 @@
         mTelecomManager = TelecomManager.from(this);
     }
 
+    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+        @Override
+        public void onCallStateChanged(int state, String incomingNumber) {
+            if (DBG) log("PhoneStateListener onCallStateChanged: state is " + state);
+            if (mEnableVideoCalling != null) {
+                mEnableVideoCalling.setEnabled(state == TelephonyManager.CALL_STATE_IDLE);
+            }
+        }
+    };
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+        telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+    }
+
     @Override
     protected void onResume() {
         super.onResume();
@@ -199,11 +219,7 @@
 
         TelephonyManager telephonyManager =
                 (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-
-        Preference phoneAccountSettingsPreference = findPreference(PHONE_ACCOUNT_SETTINGS_KEY);
-        if (telephonyManager.isMultiSimEnabled() || !SipUtil.isVoipSupported(mPhone.getContext())) {
-            getPreferenceScreen().removePreference(phoneAccountSettingsPreference);
-        }
+        telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
 
         PreferenceScreen prefSet = getPreferenceScreen();
         mVoicemailSettingsScreen =
@@ -211,9 +227,11 @@
         mVoicemailSettingsScreen.setIntent(mSubscriptionInfoHelper.getIntent(
                 VoicemailSettingsActivity.class));
 
-        mButtonAutoRetry = (CheckBoxPreference) findPreference(BUTTON_RETRY_KEY);
+        maybeHideVoicemailSettings();
 
-        mEnableVideoCalling = (CheckBoxPreference) findPreference(ENABLE_VIDEO_CALLING_KEY);
+        mButtonAutoRetry = (SwitchPreference) findPreference(BUTTON_RETRY_KEY);
+
+        mEnableVideoCalling = (SwitchPreference) findPreference(ENABLE_VIDEO_CALLING_KEY);
 
         PersistableBundle carrierConfig =
                 PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
@@ -230,6 +248,8 @@
 
         Preference cdmaOptions = prefSet.findPreference(BUTTON_CDMA_OPTIONS);
         Preference gsmOptions = prefSet.findPreference(BUTTON_GSM_UMTS_OPTIONS);
+        Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);
+        fdnButton.setIntent(mSubscriptionInfoHelper.getIntent(FdnSetting.class));
         if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {
             cdmaOptions.setIntent(mSubscriptionInfoHelper.getIntent(CdmaCallOptions.class));
             gsmOptions.setIntent(mSubscriptionInfoHelper.getIntent(GsmUmtsCallOptions.class));
@@ -238,7 +258,6 @@
             prefSet.removePreference(gsmOptions);
 
             int phoneType = mPhone.getPhoneType();
-            Preference fdnButton = prefSet.findPreference(BUTTON_FDN_KEY);
             if (carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) {
                 prefSet.removePreference(fdnButton);
             } else {
@@ -250,7 +269,6 @@
                         addPreferencesFromResource(R.xml.cdma_call_privacy);
                     }
                 } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
-                    fdnButton.setIntent(mSubscriptionInfoHelper.getIntent(FdnSetting.class));
 
                     if (carrierConfig.getBoolean(
                             CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL)) {
@@ -263,7 +281,11 @@
             }
         }
 
-        if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) && ENABLE_VT_FLAG) {
+        if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) &&
+                ImsManager.isVtProvisionedOnDevice(mPhone.getContext()) &&
+                (carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
+                        || mPhone.mDcTracker.isDataEnabled())) {
             boolean currentValue =
                     ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
                     ? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled(
@@ -289,18 +311,26 @@
             Intent intent = PhoneAccountSettingsFragment.buildPhoneAccountConfigureIntent(
                     this, simCallManager);
             if (intent != null) {
-                wifiCallingSettings.setTitle(R.string.wifi_calling);
-                wifiCallingSettings.setSummary(null);
-                wifiCallingSettings.setIntent(intent);
+                PackageManager pm = mPhone.getContext().getPackageManager();
+                List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
+                if (!resolutions.isEmpty()) {
+                    wifiCallingSettings.setTitle(resolutions.get(0).loadLabel(pm));
+                    wifiCallingSettings.setSummary(null);
+                    wifiCallingSettings.setIntent(intent);
+                } else {
+                    prefSet.removePreference(wifiCallingSettings);
+                }
             } else {
                 prefSet.removePreference(wifiCallingSettings);
             }
-        } else if (!ImsManager.isWfcEnabledByPlatform(mPhone.getContext())) {
+        } else if (!ImsManager.isWfcEnabledByPlatform(mPhone.getContext()) ||
+                !ImsManager.isWfcProvisionedOnDevice(mPhone.getContext())) {
             prefSet.removePreference(wifiCallingSettings);
         } else {
             int resId = com.android.internal.R.string.wifi_calling_off_summary;
             if (ImsManager.isWfcEnabledByUser(mPhone.getContext())) {
-                int wfcMode = ImsManager.getWfcMode(mPhone.getContext());
+                boolean isRoaming = telephonyManager.isNetworkRoaming();
+                int wfcMode = ImsManager.getWfcMode(mPhone.getContext(), isRoaming);
                 switch (wfcMode) {
                     case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
                         resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
@@ -319,6 +349,41 @@
         }
     }
 
+    /**
+     * Hides the top level voicemail settings entry point if the default dialer contains a
+     * particular manifest metadata key. This is required when the default dialer wants to display
+     * its own version of voicemail settings.
+     */
+    private void maybeHideVoicemailSettings() {
+        String defaultDialer = getSystemService(TelecomManager.class).getDefaultDialerPackage();
+        if (defaultDialer == null) {
+            return;
+        }
+        try {
+            Bundle metadata = getPackageManager()
+                    .getApplicationInfo(defaultDialer, PackageManager.GET_META_DATA).metaData;
+            if (metadata == null) {
+                return;
+            }
+            if (!metadata
+                    .getBoolean(TelephonyManager.METADATA_HIDE_VOICEMAIL_SETTINGS_MENU, false)) {
+                if (DBG) {
+                    log("maybeHideVoicemailSettings(): not disabled by default dialer");
+                }
+                return;
+            }
+            getPreferenceScreen().removePreference(mVoicemailSettingsScreen);
+            if (DBG) {
+                log("maybeHideVoicemailSettings(): disabled by default dialer");
+            }
+        } catch (NameNotFoundException e) {
+            // do nothing
+            if (DBG) {
+                log("maybeHideVoicemailSettings(): not controlled by default dialer");
+            }
+        }
+    }
+
     @Override
     protected void onNewIntent(Intent newIntent) {
         setIntent(newIntent);
diff --git a/src/com/android/phone/CallForwardEditPreference.java b/src/com/android/phone/CallForwardEditPreference.java
index 01097f4..ef92349 100644
--- a/src/com/android/phone/CallForwardEditPreference.java
+++ b/src/com/android/phone/CallForwardEditPreference.java
@@ -12,7 +12,9 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
+import android.telephony.PhoneNumberUtils;
 import android.text.BidiFormatter;
+import android.text.SpannableString;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -151,18 +153,23 @@
 
     private void updateSummaryText() {
         if (isToggled()) {
-            CharSequence summaryOn;
             final String number = getRawPhoneNumber();
             if (number != null && number.length() > 0) {
                 // Wrap the number to preserve presentation in RTL languages.
                 String wrappedNumber = BidiFormatter.getInstance().unicodeWrap(
                         number, TextDirectionHeuristics.LTR);
                 String values[] = { wrappedNumber };
-                summaryOn = TextUtils.replace(mSummaryOnTemplate, SRC_TAGS, values);
+                String summaryOn = String.valueOf(
+                        TextUtils.replace(mSummaryOnTemplate, SRC_TAGS, values));
+                int start = summaryOn.indexOf(wrappedNumber);
+
+                SpannableString spannableSummaryOn = new SpannableString(summaryOn);
+                PhoneNumberUtils.addTtsSpan(spannableSummaryOn,
+                        start, start + wrappedNumber.length());
+                setSummaryOn(spannableSummaryOn);
             } else {
-                summaryOn = getContext().getString(R.string.sum_cfu_enabled_no_number);
+                setSummaryOn(getContext().getString(R.string.sum_cfu_enabled_no_number));
             }
-            setSummaryOn(summaryOn);
         }
 
     }
diff --git a/src/com/android/phone/CallNotifier.java b/src/com/android/phone/CallNotifier.java
index fc583c4..b3d8ade 100644
--- a/src/com/android/phone/CallNotifier.java
+++ b/src/com/android/phone/CallNotifier.java
@@ -16,46 +16,32 @@
 
 package com.android.phone;
 
-import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallManager;
-import com.android.internal.telephony.CallerInfo;
-import com.android.internal.telephony.CallerInfoAsyncQuery;
-import com.android.internal.telephony.Connection;
+
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneBase;
-import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.internal.telephony.cdma.CdmaInformationRecords.CdmaDisplayInfoRec;
 import com.android.internal.telephony.cdma.CdmaInformationRecords.CdmaSignalInfoRec;
 import com.android.internal.telephony.cdma.SignalToneUtil;
 
-import android.app.ActivityManagerNative;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothHeadset;
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
-import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.media.ToneGenerator;
-import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemProperties;
-import android.os.SystemVibrator;
-import android.os.Vibrator;
-import android.provider.CallLog.Calls;
-import android.provider.Settings;
 import android.telecom.TelecomManager;
-import android.telephony.DisconnectCause;
-import android.telephony.PhoneNumberUtils;
+
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
 import android.telephony.TelephonyManager;
 import android.util.ArrayMap;
-import android.util.EventLog;
 import android.util.Log;
 
 import java.util.Iterator;
@@ -77,30 +63,15 @@
     // Time to display the message from the underlying phone layers.
     private static final int SHOW_MESSAGE_NOTIFICATION_TIME = 3000; // msec
 
-    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
-            .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
-            .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
-            .build();
-
     /** The singleton instance. */
     private static CallNotifier sInstance;
 
-    // values used to track the query state
-    private static final int CALLERINFO_QUERY_READY = 0;
-    private static final int CALLERINFO_QUERYING = -1;
-
-    // the state of the CallerInfo Query.
-    private int mCallerInfoQueryState;
-
-    // object used to synchronize access to mCallerInfoQueryState
-    private Object mCallerInfoQueryStateGuard = new Object();
     private Map<Integer, CallNotifierPhoneStateListener> mPhoneStateListeners =
             new ArrayMap<Integer, CallNotifierPhoneStateListener>();
 
     private PhoneGlobals mApplication;
     private CallManager mCM;
     private BluetoothHeadset mBluetoothHeadset;
-    private CallLogger mCallLogger;
 
     // ToneGenerator instance for playing SignalInfo tones
     private ToneGenerator mSignalInfoToneGenerator;
@@ -108,26 +79,35 @@
     // The tone volume relative to other sounds in the stream SignalInfo
     private static final int TONE_RELATIVE_VOLUME_SIGNALINFO = 80;
 
-    private Call.State mPreviousCdmaCallState;
     private boolean mVoicePrivacyState = false;
-    private boolean mIsCdmaRedialCall = false;
 
     // Cached AudioManager
     private AudioManager mAudioManager;
     private SubscriptionManager mSubscriptionManager;
     private TelephonyManager mTelephonyManager;
 
+    // Events from the Phone object:
+    public static final int PHONE_DISCONNECT = 3;
+    public static final int PHONE_STATE_DISPLAYINFO = 6;
+    public static final int PHONE_STATE_SIGNALINFO = 7;
+    public static final int PHONE_ENHANCED_VP_ON = 9;
+    public static final int PHONE_ENHANCED_VP_OFF = 10;
+    public static final int PHONE_SUPP_SERVICE_FAILED = 14;
+    public static final int PHONE_TTY_MODE_RECEIVED = 15;
+    // Events generated internally.
+    // We should store all the possible event type values in one place to make sure that
+    // they don't step on each others' toes.
+    public static final int INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE = 22;
+
     /**
      * Initialize the singleton CallNotifier instance.
      * This is only done once, at startup, from PhoneApp.onCreate().
      */
     /* package */ static CallNotifier init(
-            PhoneGlobals app,
-            CallLogger callLogger,
-            CallStateMonitor callStateMonitor) {
+            PhoneGlobals app) {
         synchronized (CallNotifier.class) {
             if (sInstance == null) {
-                sInstance = new CallNotifier(app, callLogger, callStateMonitor);
+                sInstance = new CallNotifier(app);
             } else {
                 Log.wtf(LOG_TAG, "init() called multiple times!  sInstance = " + sInstance);
             }
@@ -137,12 +117,9 @@
 
     /** Private constructor; @see init() */
     private CallNotifier(
-            PhoneGlobals app,
-            CallLogger callLogger,
-            CallStateMonitor callStateMonitor) {
+            PhoneGlobals app) {
         mApplication = app;
         mCM = app.mCM;
-        mCallLogger = callLogger;
 
         mAudioManager = (AudioManager) mApplication.getSystemService(Context.AUDIO_SERVICE);
         mTelephonyManager =
@@ -150,7 +127,7 @@
         mSubscriptionManager = (SubscriptionManager) mApplication.getSystemService(
                 Context.TELEPHONY_SUBSCRIPTION_SERVICE);
 
-        callStateMonitor.addListener(this);
+        registerForNotifications();
 
         BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
         if (adapter != null) {
@@ -188,50 +165,48 @@
         }
     }
 
+    /**
+     * Register for call state notifications with the CallManager.
+     */
+    private void registerForNotifications() {
+        mCM.registerForDisconnect(this, PHONE_DISCONNECT, null);
+        mCM.registerForDisplayInfo(this, PHONE_STATE_DISPLAYINFO, null);
+        mCM.registerForSignalInfo(this, PHONE_STATE_SIGNALINFO, null);
+        mCM.registerForInCallVoicePrivacyOn(this, PHONE_ENHANCED_VP_ON, null);
+        mCM.registerForInCallVoicePrivacyOff(this, PHONE_ENHANCED_VP_OFF, null);
+        mCM.registerForSuppServiceFailed(this, PHONE_SUPP_SERVICE_FAILED, null);
+        mCM.registerForTtyModeReceived(this, PHONE_TTY_MODE_RECEIVED, null);
+    }
+
     @Override
     public void handleMessage(Message msg) {
+        if (DBG) {
+            Log.d(LOG_TAG, "handleMessage(" + msg.what + ")");
+        }
         switch (msg.what) {
-            case CallStateMonitor.PHONE_NEW_RINGING_CONNECTION:
-                log("RINGING... (new)");
-                onNewRingingConnection((AsyncResult) msg.obj);
-                break;
-
-            case CallStateMonitor.PHONE_STATE_CHANGED:
-                onPhoneStateChanged((AsyncResult) msg.obj);
-                break;
-
-            case CallStateMonitor.PHONE_DISCONNECT:
+            case PHONE_DISCONNECT:
                 if (DBG) log("DISCONNECT");
                 // Stop any signalInfo tone being played when a call gets ended, the rest of the
                 // disconnect functionality in onDisconnect() is handled in ConnectionService.
                 stopSignalInfoTone();
                 break;
 
-            case CallStateMonitor.PHONE_UNKNOWN_CONNECTION_APPEARED:
-                onUnknownConnectionAppeared((AsyncResult) msg.obj);
-                break;
-
-            case CallStateMonitor.PHONE_STATE_DISPLAYINFO:
+            case PHONE_STATE_DISPLAYINFO:
                 if (DBG) log("Received PHONE_STATE_DISPLAYINFO event");
                 onDisplayInfo((AsyncResult) msg.obj);
                 break;
 
-            case CallStateMonitor.PHONE_STATE_SIGNALINFO:
+            case PHONE_STATE_SIGNALINFO:
                 if (DBG) log("Received PHONE_STATE_SIGNALINFO event");
                 onSignalInfo((AsyncResult) msg.obj);
                 break;
 
-            case CallStateMonitor.INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE:
+            case INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE:
                 if (DBG) log("Received Display Info notification done event ...");
                 PhoneDisplayMessage.dismissMessage();
                 break;
 
-            case CallStateMonitor.EVENT_OTA_PROVISION_CHANGE:
-                if (DBG) log("EVENT_OTA_PROVISION_CHANGE...");
-                mApplication.handleOtaspEvent(msg);
-                break;
-
-            case CallStateMonitor.PHONE_ENHANCED_VP_ON:
+            case PHONE_ENHANCED_VP_ON:
                 if (DBG) log("PHONE_ENHANCED_VP_ON...");
                 if (!mVoicePrivacyState) {
                     int toneToPlay = InCallTonePlayer.TONE_VOICE_PRIVACY;
@@ -240,7 +215,7 @@
                 }
                 break;
 
-            case CallStateMonitor.PHONE_ENHANCED_VP_OFF:
+            case PHONE_ENHANCED_VP_OFF:
                 if (DBG) log("PHONE_ENHANCED_VP_OFF...");
                 if (mVoicePrivacyState) {
                     int toneToPlay = InCallTonePlayer.TONE_VOICE_PRIVACY;
@@ -249,12 +224,12 @@
                 }
                 break;
 
-            case CallStateMonitor.PHONE_SUPP_SERVICE_FAILED:
+            case PHONE_SUPP_SERVICE_FAILED:
                 if (DBG) log("PHONE_SUPP_SERVICE_FAILED...");
                 onSuppServiceFailed((AsyncResult) msg.obj);
                 break;
 
-            case CallStateMonitor.PHONE_TTY_MODE_RECEIVED:
+            case PHONE_TTY_MODE_RECEIVED:
                 if (DBG) log("Received PHONE_TTY_MODE_RECEIVED event");
                 onTtyModeReceived((AsyncResult) msg.obj);
                 break;
@@ -264,207 +239,6 @@
         }
     }
 
-    /**
-     * Handles a "new ringing connection" event from the telephony layer.
-     */
-    private void onNewRingingConnection(AsyncResult r) {
-        Connection c = (Connection) r.result;
-        log("onNewRingingConnection(): state = " + mCM.getState() + ", conn = { " + c + " }");
-        Call ringing = c.getCall();
-        Phone phone = ringing.getPhone();
-
-        // Check for a few cases where we totally ignore incoming calls.
-        if (ignoreAllIncomingCalls(phone)) {
-            // Immediately reject the call, without even indicating to the user
-            // that an incoming call occurred.  (This will generally send the
-            // caller straight to voicemail, just as if we *had* shown the
-            // incoming-call UI and the user had declined the call.)
-            PhoneUtils.hangupRingingCall(ringing);
-            return;
-        }
-
-        if (!c.isRinging()) {
-            Log.i(LOG_TAG, "CallNotifier.onNewRingingConnection(): connection not ringing!");
-            // This is a very strange case: an incoming call that stopped
-            // ringing almost instantly after the onNewRingingConnection()
-            // event.  There's nothing we can do here, so just bail out
-            // without doing anything.  (But presumably we'll log it in
-            // the call log when the disconnect event comes in...)
-            return;
-        }
-
-        // Stop any signalInfo tone being played on receiving a Call
-        stopSignalInfoTone();
-
-        Call.State state = c.getState();
-        // State will be either INCOMING or WAITING.
-        if (VDBG) log("- connection is ringing!  state = " + state);
-        // if (DBG) PhoneUtils.dumpCallState(mPhone);
-
-        // No need to do any service state checks here (like for
-        // "emergency mode"), since in those states the SIM won't let
-        // us get incoming connections in the first place.
-
-        // TODO: Consider sending out a serialized broadcast Intent here
-        // (maybe "ACTION_NEW_INCOMING_CALL"), *before* starting the
-        // ringer and going to the in-call UI.  The intent should contain
-        // the caller-id info for the current connection, and say whether
-        // it would be a "call waiting" call or a regular ringing call.
-        // If anybody consumed the broadcast, we'd bail out without
-        // ringing or bringing up the in-call UI.
-        //
-        // This would give 3rd party apps a chance to listen for (and
-        // intercept) new ringing connections.  An app could reject the
-        // incoming call by consuming the broadcast and doing nothing, or
-        // it could "pick up" the call (without any action by the user!)
-        // via some future TelephonyManager API.
-        //
-        // See bug 1312336 for more details.
-        // We'd need to protect this with a new "intercept incoming calls"
-        // system permission.
-
-        // Obtain a partial wake lock to make sure the CPU doesn't go to
-        // sleep before we finish bringing up the InCallScreen.
-        // (This will be upgraded soon to a full wake lock; see
-        // showIncomingCall().)
-        if (VDBG) log("Holding wake lock on new incoming connection.");
-        mApplication.requestWakeState(PhoneGlobals.WakeState.PARTIAL);
-
-        // Note we *don't* post a status bar notification here, since
-        // we're not necessarily ready to actually show the incoming call
-        // to the user.  (For calls in the INCOMING state, at least, we
-        // still need to run a caller-id query, and we may not even ring
-        // at all if the "send directly to voicemail" flag is set.)
-        //
-        // Instead, we update the notification (and potentially launch the
-        // InCallScreen) from the showIncomingCall() method, which runs
-        // when the caller-id query completes or times out.
-
-        if (VDBG) log("- onNewRingingConnection() done.");
-    }
-
-    /**
-     * Determines whether or not we're allowed to present incoming calls to the
-     * user, based on the capabilities and/or current state of the device.
-     *
-     * If this method returns true, that means we should immediately reject the
-     * current incoming call, without even indicating to the user that an
-     * incoming call occurred.
-     *
-     * (We only reject incoming calls in a few cases, like during an OTASP call
-     * when we can't interrupt the user, or if the device hasn't completed the
-     * SetupWizard yet.  We also don't allow incoming calls on non-voice-capable
-     * devices.  But note that we *always* allow incoming calls while in ECM.)
-     *
-     * @return true if we're *not* allowed to present an incoming call to
-     * the user.
-     */
-    private boolean ignoreAllIncomingCalls(Phone phone) {
-        // Incoming calls are totally ignored on non-voice-capable devices.
-        if (!PhoneGlobals.sVoiceCapable) {
-            // ...but still log a warning, since we shouldn't have gotten this
-            // event in the first place!  (Incoming calls *should* be blocked at
-            // the telephony layer on non-voice-capable capable devices.)
-            Log.w(LOG_TAG, "Got onNewRingingConnection() on non-voice-capable device! Ignoring...");
-            return true;
-        }
-
-        // In ECM (emergency callback mode), we ALWAYS allow incoming calls
-        // to get through to the user.  (Note that ECM is applicable only to
-        // voice-capable CDMA devices).
-        if (PhoneUtils.isPhoneInEcm(phone)) {
-            if (DBG) log("Incoming call while in ECM: always allow...");
-            return false;
-        }
-
-        // Incoming calls are totally ignored if the device isn't provisioned yet.
-        boolean provisioned = Settings.Global.getInt(mApplication.getContentResolver(),
-            Settings.Global.DEVICE_PROVISIONED, 0) != 0;
-        if (!provisioned) {
-            Log.i(LOG_TAG, "Ignoring incoming call: not provisioned");
-            return true;
-        }
-
-        // Incoming calls are totally ignored if an OTASP call is active.
-        if (TelephonyCapabilities.supportsOtasp(phone)) {
-            boolean activateState = (mApplication.cdmaOtaScreenState.otaScreenState
-                    == OtaUtils.CdmaOtaScreenState.OtaScreenState.OTA_STATUS_ACTIVATION);
-            boolean dialogState = (mApplication.cdmaOtaScreenState.otaScreenState
-                    == OtaUtils.CdmaOtaScreenState.OtaScreenState.OTA_STATUS_SUCCESS_FAILURE_DLG);
-            boolean spcState = mApplication.cdmaOtaProvisionData.inOtaSpcState;
-
-            if (spcState) {
-                Log.i(LOG_TAG, "Ignoring incoming call: OTA call is active");
-                return true;
-            } else if (activateState || dialogState) {
-                // We *are* allowed to receive incoming calls at this point.
-                // But clear out any residual OTASP UI first.
-                // TODO: It's an MVC violation to twiddle the OTA UI state here;
-                // we should instead provide a higher-level API via OtaUtils.
-                if (dialogState) mApplication.dismissOtaDialogs();
-                mApplication.clearOtaState();
-                return false;
-            }
-        }
-
-        // Normal case: allow this call to be presented to the user.
-        return false;
-    }
-
-    private void onUnknownConnectionAppeared(AsyncResult r) {
-        PhoneConstants.State state = mCM.getState();
-
-        if (state == PhoneConstants.State.OFFHOOK) {
-            if (DBG) log("unknown connection appeared...");
-
-            onPhoneStateChanged(r);
-        }
-    }
-
-    /**
-     * Updates the phone UI in response to phone state changes.
-     *
-     * Watch out: certain state changes are actually handled by their own
-     * specific methods:
-     *   - see onNewRingingConnection() for new incoming calls
-     *   - see onDisconnect() for calls being hung up or disconnected
-     */
-    private void onPhoneStateChanged(AsyncResult r) {
-        PhoneConstants.State state = mCM.getState();
-        if (VDBG) log("onPhoneStateChanged: state = " + state);
-
-        // Turn status bar notifications on or off depending upon the state
-        // of the phone.  Notification Alerts (audible or vibrating) should
-        // be on if and only if the phone is IDLE.
-        mApplication.notificationMgr.statusBarHelper
-                .enableNotificationAlerts(state == PhoneConstants.State.IDLE);
-
-        Phone fgPhone = mCM.getFgPhone();
-        if (fgPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
-            if ((fgPhone.getForegroundCall().getState() == Call.State.ACTIVE)
-                    && ((mPreviousCdmaCallState == Call.State.DIALING)
-                    ||  (mPreviousCdmaCallState == Call.State.ALERTING))) {
-                if (mIsCdmaRedialCall) {
-                    int toneToPlay = InCallTonePlayer.TONE_REDIAL;
-                    new InCallTonePlayer(toneToPlay).start();
-                }
-                // Stop any signal info tone when call moves to ACTIVE state
-                stopSignalInfoTone();
-            }
-            mPreviousCdmaCallState = fgPhone.getForegroundCall().getState();
-        }
-
-        // Update the phone state and other sensor/lock.
-        mApplication.updatePhoneState(state);
-
-        if (state == PhoneConstants.State.OFFHOOK) {
-
-            if (VDBG) log("onPhoneStateChanged: OFF HOOK");
-            // make sure audio is in in-call mode now
-            PhoneUtils.setAudioMode(mCM);
-        }
-    }
-
     void updateCallNotifierRegistrationsAfterRadioTechnologyChange() {
         if (DBG) Log.d(LOG_TAG, "updateCallNotifierRegistrationsAfterRadioTechnologyChange...");
 
@@ -472,129 +246,6 @@
         createSignalInfoToneGenerator();
     }
 
-    private void onDisconnect(AsyncResult r) {
-        if (VDBG) log("onDisconnect()...  CallManager state: " + mCM.getState());
-
-        mVoicePrivacyState = false;
-        Connection c = (Connection) r.result;
-        if (c != null) {
-            log("onDisconnect: cause = " + DisconnectCause.toString(c.getDisconnectCause())
-                  + ", incoming = " + c.isIncoming()
-                  + ", date = " + c.getCreateTime());
-        } else {
-            Log.w(LOG_TAG, "onDisconnect: null connection");
-        }
-
-        int autoretrySetting = 0;
-        if ((c != null) &&
-                (c.getCall().getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA)) {
-            autoretrySetting = android.provider.Settings.Global.getInt(mApplication.
-                    getContentResolver(),android.provider.Settings.Global.CALL_AUTO_RETRY, 0);
-        }
-
-        // Stop any signalInfo tone being played when a call gets ended
-        stopSignalInfoTone();
-
-        if ((c != null) &&
-                (c.getCall().getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA)) {
-            // Resetting the CdmaPhoneCallState members
-            mApplication.cdmaPhoneCallState.resetCdmaPhoneCallState();
-        }
-
-        // If this is the end of an OTASP call, pass it on to the PhoneApp.
-        if (c != null && TelephonyCapabilities.supportsOtasp(c.getCall().getPhone())) {
-            final String number = c.getAddress();
-            if (c.getCall().getPhone().isOtaSpNumber(number)) {
-                if (DBG) log("onDisconnect: this was an OTASP call!");
-                mApplication.handleOtaspDisconnect();
-            }
-        }
-
-        // Check for the various tones we might need to play (thru the
-        // earpiece) after a call disconnects.
-        int toneToPlay = InCallTonePlayer.TONE_NONE;
-
-        // If we don't need to play BUSY or CONGESTION, then play the
-        // "call ended" tone if this was a "regular disconnect" (i.e. a
-        // normal call where one end or the other hung up) *and* this
-        // disconnect event caused the phone to become idle.  (In other
-        // words, we *don't* play the sound if one call hangs up but
-        // there's still an active call on the other line.)
-        // TODO: We may eventually want to disable this via a preference.
-        if ((toneToPlay == InCallTonePlayer.TONE_NONE)
-            && (mCM.getState() == PhoneConstants.State.IDLE)
-            && (c != null)) {
-            int cause = c.getDisconnectCause();
-            if ((cause == DisconnectCause.NORMAL)  // remote hangup
-                || (cause == DisconnectCause.LOCAL)) {  // local hangup
-                if (VDBG) log("- need to play CALL_ENDED tone!");
-                toneToPlay = InCallTonePlayer.TONE_CALL_ENDED;
-                mIsCdmaRedialCall = false;
-            }
-        }
-
-        // All phone calls are disconnected.
-        if (mCM.getState() == PhoneConstants.State.IDLE) {
-            // Don't reset the audio mode or bluetooth/speakerphone state
-            // if we still need to let the user hear a tone through the earpiece.
-            if (toneToPlay == InCallTonePlayer.TONE_NONE) {
-                resetAudioStateAfterDisconnect();
-            }
-        }
-
-        if (c != null) {
-            mCallLogger.logCall(c);
-
-            final String number = c.getAddress();
-            final Phone phone = c.getCall().getPhone();
-            final boolean isEmergencyNumber =
-                    PhoneNumberUtils.isLocalEmergencyNumber(mApplication, number);
-
-            // Possibly play a "post-disconnect tone" thru the earpiece.
-            // We do this here, rather than from the InCallScreen
-            // activity, since we need to do this even if you're not in
-            // the Phone UI at the moment the connection ends.
-            if (toneToPlay != InCallTonePlayer.TONE_NONE) {
-                if (VDBG) log("- starting post-disconnect tone (" + toneToPlay + ")...");
-                new InCallTonePlayer(toneToPlay).start();
-
-                // TODO: alternatively, we could start an InCallTonePlayer
-                // here with an "unlimited" tone length,
-                // and manually stop it later when this connection truly goes
-                // away.  (The real connection over the network was closed as soon
-                // as we got the BUSY message.  But our telephony layer keeps the
-                // connection open for a few extra seconds so we can show the
-                // "busy" indication to the user.  We could stop the busy tone
-                // when *that* connection's "disconnect" event comes in.)
-            }
-
-            final int cause = c.getDisconnectCause();
-            if (((mPreviousCdmaCallState == Call.State.DIALING)
-                    || (mPreviousCdmaCallState == Call.State.ALERTING))
-                    && (!isEmergencyNumber)
-                    && (cause != DisconnectCause.INCOMING_MISSED )
-                    && (cause != DisconnectCause.NORMAL)
-                    && (cause != DisconnectCause.LOCAL)
-                    && (cause != DisconnectCause.INCOMING_REJECTED)) {
-                if (!mIsCdmaRedialCall) {
-                    if (autoretrySetting == InCallScreen.AUTO_RETRY_ON) {
-                        // TODO: (Moto): The contact reference data may need to be stored and use
-                        // here when redialing a call. For now, pass in NULL as the URI parameter.
-                        final int status =
-                                PhoneUtils.placeCall(mApplication, phone, number, null, false);
-                        if (status != PhoneUtils.CALL_STATUS_FAILED) {
-                            mIsCdmaRedialCall = true;
-                        }
-                    } else {
-                        mIsCdmaRedialCall = false;
-                    }
-                } else {
-                    mIsCdmaRedialCall = false;
-                }
-            }
-        }
-    }
-
     /**
      * Resets the audio mode and speaker state when a call ends.
      */
@@ -711,18 +362,6 @@
                     toneVolume = TONE_RELATIVE_VOLUME_HIPRI;
                     toneLengthMillis = 200;
                     break;
-                 case TONE_OTA_CALL_END:
-                    if (mApplication.cdmaOtaConfigData.otaPlaySuccessFailureTone ==
-                            OtaUtils.OTA_PLAY_SUCCESS_FAILURE_TONE_ON) {
-                        toneType = ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD;
-                        toneVolume = TONE_RELATIVE_VOLUME_HIPRI;
-                        toneLengthMillis = 750;
-                    } else {
-                        toneType = ToneGenerator.TONE_PROP_PROMPT;
-                        toneVolume = TONE_RELATIVE_VOLUME_HIPRI;
-                        toneLengthMillis = 200;
-                    }
-                    break;
                 case TONE_VOICE_PRIVACY:
                     toneType = ToneGenerator.TONE_CDMA_ALERT_NETWORK_LITE;
                     toneVolume = TONE_RELATIVE_VOLUME_HIPRI;
@@ -866,15 +505,6 @@
                 resetAudioStateAfterDisconnect();
             }
         }
-
-        public void stopTone() {
-            synchronized (this) {
-                if (mState == TONE_ON) {
-                    notify();
-                }
-                mState = TONE_STOPPED;
-            }
-        }
     }
 
     /**
@@ -890,7 +520,7 @@
             PhoneDisplayMessage.displayNetworkMessage(mApplication, displayInfo);
 
             // start a timer that kills the dialog
-            sendEmptyMessageDelayed(CallStateMonitor.INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
+            sendEmptyMessageDelayed(INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
                     SHOW_MESSAGE_NOTIFICATION_TIME);
         }
     }
@@ -915,11 +545,14 @@
             if (DBG) log("onSuppServiceFailed: displaying merge failure message");
             mergeFailedString = mApplication.getResources().getString(
                     R.string.incall_error_supp_service_switch);
+        } else if (r.result == Phone.SuppService.HOLD) {
+            mergeFailedString = mApplication.getResources().getString(
+                    R.string.incall_error_supp_service_hold);
         }
         PhoneDisplayMessage.displayErrorMessage(mApplication, mergeFailedString);
 
         // start a timer that kills the dialog
-        sendEmptyMessageDelayed(CallStateMonitor.INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
+        sendEmptyMessageDelayed(INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
                 SHOW_MESSAGE_NOTIFICATION_TIME);
     }
 
@@ -1005,8 +638,7 @@
                     mApplication.getResources().getString(resId));
 
             // start a timer that kills the dialog
-            sendEmptyMessageDelayed(
-                    CallStateMonitor.INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
+            sendEmptyMessageDelayed(INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE,
                     SHOW_MESSAGE_NOTIFICATION_TIME);
         }
     }
@@ -1090,27 +722,6 @@
         new SignalInfoTonePlayer(ToneGenerator.TONE_CDMA_SIGNAL_OFF).start();
     }
 
-    /**
-     * Return the private variable mPreviousCdmaCallState.
-     */
-    /* package */ Call.State getPreviousCdmaCallState() {
-        return mPreviousCdmaCallState;
-    }
-
-    /**
-     * Return the private variable mVoicePrivacyState.
-     */
-    /* package */ boolean getVoicePrivacyState() {
-        return mVoicePrivacyState;
-    }
-
-    /**
-     * Return the private variable mIsCdmaRedialCall.
-     */
-    /* package */ boolean getIsCdmaRedialCall() {
-        return mIsCdmaRedialCall;
-    }
-
     private BluetoothProfile.ServiceListener mBluetoothProfileServiceListener =
            new BluetoothProfile.ServiceListener() {
                 public void onServiceConnected(int profile, BluetoothProfile proxy) {
diff --git a/src/com/android/phone/CallStateMonitor.java b/src/com/android/phone/CallStateMonitor.java
deleted file mode 100644
index 512c30b..0000000
--- a/src/com/android/phone/CallStateMonitor.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemProperties;
-import android.util.Log;
-
-import com.android.internal.telephony.CallManager;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-
-/**
- * Dedicated Call state monitoring class.  This class communicates directly with
- * the call manager to listen for call state events and notifies registered
- * handlers.
- * It works as an inverse multiplexor for all classes wanted Call State updates
- * so that there exists only one channel to the telephony layer.
- *
- * TODO: Add manual phone state checks (getState(), etc.).
- */
-class CallStateMonitor extends Handler {
-    private static final String LOG_TAG = CallStateMonitor.class.getSimpleName();
-    private static final boolean DBG =
-            (PhoneGlobals.DBG_LEVEL >= 1) && (SystemProperties.getInt("ro.debuggable", 0) == 1);
-
-    // Events from the Phone object:
-    public static final int PHONE_STATE_CHANGED = 1;
-    public static final int PHONE_NEW_RINGING_CONNECTION = 2;
-    public static final int PHONE_DISCONNECT = 3;
-    public static final int PHONE_UNKNOWN_CONNECTION_APPEARED = 4;
-    public static final int PHONE_STATE_DISPLAYINFO = 6;
-    public static final int PHONE_STATE_SIGNALINFO = 7;
-    public static final int PHONE_CDMA_CALL_WAITING = 8;
-    public static final int PHONE_ENHANCED_VP_ON = 9;
-    public static final int PHONE_ENHANCED_VP_OFF = 10;
-    public static final int PHONE_RINGBACK_TONE = 11;
-    public static final int PHONE_RESEND_MUTE = 12;
-    public static final int PHONE_ON_DIAL_CHARS = 13;
-    public static final int PHONE_SUPP_SERVICE_FAILED = 14;
-    public static final int PHONE_TTY_MODE_RECEIVED = 15;
-    // Events generated internally.
-    // We should store all the possible event type values in one place to make sure that
-    // they don't step on each others' toes.
-    public static final int INTERNAL_SHOW_MESSAGE_NOTIFICATION_DONE = 22;
-    public static final int INTERNAL_UPDATE_IN_CALL_NOTIFICATION = 23;
-
-    // Other events from call manager
-    public static final int EVENT_OTA_PROVISION_CHANGE = 20;
-
-    private CallManager callManager;
-    private ArrayList<Handler> registeredHandlers;
-
-    // Events generated internally:
-    public CallStateMonitor(CallManager callManager) {
-        this.callManager = callManager;
-        registeredHandlers = new ArrayList<Handler>();
-
-        registerForNotifications();
-    }
-
-    /**
-     * Register for call state notifications with the CallManager.
-     */
-    private void registerForNotifications() {
-        //
-        // TODO: The lines commented out here can be removed as their associated functionality in
-        // other files is removed.
-        //
-        //callManager.registerForNewRingingConnection(this, PHONE_NEW_RINGING_CONNECTION, null);
-        //callManager.registerForPreciseCallStateChanged(this, PHONE_STATE_CHANGED, null);
-        callManager.registerForDisconnect(this, PHONE_DISCONNECT, null);
-        //callManager.registerForUnknownConnection(this, PHONE_UNKNOWN_CONNECTION_APPEARED, null);
-        callManager.registerForCdmaOtaStatusChange(this, EVENT_OTA_PROVISION_CHANGE, null);
-        //callManager.registerForCallWaiting(this, PHONE_CDMA_CALL_WAITING, null);
-        callManager.registerForDisplayInfo(this, PHONE_STATE_DISPLAYINFO, null);
-        callManager.registerForSignalInfo(this, PHONE_STATE_SIGNALINFO, null);
-        callManager.registerForInCallVoicePrivacyOn(this, PHONE_ENHANCED_VP_ON, null);
-        callManager.registerForInCallVoicePrivacyOff(this, PHONE_ENHANCED_VP_OFF, null);
-        callManager.registerForSuppServiceFailed(this, PHONE_SUPP_SERVICE_FAILED, null);
-        //callManager.registerForRingbackTone(this, PHONE_RINGBACK_TONE, null);
-        //callManager.registerForResendIncallMute(this, PHONE_RESEND_MUTE, null);
-        //callManager.registerForPostDialCharacter(this, PHONE_ON_DIAL_CHARS, null);
-        callManager.registerForTtyModeReceived(this, PHONE_TTY_MODE_RECEIVED, null);
-    }
-
-    public void addListener(Handler handler) {
-        if (handler != null && !registeredHandlers.contains(handler)) {
-            if (DBG) {
-                Log.d(LOG_TAG, "Adding Handler: " + handler);
-            }
-
-            registeredHandlers.add(handler);
-        }
-    }
-
-    @Override
-    public void handleMessage(Message msg) {
-        if (DBG) {
-            Log.d(LOG_TAG, "handleMessage(" + msg.what + ")");
-        }
-
-        for (Handler handler : registeredHandlers) {
-            handler.handleMessage(msg);
-        }
-    }
-
-    /**
-     * When radio technology changes, we need to to reregister for all the events which are
-     * all tied to the old radio.
-     */
-    public void updateAfterRadioTechnologyChange() {
-        if (DBG) Log.d(LOG_TAG, "updateCallNotifierRegistrationsAfterRadioTechnologyChange...");
-
-        // Unregister all events from the old obsolete phone
-        //callManager.unregisterForNewRingingConnection(this);
-        //callManager.unregisterForPreciseCallStateChanged(this);
-        callManager.unregisterForDisconnect(this);
-        //callManager.unregisterForUnknownConnection(this);
-        //callManager.unregisterForCallWaiting(this);
-        callManager.unregisterForDisplayInfo(this);
-        callManager.unregisterForSignalInfo(this);
-        callManager.unregisterForCdmaOtaStatusChange(this);
-        //callManager.unregisterForRingbackTone(this);
-        //callManager.unregisterForResendIncallMute(this);
-        callManager.unregisterForInCallVoicePrivacyOn(this);
-        callManager.unregisterForInCallVoicePrivacyOff(this);
-        //callManager.unregisterForPostDialCharacter(this);
-        callManager.unregisterForSuppServiceFailed(this);
-        callManager.unregisterForTtyModeReceived(this);
-
-        registerForNotifications();
-    }
-
-}
diff --git a/src/com/android/phone/CallWaitingCheckBoxPreference.java b/src/com/android/phone/CallWaitingSwitchPreference.java
similarity index 82%
rename from src/com/android/phone/CallWaitingCheckBoxPreference.java
rename to src/com/android/phone/CallWaitingSwitchPreference.java
index bda8b3b..3f248ae 100644
--- a/src/com/android/phone/CallWaitingCheckBoxPreference.java
+++ b/src/com/android/phone/CallWaitingSwitchPreference.java
@@ -9,29 +9,27 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
-import android.preference.CheckBoxPreference;
+import android.preference.SwitchPreference;
 import android.util.AttributeSet;
 import android.util.Log;
 
-import com.android.internal.telephony.Phone;
-
-public class CallWaitingCheckBoxPreference extends CheckBoxPreference {
-    private static final String LOG_TAG = "CallWaitingCheckBoxPreference";
+public class CallWaitingSwitchPreference extends SwitchPreference {
+    private static final String LOG_TAG = "CallWaitingSwitchPreference";
     private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
     private final MyHandler mHandler = new MyHandler();
     private Phone mPhone;
     private TimeConsumingPreferenceListener mTcpListener;
 
-    public CallWaitingCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+    public CallWaitingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
     }
 
-    public CallWaitingCheckBoxPreference(Context context, AttributeSet attrs) {
-        this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle);
+    public CallWaitingSwitchPreference(Context context, AttributeSet attrs) {
+        this(context, attrs, com.android.internal.R.attr.switchPreferenceStyle);
     }
 
-    public CallWaitingCheckBoxPreference(Context context) {
+    public CallWaitingSwitchPreference(Context context) {
         this(context, null);
     }
 
@@ -81,9 +79,9 @@
 
             if (mTcpListener != null) {
                 if (msg.arg2 == MESSAGE_SET_CALL_WAITING) {
-                    mTcpListener.onFinished(CallWaitingCheckBoxPreference.this, false);
+                    mTcpListener.onFinished(CallWaitingSwitchPreference.this, false);
                 } else {
-                    mTcpListener.onFinished(CallWaitingCheckBoxPreference.this, true);
+                    mTcpListener.onFinished(CallWaitingSwitchPreference.this, true);
                 }
             }
 
@@ -93,7 +91,7 @@
                             ar.exception);
                 }
                 if (mTcpListener != null) {
-                    mTcpListener.onException(CallWaitingCheckBoxPreference.this,
+                    mTcpListener.onException(CallWaitingSwitchPreference.this,
                             (CommandException)ar.exception);
                 }
             } else if (ar.userObj instanceof Throwable || ar.exception != null) {
@@ -102,7 +100,7 @@
                     Log.d(LOG_TAG, "handleGetCallWaitingResponse: Exception" + ar.exception);
                 }
                 if (mTcpListener != null) {
-                    mTcpListener.onError(CallWaitingCheckBoxPreference.this, RESPONSE_ERROR);
+                    mTcpListener.onError(CallWaitingSwitchPreference.this, RESPONSE_ERROR);
                 }
             } else {
                 if (DBG) {
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 09f12ff..a33324b 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -20,7 +20,7 @@
 import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
 
 import android.annotation.NonNull;
-import android.app.ActivityManagerNative;
+import android.app.ActivityManager;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -58,6 +58,7 @@
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.IndentingPrintWriter;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -71,6 +72,9 @@
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -79,8 +83,9 @@
 
 public class CarrierConfigLoader extends ICarrierConfigLoader.Stub {
     private static final String LOG_TAG = "CarrierConfigLoader";
-    // Package name for default carrier config app, bundled with system image.
-    private static final String DEFAULT_CARRIER_CONFIG_PACKAGE = "com.android.carrierconfig";
+
+    // Package name for platform carrier config app, bundled with system image.
+    private final String mPlatformCarrierConfigPackage;
 
     /** The singleton instance. */
     private static CarrierConfigLoader sInstance;
@@ -93,8 +98,10 @@
     // Service connection for binding to config app.
     private CarrierServiceConnection[] mServiceConnection;
 
+    // Broadcast receiver for Boot intents, register intent filter in construtor.
+    private final BroadcastReceiver mBootReceiver = new ConfigLoaderBroadcastReceiver();
     // Broadcast receiver for SIM and pkg intents, register intent filter in constructor.
-    private final BroadcastReceiver mReceiver = new ConfigLoaderBroadcastReceiver();
+    private final BroadcastReceiver mPackageReceiver = new ConfigLoaderBroadcastReceiver();
 
     // Message codes; see mHandler below.
     // Request from SubscriptionInfoUpdater when SIM becomes absent or error.
@@ -119,8 +126,10 @@
     private static final int EVENT_BIND_CARRIER_TIMEOUT = 11;
     // Check if the system fingerprint has changed.
     private static final int EVENT_CHECK_SYSTEM_UPDATE = 12;
+    // Rerun carrier config binding after system is unlocked.
+    private static final int EVENT_SYSTEM_UNLOCKED = 13;
 
-    private static final int BIND_TIMEOUT_MILLIS = 10000;
+    private static final int BIND_TIMEOUT_MILLIS = 30000;
 
     // Tags used for saving and restoring XML documents.
     private static final String TAG_DOCUMENT = "carrier_config";
@@ -168,6 +177,12 @@
                     broadcastConfigChangedIntent(phoneId);
                     break;
 
+                case EVENT_SYSTEM_UNLOCKED:
+                    for (int i = 0; i < TelephonyManager.from(mContext).getPhoneCount(); ++i) {
+                        updateConfigForPhoneId(i);
+                    }
+                    break;
+
                 case EVENT_PACKAGE_CHANGED:
                     carrierPackageName = (String) msg.obj;
                     // Only update if there are cached config removed to avoid updating config
@@ -182,16 +197,16 @@
 
                 case EVENT_FETCH_DEFAULT:
                     iccid = getIccIdForPhoneId(phoneId);
-                    config = restoreConfigFromXml(DEFAULT_CARRIER_CONFIG_PACKAGE, iccid);
+                    config = restoreConfigFromXml(mPlatformCarrierConfigPackage, iccid);
                     if (config != null) {
-                        log("Loaded config from XML. package=" + DEFAULT_CARRIER_CONFIG_PACKAGE
+                        log("Loaded config from XML. package=" + mPlatformCarrierConfigPackage
                                 + " phoneId=" + phoneId);
                         mConfigFromDefaultApp[phoneId] = config;
                         Message newMsg = obtainMessage(EVENT_LOADED_FROM_DEFAULT, phoneId, -1);
                         newMsg.getData().putBoolean("loaded_from_xml", true);
                         mHandler.sendMessage(newMsg);
                     } else {
-                        if (bindToConfigPackage(DEFAULT_CARRIER_CONFIG_PACKAGE,
+                        if (bindToConfigPackage(mPlatformCarrierConfigPackage,
                                 phoneId, EVENT_CONNECTED_TO_DEFAULT)) {
                             sendMessageDelayed(obtainMessage(EVENT_BIND_DEFAULT_TIMEOUT, phoneId, -1),
                                     BIND_TIMEOUT_MILLIS);
@@ -216,10 +231,11 @@
                                 .asInterface(conn.service);
                         config = carrierService.getCarrierConfig(carrierId);
                         iccid = getIccIdForPhoneId(phoneId);
-                        saveConfigToXml(DEFAULT_CARRIER_CONFIG_PACKAGE, iccid, config);
+                        saveConfigToXml(mPlatformCarrierConfigPackage, iccid, config);
                         mConfigFromDefaultApp[phoneId] = config;
                         sendMessage(obtainMessage(EVENT_LOADED_FROM_DEFAULT, phoneId, -1));
-                    } catch (RemoteException ex) {
+                    } catch (Exception ex) {
+                        // The bound app could throw exceptions that binder will pass to us.
                         loge("Failed to get carrier config: " + ex.toString());
                     } finally {
                         mContext.unbindService(mServiceConnection[phoneId]);
@@ -290,7 +306,8 @@
                         saveConfigToXml(carrierPackageName, iccid, config);
                         mConfigFromCarrierApp[phoneId] = config;
                         sendMessage(obtainMessage(EVENT_LOADED_FROM_CARRIER, phoneId, -1));
-                    } catch (RemoteException ex) {
+                    } catch (Exception ex) {
+                        // The bound app could throw exceptions that binder will pass to us.
                         loge("Failed to get carrier config: " + ex.toString());
                     } finally {
                         mContext.unbindService(mServiceConnection[phoneId]);
@@ -333,6 +350,12 @@
      */
     private CarrierConfigLoader(Context context) {
         mContext = context;
+        mPlatformCarrierConfigPackage =
+                mContext.getString(R.string.platform_carrier_config_package);
+
+        IntentFilter bootFilter = new IntentFilter();
+        bootFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
+        context.registerReceiver(mBootReceiver, bootFilter);
 
         // Register for package updates. Update app or uninstall app update will have all 3 intents,
         // in the order or removed, added, replaced, all with extra_replace set to true.
@@ -341,7 +364,7 @@
         pkgFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
         pkgFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
         pkgFilter.addDataScheme("package");
-        context.registerReceiverAsUser(mReceiver, UserHandle.ALL, pkgFilter, null, null);
+        context.registerReceiverAsUser(mPackageReceiver, UserHandle.ALL, pkgFilter, null, null);
 
         int numPhones = TelephonyManager.from(context).getPhoneCount();
         mConfigFromDefaultApp = new PersistableBundle[numPhones];
@@ -372,10 +395,10 @@
 
     private void broadcastConfigChangedIntent(int phoneId) {
         Intent intent = new Intent(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
-        intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+        intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT |
+                Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
         SubscriptionManager.putPhoneIdAndSubIdExtra(intent, phoneId);
-        ActivityManagerNative.broadcastStickyIntent(intent, READ_PHONE_STATE,
-                UserHandle.USER_ALL);
+        ActivityManager.broadcastStickyIntent(intent, UserHandle.USER_ALL);
     }
 
     /** Binds to the default or carrier config app. */
@@ -456,8 +479,13 @@
             loge("Cannot save config with null packageName or iccid.");
             return;
         }
-        if (config == null) {
-          config = new PersistableBundle();
+        // b/32668103 Only save to file if config isn't empty.
+        // In case of failure, not caching an empty bundle will
+        // try loading config again on next power on or sim loaded.
+        // Downside is for genuinely empty bundle, will bind and load
+        // on every power on.
+        if (config == null || config.isEmpty()) {
+            return;
         }
 
         final String version = getPackageVersion(packageName);
@@ -649,9 +677,11 @@
         // TODO: Check that the calling packages is privileged for subId specifically.
         int privilegeStatus = TelephonyManager.from(mContext).checkCarrierPrivilegesForPackage(
                 callingPackageName);
+        // Requires the calling app to be either a carrier privileged app or
+        // system privileged app with MODIFY_PHONE_STATE permission.
         if (privilegeStatus != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
-            throw new SecurityException(
-                    "Package is not privileged for subId=" + subId + ": " + callingPackageName);
+            mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
+                    "Require carrier privileges or MODIFY_PHONE_STATE permission.");
         }
 
         // This method should block until deleting has completed, so that an error which prevents us
@@ -673,6 +703,7 @@
         switch (simState) {
             case IccCardConstants.INTENT_VALUE_ICC_ABSENT:
             case IccCardConstants.INTENT_VALUE_ICC_CARD_IO_ERROR:
+            case IccCardConstants.INTENT_VALUE_ICC_CARD_RESTRICTED:
             case IccCardConstants.INTENT_VALUE_ICC_UNKNOWN:
                 mHandler.sendMessage(mHandler.obtainMessage(EVENT_CLEAR_CONFIG, phoneId, -1));
                 break;
@@ -693,9 +724,41 @@
         }
         pw.println("CarrierConfigLoader: " + this);
         for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
-            pw.println("  Phone Id=" + i);
-            pw.println("  mConfigFromDefaultApp=" + mConfigFromDefaultApp[i]);
-            pw.println("  mConfigFromCarrierApp=" + mConfigFromCarrierApp[i]);
+            pw.println("Phone Id = " + i);
+            // display default values in CarrierConfigManager
+            printConfig(CarrierConfigManager.getDefaultConfig(), pw,
+                    "Default Values from CarrierConfigManager");
+            pw.println("");
+            // display ConfigFromDefaultApp
+            printConfig(mConfigFromDefaultApp[i], pw, "mConfigFromDefaultApp");
+            pw.println("");
+            // display ConfigFromCarrierApp
+            printConfig(mConfigFromCarrierApp[i], pw, "mConfigFromCarrierApp");
+        }
+    }
+
+    private void printConfig(PersistableBundle configApp, PrintWriter pw, String name) {
+        IndentingPrintWriter indentPW = new IndentingPrintWriter(pw, "    ");
+        if (configApp == null) {
+            indentPW.increaseIndent();
+            indentPW.println(name + " : null ");
+            return;
+        }
+        indentPW.increaseIndent();
+        indentPW.println(name + " : ");
+        List<String> sortedKeys = new ArrayList<String>(configApp.keySet());
+        Collections.sort(sortedKeys);
+        indentPW.increaseIndent();
+        indentPW.increaseIndent();
+        for (String key : sortedKeys) {
+            if (configApp.get(key) != null && configApp.get(key) instanceof Object[]) {
+                indentPW.println(key + " = " +
+                        Arrays.toString((Object[]) configApp.get(key)));
+            } else if (configApp.get(key) != null && configApp.get(key) instanceof int[]) {
+                indentPW.println(key + " = " + Arrays.toString((int[]) configApp.get(key)));
+            } else {
+                indentPW.println(key + " = " + configApp.get(key));
+            }
         }
     }
 
@@ -732,6 +795,10 @@
                 return;
 
             switch (action) {
+                case Intent.ACTION_BOOT_COMPLETED:
+                    mHandler.sendMessage(mHandler.obtainMessage(EVENT_SYSTEM_UNLOCKED, null));
+                    break;
+
                 case Intent.ACTION_PACKAGE_ADDED:
                 case Intent.ACTION_PACKAGE_REMOVED:
                 case Intent.ACTION_PACKAGE_REPLACED:
diff --git a/src/com/android/phone/CdmaCallOptions.java b/src/com/android/phone/CdmaCallOptions.java
index 4a5f229..bbd0069 100644
--- a/src/com/android/phone/CdmaCallOptions.java
+++ b/src/com/android/phone/CdmaCallOptions.java
@@ -25,10 +25,10 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.PersistableBundle;
-import android.preference.CheckBoxPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
 import android.telephony.CarrierConfigManager;
 import android.util.Log;
 import android.view.MenuItem;
@@ -38,7 +38,7 @@
     private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
     private static final String BUTTON_VP_KEY = "button_voice_privacy_key";
-    private CheckBoxPreference mButtonVoicePrivacy;
+    private SwitchPreference mButtonVoicePrivacy;
 
     @Override
     protected void onCreate(Bundle icicle) {
@@ -50,7 +50,7 @@
         subInfoHelper.setActionBarTitle(
                 getActionBar(), getResources(), R.string.labelCdmaMore_with_label);
 
-        mButtonVoicePrivacy = (CheckBoxPreference) findPreference(BUTTON_VP_KEY);
+        mButtonVoicePrivacy = (SwitchPreference) findPreference(BUTTON_VP_KEY);
         PersistableBundle carrierConfig;
         if (subInfoHelper.hasSubId()) {
             carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
diff --git a/src/com/android/phone/CdmaOptions.java b/src/com/android/phone/CdmaOptions.java
index eabbdd2..a760cda 100644
--- a/src/com/android/phone/CdmaOptions.java
+++ b/src/com/android/phone/CdmaOptions.java
@@ -16,22 +16,17 @@
 
 package com.android.phone;
 
-import android.content.Context;
 import android.content.Intent;
-import android.content.res.Resources;
-import android.net.Uri;
 import android.os.PersistableBundle;
 import android.os.SystemProperties;
 import android.preference.Preference;
-import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
-import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.TelephonyProperties;
 
 /**
@@ -46,23 +41,22 @@
 
     private static final String BUTTON_CDMA_SYSTEM_SELECT_KEY = "cdma_system_select_key";
     private static final String BUTTON_CDMA_SUBSCRIPTION_KEY = "cdma_subscription_key";
-    private static final String BUTTON_CDMA_ACTIVATE_DEVICE_KEY = "cdma_activate_device_key";
     private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
     private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key_cdma";
 
-    private PreferenceActivity mPrefActivity;
+    private PreferenceFragment mPrefFragment;
     private PreferenceScreen mPrefScreen;
     private Phone mPhone;
 
-    public CdmaOptions(PreferenceActivity prefActivity, PreferenceScreen prefScreen, Phone phone) {
-        mPrefActivity = prefActivity;
+    public CdmaOptions(PreferenceFragment prefFragment, PreferenceScreen prefScreen, Phone phone) {
+        mPrefFragment = prefFragment;
         mPrefScreen = prefScreen;
         mPhone = phone;
         create();
     }
 
     protected void create() {
-        mPrefActivity.addPreferencesFromResource(R.xml.cdma_options);
+        mPrefFragment.addPreferencesFromResource(R.xml.cdma_options);
 
         mButtonAPNExpand = (PreferenceScreen) mPrefScreen.findPreference(BUTTON_APN_EXPAND_KEY);
         boolean removedAPNExpand = false;
@@ -86,7 +80,7 @@
                             // This will setup the Home and Search affordance
                             intent.putExtra(":settings:show_fragment_as_subsetting", true);
                             intent.putExtra("sub_id", mPhone.getSubId());
-                            mPrefActivity.startActivity(intent);
+                            mPrefFragment.startActivity(intent);
                             return true;
                         }
             });
@@ -108,16 +102,6 @@
                                 .findPreference(BUTTON_CDMA_SUBSCRIPTION_KEY));
         }
 
-        final boolean voiceCapable = mPrefActivity.getResources().getBoolean(
-                com.android.internal.R.bool.config_voice_capable);
-        final boolean isLTE = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE;
-        if (voiceCapable || isLTE) {
-            // This option should not be available on voice-capable devices (i.e. regular phones)
-            // and is replaced by the LTE data service item on LTE devices
-            mPrefScreen.removePreference(
-                    mPrefScreen.findPreference(BUTTON_CDMA_ACTIVATE_DEVICE_KEY));
-        }
-
         // Read platform settings for carrier settings
         final boolean isCarrierSettingsEnabled = carrierConfig.getBoolean(
                 CarrierConfigManager.KEY_CARRIER_SETTINGS_ENABLE_BOOL);
diff --git a/src/com/android/phone/CdmaSubscriptionListPreference.java b/src/com/android/phone/CdmaSubscriptionListPreference.java
index 9b96850..20adc12 100644
--- a/src/com/android/phone/CdmaSubscriptionListPreference.java
+++ b/src/com/android/phone/CdmaSubscriptionListPreference.java
@@ -79,7 +79,7 @@
             return;
         }
 
-        int buttonCdmaSubscriptionMode = Integer.valueOf(getValue()).intValue();
+        int buttonCdmaSubscriptionMode = Integer.parseInt(getValue());
         Log.d(LOG_TAG, "Setting new value " + buttonCdmaSubscriptionMode);
         int statusCdmaSubscriptionMode;
         switch(buttonCdmaSubscriptionMode) {
@@ -120,7 +120,7 @@
 
             if (ar.exception == null) {
                 // Get the original string entered by the user
-                int cdmaSubscriptionMode = Integer.valueOf((String) ar.userObj).intValue();
+                int cdmaSubscriptionMode = Integer.parseInt((String) ar.userObj);
                 Settings.Global.putInt(mPhone.getContext().getContentResolver(),
                         Settings.Global.CDMA_SUBSCRIPTION_MODE,
                         cdmaSubscriptionMode );
diff --git a/src/com/android/phone/CdmaSystemSelectListPreference.java b/src/com/android/phone/CdmaSystemSelectListPreference.java
index 5a001de..ca2bc02 100644
--- a/src/com/android/phone/CdmaSystemSelectListPreference.java
+++ b/src/com/android/phone/CdmaSystemSelectListPreference.java
@@ -54,8 +54,7 @@
 
     @Override
     protected void showDialog(Bundle state) {
-        if (Boolean.parseBoolean(
-                    SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
+        if (mPhone.isInEcm()) {
             // In ECM mode do not show selection options
         } else {
             super.showDialog(state);
@@ -67,7 +66,7 @@
         super.onDialogClosed(positiveResult);
 
         if (positiveResult && (getValue() != null)) {
-            int buttonCdmaRoamingMode = Integer.valueOf(getValue()).intValue();
+            int buttonCdmaRoamingMode = Integer.parseInt(getValue());
             int settingsCdmaRoamingMode =
                     Settings.Global.getInt(mPhone.getContext().getContentResolver(),
                     Settings.Global.CDMA_ROAMING_MODE, Phone.CDMA_RM_HOME);
@@ -147,7 +146,7 @@
             AsyncResult ar = (AsyncResult) msg.obj;
 
             if ((ar.exception == null) && (getValue() != null)) {
-                int cdmaRoamingMode = Integer.valueOf(getValue()).intValue();
+                int cdmaRoamingMode = Integer.parseInt(getValue());
                 Settings.Global.putInt(mPhone.getContext().getContentResolver(),
                         Settings.Global.CDMA_ROAMING_MODE,
                         cdmaRoamingMode );
diff --git a/src/com/android/phone/CdmaVoicePrivacyCheckBoxPreference.java b/src/com/android/phone/CdmaVoicePrivacySwitchPreference.java
similarity index 84%
rename from src/com/android/phone/CdmaVoicePrivacyCheckBoxPreference.java
rename to src/com/android/phone/CdmaVoicePrivacySwitchPreference.java
index a5ff37e..5a99bb7 100644
--- a/src/com/android/phone/CdmaVoicePrivacyCheckBoxPreference.java
+++ b/src/com/android/phone/CdmaVoicePrivacySwitchPreference.java
@@ -22,29 +22,29 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
-import android.preference.CheckBoxPreference;
+import android.preference.SwitchPreference;
 import android.util.AttributeSet;
 import android.util.Log;
 
-public class CdmaVoicePrivacyCheckBoxPreference extends CheckBoxPreference {
-    private static final String LOG_TAG = "CdmaVoicePrivacyCheckBoxPreference";
+public class CdmaVoicePrivacySwitchPreference extends SwitchPreference {
+    private static final String LOG_TAG = "CdmaVoicePrivacySwitchPreference";
     private final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
     Phone phone;
     private MyHandler mHandler = new MyHandler();
 
-    public CdmaVoicePrivacyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+    public CdmaVoicePrivacySwitchPreference(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
 
         phone = PhoneGlobals.getPhone();
         phone.getEnhancedVoicePrivacy(mHandler.obtainMessage(MyHandler.MESSAGE_GET_VP));
     }
 
-    public CdmaVoicePrivacyCheckBoxPreference(Context context, AttributeSet attrs) {
-        this(context, attrs, com.android.internal.R.attr.checkBoxPreferenceStyle);
+    public CdmaVoicePrivacySwitchPreference(Context context, AttributeSet attrs) {
+        this(context, attrs, com.android.internal.R.attr.switchPreferenceStyle);
     }
 
-    public CdmaVoicePrivacyCheckBoxPreference(Context context) {
+    public CdmaVoicePrivacySwitchPreference(Context context) {
         this(context, null);
     }
 
diff --git a/src/com/android/phone/CellBroadcastSms.java b/src/com/android/phone/CellBroadcastSms.java
deleted file mode 100644
index 7428321..0000000
--- a/src/com/android/phone/CellBroadcastSms.java
+++ /dev/null
@@ -1,669 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.android.phone;
-
-import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.PreferenceScreen;
-import android.preference.PreferenceActivity;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.RILConstants;
-
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-
-
-/**
- * List of Phone-specific settings screens.
- */
-public class CellBroadcastSms extends PreferenceActivity
-        implements Preference.OnPreferenceChangeListener{
-    // debug data
-    private static final String LOG_TAG = "CellBroadcastSms";
-    private static final boolean DBG = false;
-
-    //String keys for preference lookup
-    private static final String BUTTON_ENABLE_DISABLE_BC_SMS_KEY =
-        "button_enable_disable_cell_bc_sms";
-    private static final String LIST_LANGUAGE_KEY =
-        "list_language";
-    private static final String BUTTON_EMERGENCY_BROADCAST_KEY =
-        "button_emergency_broadcast";
-    private static final String BUTTON_ADMINISTRATIVE_KEY =
-        "button_administrative";
-    private static final String BUTTON_MAINTENANCE_KEY =
-        "button_maintenance";
-    private static final String BUTTON_LOCAL_WEATHER_KEY =
-        "button_local_weather";
-    private static final String BUTTON_ATR_KEY =
-        "button_atr";
-    private static final String BUTTON_LAFS_KEY =
-        "button_lafs";
-    private static final String BUTTON_RESTAURANTS_KEY =
-        "button_restaurants";
-    private static final String BUTTON_LODGINGS_KEY =
-        "button_lodgings";
-    private static final String BUTTON_RETAIL_DIRECTORY_KEY =
-        "button_retail_directory";
-    private static final String BUTTON_ADVERTISEMENTS_KEY =
-        "button_advertisements";
-    private static final String BUTTON_STOCK_QUOTES_KEY =
-        "button_stock_quotes";
-    private static final String BUTTON_EO_KEY =
-        "button_eo";
-    private static final String BUTTON_MHH_KEY =
-        "button_mhh";
-    private static final String BUTTON_TECHNOLOGY_NEWS_KEY =
-        "button_technology_news";
-    private static final String BUTTON_MULTI_CATEGORY_KEY =
-        "button_multi_category";
-
-    private static final String BUTTON_LOCAL_GENERAL_NEWS_KEY =
-        "button_local_general_news";
-    private static final String BUTTON_REGIONAL_GENERAL_NEWS_KEY =
-        "button_regional_general_news";
-    private static final String BUTTON_NATIONAL_GENERAL_NEWS_KEY =
-        "button_national_general_news";
-    private static final String BUTTON_INTERNATIONAL_GENERAL_NEWS_KEY =
-        "button_international_general_news";
-
-    private static final String BUTTON_LOCAL_BF_NEWS_KEY =
-        "button_local_bf_news";
-    private static final String BUTTON_REGIONAL_BF_NEWS_KEY =
-        "button_regional_bf_news";
-    private static final String BUTTON_NATIONAL_BF_NEWS_KEY =
-        "button_national_bf_news";
-    private static final String BUTTON_INTERNATIONAL_BF_NEWS_KEY =
-        "button_international_bf_news";
-
-    private static final String BUTTON_LOCAL_SPORTS_NEWS_KEY =
-        "button_local_sports_news";
-    private static final String BUTTON_REGIONAL_SPORTS_NEWS_KEY =
-        "button_regional_sports_news";
-    private static final String BUTTON_NATIONAL_SPORTS_NEWS_KEY =
-        "button_national_sports_news";
-    private static final String BUTTON_INTERNATIONAL_SPORTS_NEWS_KEY =
-        "button_international_sports_news";
-
-    private static final String BUTTON_LOCAL_ENTERTAINMENT_NEWS_KEY =
-        "button_local_entertainment_news";
-    private static final String BUTTON_REGIONAL_ENTERTAINMENT_NEWS_KEY =
-        "button_regional_entertainment_news";
-    private static final String BUTTON_NATIONAL_ENTERTAINMENT_NEWS_KEY =
-        "button_national_entertainment_news";
-    private static final String BUTTON_INTERNATIONAL_ENTERTAINMENT_NEWS_KEY =
-        "button_international_entertainment_news";
-
-    //Class constants
-    //These values are related to the C structs. See the comments in  method
-    //setCbSmsConfig for more information.
-    private static final int NO_OF_SERVICE_CATEGORIES = 31;
-    private static final int NO_OF_INTS_STRUCT_1 = 3;
-    private static final int MAX_LENGTH_RESULT = NO_OF_SERVICE_CATEGORIES * NO_OF_INTS_STRUCT_1 + 1;
-    //Handler keys
-    private static final int MESSAGE_ACTIVATE_CB_SMS = 1;
-    private static final int MESSAGE_GET_CB_SMS_CONFIG = 2;
-    private static final int MESSAGE_SET_CB_SMS_CONFIG = 3;
-
-    //UI objects
-    private CheckBoxPreference mButtonBcSms;
-
-    private ListPreference mListLanguage;
-
-    private CheckBoxPreference mButtonEmergencyBroadcast;
-    private CheckBoxPreference mButtonAdministrative;
-    private CheckBoxPreference mButtonMaintenance;
-    private CheckBoxPreference mButtonLocalWeather;
-    private CheckBoxPreference mButtonAtr;
-    private CheckBoxPreference mButtonLafs;
-    private CheckBoxPreference mButtonRestaurants;
-    private CheckBoxPreference mButtonLodgings;
-    private CheckBoxPreference mButtonRetailDirectory;
-    private CheckBoxPreference mButtonAdvertisements;
-    private CheckBoxPreference mButtonStockQuotes;
-    private CheckBoxPreference mButtonEo;
-    private CheckBoxPreference mButtonMhh;
-    private CheckBoxPreference mButtonTechnologyNews;
-    private CheckBoxPreference mButtonMultiCategory;
-
-    private CheckBoxPreference mButtonLocal1;
-    private CheckBoxPreference mButtonRegional1;
-    private CheckBoxPreference mButtonNational1;
-    private CheckBoxPreference mButtonInternational1;
-
-    private CheckBoxPreference mButtonLocal2;
-    private CheckBoxPreference mButtonRegional2;
-    private CheckBoxPreference mButtonNational2;
-    private CheckBoxPreference mButtonInternational2;
-
-    private CheckBoxPreference mButtonLocal3;
-    private CheckBoxPreference mButtonRegional3;
-    private CheckBoxPreference mButtonNational3;
-    private CheckBoxPreference mButtonInternational3;
-
-    private CheckBoxPreference mButtonLocal4;
-    private CheckBoxPreference mButtonRegional4;
-    private CheckBoxPreference mButtonNational4;
-    private CheckBoxPreference mButtonInternational4;
-
-
-    //Member variables
-    private Phone mPhone;
-    private MyHandler mHandler;
-
-    /**
-     * Invoked on each preference click in this hierarchy, overrides
-     * PreferenceActivity's implementation.  Used to make sure we track the
-     * preference click events.
-     */
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
-            Preference preference) {
-        if (preference == mButtonBcSms) {
-            if (DBG) Log.d(LOG_TAG, "onPreferenceTreeClick: preference == mButtonBcSms.");
-            if(mButtonBcSms.isChecked()) {
-                mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED,
-                        Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
-                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                        android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
-                        RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED);
-                enableDisableAllCbConfigButtons(true);
-            } else {
-                mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED,
-                        Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
-                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                        android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
-                        RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
-                enableDisableAllCbConfigButtons(false);
-            }
-        } else if (preference == mListLanguage) {
-            //Do nothing here, because this click will be handled in onPreferenceChange
-        } else if (preference == mButtonEmergencyBroadcast) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonEmergencyBroadcast.isChecked(), 1);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(
-                    mButtonEmergencyBroadcast.isChecked(), 1);
-        } else if (preference == mButtonAdministrative) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonAdministrative.isChecked(), 2);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAdministrative.isChecked(), 2);
-        } else if (preference == mButtonMaintenance) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonMaintenance.isChecked(), 3);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMaintenance.isChecked(), 3);
-        } else if (preference == mButtonLocalWeather) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonLocalWeather.isChecked(), 20);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocalWeather.isChecked(), 20);
-        } else if (preference == mButtonAtr) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonAtr.isChecked(), 21);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAtr.isChecked(), 21);
-        } else if (preference == mButtonLafs) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLafs.isChecked(), 22);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLafs.isChecked(), 22);
-        } else if (preference == mButtonRestaurants) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRestaurants.isChecked(), 23);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRestaurants.isChecked(), 23);
-        } else if (preference == mButtonLodgings) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLodgings.isChecked(), 24);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLodgings.isChecked(), 24);
-        } else if (preference == mButtonRetailDirectory) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRetailDirectory.isChecked(), 25);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRetailDirectory.isChecked(), 25);
-        } else if (preference == mButtonAdvertisements) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonAdvertisements.isChecked(), 26);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonAdvertisements.isChecked(), 26);
-        } else if (preference == mButtonStockQuotes) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonStockQuotes.isChecked(), 27);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonStockQuotes.isChecked(), 27);
-        } else if (preference == mButtonEo) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonEo.isChecked(), 28);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonEo.isChecked(), 28);
-        } else if (preference == mButtonMhh) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonMhh.isChecked(), 29);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMhh.isChecked(), 29);
-        } else if (preference == mButtonTechnologyNews) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonTechnologyNews.isChecked(), 30);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonTechnologyNews.isChecked(), 30);
-        } else if (preference == mButtonMultiCategory) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonMultiCategory.isChecked(), 31);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonMultiCategory.isChecked(), 31);
-        } else if (preference == mButtonLocal1) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal1.isChecked(), 4);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal1.isChecked(), 4);
-        } else if (preference == mButtonRegional1) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRegional1.isChecked(), 5);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional1.isChecked(), 5);
-        } else if (preference == mButtonNational1) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonNational1.isChecked(), 6);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational1.isChecked(), 6);
-        } else if (preference == mButtonInternational1) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonInternational1.isChecked(), 7);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational1.isChecked(), 7);
-        } else if (preference == mButtonLocal2) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal2.isChecked(), 8);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal2.isChecked(), 8);
-        } else if (preference == mButtonRegional2) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRegional2.isChecked(), 9);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional2.isChecked(), 9);
-        } else if (preference == mButtonNational2) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonNational2.isChecked(), 10);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational2.isChecked(), 10);
-        } else if (preference == mButtonInternational2) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonInternational2.isChecked(), 11);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational2.isChecked(), 11);
-        } else if (preference == mButtonLocal3) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal3.isChecked(), 12);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal3.isChecked(), 12);
-        } else if (preference == mButtonRegional3) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRegional3.isChecked(), 13);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional3.isChecked(), 13);
-        } else if (preference == mButtonNational3) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonNational3.isChecked(), 14);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational3.isChecked(), 14);
-        } else if (preference == mButtonInternational3) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonInternational3.isChecked(), 15);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational3.isChecked(), 15);
-        } else if (preference == mButtonLocal4) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(mButtonLocal4.isChecked(), 16);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonLocal4.isChecked(), 16);
-        } else if (preference == mButtonRegional4) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonRegional4.isChecked(), 17);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonRegional4.isChecked(), 17);
-        } else if (preference == mButtonNational4) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonNational4.isChecked(), 18);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonNational4.isChecked(), 18);
-        } else if (preference == mButtonInternational4) {
-            CellBroadcastSmsConfig.setConfigDataCompleteBSelected(
-                    mButtonInternational4.isChecked(), 19);
-            CellBroadcastSmsConfig.setCbSmsBSelectedValue(mButtonInternational4.isChecked(), 19);
-        } else {
-            preferenceScreen.setEnabled(false);
-            return false;
-        }
-
-        return true;
-    }
-
-    public boolean onPreferenceChange(Preference preference, Object objValue) {
-        if (preference == mListLanguage) {
-            // set the new language to the array which will be transmitted later
-            CellBroadcastSmsConfig.setConfigDataCompleteLanguage(
-                    mListLanguage.findIndexOfValue((String) objValue) + 1);
-        }
-
-        // always let the preference setting proceed.
-        return true;
-    }
-
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        addPreferencesFromResource(R.xml.cell_broadcast_sms);
-
-        mPhone = PhoneGlobals.getPhone();
-        mHandler = new MyHandler();
-
-        PreferenceScreen prefSet = getPreferenceScreen();
-
-        mButtonBcSms = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_ENABLE_DISABLE_BC_SMS_KEY);
-        mListLanguage = (ListPreference) prefSet.findPreference(
-                LIST_LANGUAGE_KEY);
-        // set the listener for the language list preference
-        mListLanguage.setOnPreferenceChangeListener(this);
-        mButtonEmergencyBroadcast = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_EMERGENCY_BROADCAST_KEY);
-        mButtonAdministrative = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_ADMINISTRATIVE_KEY);
-        mButtonMaintenance = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_MAINTENANCE_KEY);
-        mButtonLocalWeather = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LOCAL_WEATHER_KEY);
-        mButtonAtr = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_ATR_KEY);
-        mButtonLafs = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LAFS_KEY);
-        mButtonRestaurants = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_RESTAURANTS_KEY);
-        mButtonLodgings = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LODGINGS_KEY);
-        mButtonRetailDirectory = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_RETAIL_DIRECTORY_KEY);
-        mButtonAdvertisements = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_ADVERTISEMENTS_KEY);
-        mButtonStockQuotes = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_STOCK_QUOTES_KEY);
-        mButtonEo = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_EO_KEY);
-        mButtonMhh = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_MHH_KEY);
-        mButtonTechnologyNews = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_TECHNOLOGY_NEWS_KEY);
-        mButtonMultiCategory = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_MULTI_CATEGORY_KEY);
-
-        mButtonLocal1 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LOCAL_GENERAL_NEWS_KEY);
-        mButtonRegional1 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_REGIONAL_GENERAL_NEWS_KEY);
-        mButtonNational1 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_NATIONAL_GENERAL_NEWS_KEY);
-        mButtonInternational1 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_INTERNATIONAL_GENERAL_NEWS_KEY);
-
-        mButtonLocal2 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LOCAL_BF_NEWS_KEY);
-        mButtonRegional2 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_REGIONAL_BF_NEWS_KEY);
-        mButtonNational2 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_NATIONAL_BF_NEWS_KEY);
-        mButtonInternational2 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_INTERNATIONAL_BF_NEWS_KEY);
-
-        mButtonLocal3 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LOCAL_SPORTS_NEWS_KEY);
-        mButtonRegional3 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_REGIONAL_SPORTS_NEWS_KEY);
-        mButtonNational3 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_NATIONAL_SPORTS_NEWS_KEY);
-        mButtonInternational3 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_INTERNATIONAL_SPORTS_NEWS_KEY);
-
-        mButtonLocal4 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_LOCAL_ENTERTAINMENT_NEWS_KEY);
-        mButtonRegional4 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_REGIONAL_ENTERTAINMENT_NEWS_KEY);
-        mButtonNational4 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_NATIONAL_ENTERTAINMENT_NEWS_KEY);
-        mButtonInternational4 = (CheckBoxPreference) prefSet.findPreference(
-                BUTTON_INTERNATIONAL_ENTERTAINMENT_NEWS_KEY);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-
-        getPreferenceScreen().setEnabled(true);
-
-        int settingCbSms = android.provider.Settings.Global.getInt(
-                mPhone.getContext().getContentResolver(),
-                android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
-                RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
-        mButtonBcSms.setChecked(settingCbSms == RILConstants.CDMA_CELL_BROADCAST_SMS_ENABLED);
-
-        if(mButtonBcSms.isChecked()) {
-            enableDisableAllCbConfigButtons(true);
-        } else {
-            enableDisableAllCbConfigButtons(false);
-        }
-
-        mPhone.getCellBroadcastSmsConfig(Message.obtain(mHandler, MESSAGE_GET_CB_SMS_CONFIG));
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-
-            CellBroadcastSmsConfig.setCbSmsNoOfStructs(NO_OF_SERVICE_CATEGORIES);
-
-            mPhone.setCellBroadcastSmsConfig(CellBroadcastSmsConfig.getCbSmsAllValues(),
-                    Message.obtain(mHandler, MESSAGE_SET_CB_SMS_CONFIG));
-        }
-
-    private void enableDisableAllCbConfigButtons(boolean enable) {
-        mButtonEmergencyBroadcast.setEnabled(enable);
-        mListLanguage.setEnabled(enable);
-        mButtonAdministrative.setEnabled(enable);
-        mButtonMaintenance.setEnabled(enable);
-        mButtonLocalWeather.setEnabled(enable);
-        mButtonAtr.setEnabled(enable);
-        mButtonLafs.setEnabled(enable);
-        mButtonRestaurants.setEnabled(enable);
-        mButtonLodgings.setEnabled(enable);
-        mButtonRetailDirectory.setEnabled(enable);
-        mButtonAdvertisements.setEnabled(enable);
-        mButtonStockQuotes.setEnabled(enable);
-        mButtonEo.setEnabled(enable);
-        mButtonMhh.setEnabled(enable);
-        mButtonTechnologyNews.setEnabled(enable);
-        mButtonMultiCategory.setEnabled(enable);
-
-        mButtonLocal1.setEnabled(enable);
-        mButtonRegional1.setEnabled(enable);
-        mButtonNational1.setEnabled(enable);
-        mButtonInternational1.setEnabled(enable);
-
-        mButtonLocal2.setEnabled(enable);
-        mButtonRegional2.setEnabled(enable);
-        mButtonNational2.setEnabled(enable);
-        mButtonInternational2.setEnabled(enable);
-
-        mButtonLocal3.setEnabled(enable);
-        mButtonRegional3.setEnabled(enable);
-        mButtonNational3.setEnabled(enable);
-        mButtonInternational3.setEnabled(enable);
-
-        mButtonLocal4.setEnabled(enable);
-        mButtonRegional4.setEnabled(enable);
-        mButtonNational4.setEnabled(enable);
-        mButtonInternational4.setEnabled(enable);
-    }
-
-    private void setAllCbConfigButtons(int[] configArray) {
-        //These buttons are in a well defined sequence. If you want to change it,
-        //be sure to map the buttons to their corresponding slot in the configArray !
-        mButtonEmergencyBroadcast.setChecked(configArray[1] != 0);
-        //subtract 1, because the values are handled in an array which starts with 0 and not with 1
-        mListLanguage.setValueIndex(CellBroadcastSmsConfig.getConfigDataLanguage() - 1);
-        mButtonAdministrative.setChecked(configArray[2] != 0);
-        mButtonMaintenance.setChecked(configArray[3] != 0);
-        mButtonLocalWeather.setChecked(configArray[20] != 0);
-        mButtonAtr.setChecked(configArray[21] != 0);
-        mButtonLafs.setChecked(configArray[22] != 0);
-        mButtonRestaurants.setChecked(configArray[23] != 0);
-        mButtonLodgings.setChecked(configArray[24] != 0);
-        mButtonRetailDirectory.setChecked(configArray[25] != 0);
-        mButtonAdvertisements.setChecked(configArray[26] != 0);
-        mButtonStockQuotes.setChecked(configArray[27] != 0);
-        mButtonEo.setChecked(configArray[28] != 0);
-        mButtonMhh.setChecked(configArray[29] != 0);
-        mButtonTechnologyNews.setChecked(configArray[30] != 0);
-        mButtonMultiCategory.setChecked(configArray[31] != 0);
-
-        mButtonLocal1.setChecked(configArray[4] != 0);
-        mButtonRegional1.setChecked(configArray[5] != 0);
-        mButtonNational1.setChecked(configArray[6] != 0);
-        mButtonInternational1.setChecked(configArray[7] != 0);
-
-        mButtonLocal2.setChecked(configArray[8] != 0);
-        mButtonRegional2.setChecked(configArray[9] != 0);
-        mButtonNational2.setChecked(configArray[10] != 0);
-        mButtonInternational2.setChecked(configArray[11] != 0);
-
-        mButtonLocal3.setChecked(configArray[12] != 0);
-        mButtonRegional3.setChecked(configArray[13] != 0);
-        mButtonNational3.setChecked(configArray[14] != 0);
-        mButtonInternational3.setChecked(configArray[15] != 0);
-
-        mButtonLocal4.setChecked(configArray[16] != 0);
-        mButtonRegional4.setChecked(configArray[17] != 0);
-        mButtonNational4.setChecked(configArray[18] != 0);
-        mButtonInternational4.setChecked(configArray[19] != 0);
-    }
-
-    private class MyHandler extends Handler {
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-            case MESSAGE_ACTIVATE_CB_SMS:
-                //Only a log message here, because the received response is always null
-                if (DBG) Log.d(LOG_TAG, "Cell Broadcast SMS enabled/disabled.");
-                break;
-            case MESSAGE_GET_CB_SMS_CONFIG:
-                int result[] = (int[])((AsyncResult)msg.obj).result;
-
-                // check if the actual service categoties table size on the NV is '0'
-                if (result[0] == 0) {
-                    result[0] = NO_OF_SERVICE_CATEGORIES;
-
-                    mButtonBcSms.setChecked(false);
-                    mPhone.activateCellBroadcastSms(RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED,
-                            Message.obtain(mHandler, MESSAGE_ACTIVATE_CB_SMS));
-                    android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                            android.provider.Settings.Global.CDMA_CELL_BROADCAST_SMS,
-                            RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED);
-                    enableDisableAllCbConfigButtons(false);
-                }
-
-                CellBroadcastSmsConfig.setCbSmsConfig(result);
-                setAllCbConfigButtons(CellBroadcastSmsConfig.getCbSmsBselectedValues());
-
-                break;
-            case MESSAGE_SET_CB_SMS_CONFIG:
-                //Only a log message here, because the received response is always null
-                if (DBG) Log.d(LOG_TAG, "Set Cell Broadcast SMS values.");
-                break;
-            default:
-                Log.e(LOG_TAG, "Error! Unhandled message in CellBroadcastSms.java. Message: "
-                        + msg.what);
-            break;
-            }
-        }
-    }
-
-    private static final class CellBroadcastSmsConfig {
-
-        //The values in this array are stored in a particular order. This order
-        //is calculated in the setCbSmsConfig method of this class.
-        //For more information see comments below...
-        //NO_OF_SERVICE_CATEGORIES +1 is used, because we will leave the first array entry 0
-        private static int mBSelected[] = new int[NO_OF_SERVICE_CATEGORIES + 1];
-        private static int mConfigDataComplete[] = new int[MAX_LENGTH_RESULT];
-
-        private static void setCbSmsConfig(int[] configData) {
-            if(configData == null) {
-                Log.e(LOG_TAG, "Error! No cell broadcast service categories returned.");
-                return;
-            }
-
-            if(configData[0] > MAX_LENGTH_RESULT) {
-                Log.e(LOG_TAG, "Error! Wrong number of service categories returned from RIL");
-                return;
-            }
-
-            //The required config values for broadcast SMS are stored in a C struct:
-            //
-            //  typedef struct {
-            //      int size;
-            //      RIL_CDMA_BcServiceInfo *entries;
-            //  } RIL_CDMA_BcSMSConfig;
-            //
-            //  typedef struct {
-            //      int uServiceCategory;
-            //      int uLanguage;
-            //      unsigned char bSelected;
-            //  } RIL_CDMA_BcServiceInfo;
-            //
-            // This means, that we have to ignore the first value and check every
-            // 3rd value starting with the 2nd of all. This value indicates, where we
-            // will store the appropriate bSelected value, which is 2 values behind it.
-            for(int i = 1; i < configData.length; i += NO_OF_INTS_STRUCT_1) {
-                mBSelected[configData[i]] = configData[i +2];
-            }
-
-            //Store all values in an extra array
-            mConfigDataComplete = configData;
-        }
-
-        private static void setCbSmsBSelectedValue(boolean value, int pos) {
-            if(pos < mBSelected.length) {
-                mBSelected[pos] = (value == true ? 1 : 0);
-            } else {
-                Log.e(LOG_TAG,"Error! Invalid value position.");
-            }
-        }
-
-        private static int[] getCbSmsBselectedValues() {
-            return(mBSelected);
-        }
-
-        // TODO: Change the return value to a RIL_BroadcastSMSConfig
-        private static int[] getCbSmsAllValues() {
-            return(mConfigDataComplete);
-        }
-
-        private static void setCbSmsNoOfStructs(int value) {
-            //Sets the size parameter, which contains the number of structs
-            //that will be transmitted
-            mConfigDataComplete[0] = value;
-        }
-
-        private static void setConfigDataCompleteBSelected(boolean value, int serviceCategory) {
-            //Sets the bSelected value for a specific serviceCategory
-            for(int i = 1; i < mConfigDataComplete.length; i += NO_OF_INTS_STRUCT_1) {
-                if(mConfigDataComplete[i] == serviceCategory) {
-                    mConfigDataComplete[i + 2] = value == true ? 1 : 0;
-                    break;
-                }
-            }
-        }
-
-        private static void setConfigDataCompleteLanguage(int language) {
-            //It is only possible to set the same language for all entries
-            for(int i = 2; i < mConfigDataComplete.length; i += NO_OF_INTS_STRUCT_1) {
-                mConfigDataComplete[i] = language;
-            }
-        }
-
-        private static int getConfigDataLanguage() {
-            int language = mConfigDataComplete[2];
-            //2 is the language value of the first entry
-            //It is only possible to set the same language for all entries
-            if (language < 1 || language > 7) {
-                Log.e(LOG_TAG, "Error! Wrong language returned from RIL...defaulting to 1, english");
-                return 1;
-            }
-            else {
-                return language;
-            }
-        }
-    }
-}
diff --git a/src/com/android/phone/DumpsysHandler.java b/src/com/android/phone/DumpsysHandler.java
new file mode 100644
index 0000000..47f6105
--- /dev/null
+++ b/src/com/android/phone/DumpsysHandler.java
@@ -0,0 +1,22 @@
+
+package com.android.phone;
+
+import android.content.Context;
+
+import com.android.phone.vvm.VvmDumpHandler;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+/**
+ * Handles "adb shell dumpsys phone" and bug report dump.
+ */
+public class DumpsysHandler {
+
+    public static void dump(Context context, FileDescriptor fd, PrintWriter writer,
+            String[] args) {
+        PhoneGlobals.getInstance().dump(fd, writer, args);
+        // Dump OMTP visual voicemail log.
+        VvmDumpHandler.dump(context, fd, writer, args);
+    }
+}
diff --git a/src/com/android/phone/EmergencyActionGroup.java b/src/com/android/phone/EmergencyActionGroup.java
index 2d70d01..524462e 100644
--- a/src/com/android/phone/EmergencyActionGroup.java
+++ b/src/com/android/phone/EmergencyActionGroup.java
@@ -76,7 +76,6 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        setupAssistActions();
 
         mSelectedContainer = (ViewGroup) findViewById(R.id.selected_container);
         mSelectedContainer.setOnClickListener(this);
@@ -85,6 +84,14 @@
         mLaunchHint = findViewById(R.id.launch_hint);
     }
 
+    @Override
+    protected void onWindowVisibilityChanged(int visibility) {
+        super.onWindowVisibilityChanged(visibility);
+        if (visibility == View.VISIBLE) {
+            setupAssistActions();
+        }
+    }
+
     /**
      * Called by the activity before a touch event is dispatched to the view hierarchy.
      */
@@ -165,11 +172,9 @@
                 } catch (PackageManager.NameNotFoundException e) {
                     continue;
                 }
-                // Get earliest installed app, but prioritize system apps.
-                if (bestMatch == null
-                        || !isSystemApp(bestMatch) && isSystemApp(packageInfo)
-                        || isSystemApp(bestMatch) == isSystemApp(packageInfo)
-                                && bestMatch.firstInstallTime > packageInfo.firstInstallTime) {
+                // Get earliest installed system app.
+                if (isSystemApp(packageInfo) && (bestMatch == null ||
+                        bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
                     bestMatch = packageInfo;
                 }
             }
diff --git a/src/com/android/phone/EmergencyCallbackModeExitDialog.java b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
index 7f4bd1b..f5509b9 100644
--- a/src/com/android/phone/EmergencyCallbackModeExitDialog.java
+++ b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
@@ -78,11 +78,11 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        mPhone = PhoneGlobals.getInstance().getPhoneInEcm();
         // Check if phone is in Emergency Callback Mode. If not, exit.
-        final boolean isInEcm = Boolean.parseBoolean(
-                SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE));
-        Log.i(TAG, "ECMModeExitDialog launched - isInEcm: " + isInEcm);
-        if (!isInEcm) {
+        final boolean isInEcm = mPhone.isInEcm();
+        Log.i(TAG, "ECMModeExitDialog launched - isInEcm: " + isInEcm + " phone:" + mPhone);
+        if (mPhone == null || !isInEcm) {
             finish();
             return;
         }
@@ -96,7 +96,6 @@
         waitForConnectionCompleteThread.start();
 
         // Register ECM timer reset notfication
-        mPhone = PhoneGlobals.getPhone();
         mPhone.registerForEcmTimerReset(mTimerResetHandler, ECM_TIMER_RESET, null);
 
         // Register receiver for intent closing the dialog
diff --git a/src/com/android/phone/EmergencyCallbackModeService.java b/src/com/android/phone/EmergencyCallbackModeService.java
index 3310df1..a07f7aa 100644
--- a/src/com/android/phone/EmergencyCallbackModeService.java
+++ b/src/com/android/phone/EmergencyCallbackModeService.java
@@ -24,8 +24,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.res.Resources;
-import android.graphics.BitmapFactory;
 import android.os.AsyncResult;
 import android.os.Binder;
 import android.os.CountDownTimer;
@@ -35,12 +33,13 @@
 import android.os.SystemProperties;
 import android.util.Log;
 
-import com.android.internal.telephony.cdma.CDMAPhone;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.telephony.TelephonyProperties;
+import com.android.internal.telephony.util.NotificationChannelController;
+
+import java.text.SimpleDateFormat;
 
 /**
  * Application service that inserts/removes Emergency Callback Mode notification and
@@ -74,12 +73,13 @@
 
     @Override
     public void onCreate() {
+         Phone phoneInEcm = PhoneGlobals.getInstance().getPhoneInEcm();
         // Check if it is CDMA phone
-        if ((PhoneFactory.getDefaultPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA)
-                && (PhoneFactory.getDefaultPhone().getImsPhone() == null)) {
-            Log.e(LOG_TAG, "Error! Emergency Callback Mode not supported for " +
-                    PhoneFactory.getDefaultPhone().getPhoneName() + " phones");
+        if (phoneInEcm == null || ((phoneInEcm.getPhoneType() != PhoneConstants.PHONE_TYPE_CDMA)
+                && (phoneInEcm.getImsPhone() == null))) {
+            Log.e(LOG_TAG, "Error! Emergency Callback Mode not supported for " + phoneInEcm);
             stopSelf();
+            return;
         }
 
         // Register receiver for intents
@@ -91,7 +91,7 @@
         mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
         // Register ECM timer reset notfication
-        mPhone = PhoneFactory.getDefaultPhone();
+        mPhone = phoneInEcm;
         mPhone.registerForEcmTimerReset(mHandler, ECM_TIMER_RESET, null);
 
         startTimerNotification();
@@ -99,14 +99,16 @@
 
     @Override
     public void onDestroy() {
-        // Unregister receiver
-        unregisterReceiver(mEcmReceiver);
-        // Unregister ECM timer reset notification
-        mPhone.unregisterForEcmTimerReset(mHandler);
+        if (mPhone != null) {
+            // Unregister receiver
+            unregisterReceiver(mEcmReceiver);
+            // Unregister ECM timer reset notification
+            mPhone.unregisterForEcmTimerReset(mHandler);
 
-        // Cancel the notification and timer
-        mNotificationManager.cancel(R.string.phone_in_ecm_notification_title);
-        mTimer.cancel();
+            // Cancel the notification and timer
+            mNotificationManager.cancel(R.string.phone_in_ecm_notification_title);
+            mTimer.cancel();
+        }
     }
 
     /**
@@ -152,7 +154,6 @@
                 @Override
                 public void onTick(long millisUntilFinished) {
                     mTimeLeft = millisUntilFinished;
-                    EmergencyCallbackModeService.this.showNotification(millisUntilFinished);
                 }
 
                 @Override
@@ -169,8 +170,8 @@
      * Shows notification for Emergency Callback Mode
      */
     private void showNotification(long millisUntilFinished) {
-        final boolean isInEcm = Boolean.parseBoolean(
-                SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE));
+        Phone imsPhone = mPhone.getImsPhone();
+        boolean isInEcm = mPhone.isInEcm() || (imsPhone != null && imsPhone.isInEcm());
         if (!isInEcm) {
             Log.i(LOG_TAG, "Asked to show notification but not in ECM mode");
             if (mTimer != null) {
@@ -197,12 +198,20 @@
         if(mInEmergencyCall) {
             text = getText(R.string.phone_in_ecm_call_notification_text).toString();
         } else {
-            int minutes = (int)(millisUntilFinished / 60000);
-            String time = String.format("%d:%02d", minutes, (millisUntilFinished % 60000) / 1000);
-            text = String.format(getResources().getQuantityText(
-                     R.plurals.phone_in_ecm_notification_time, minutes).toString(), time);
+            // Calculate the time in ms when the notification will be finished.
+            long finishedCountMs = millisUntilFinished + System.currentTimeMillis();
+            builder.setShowWhen(true);
+            builder.setChronometerCountDown(true);
+            builder.setUsesChronometer(true);
+            builder.setWhen(finishedCountMs);
+
+            String completeTime = SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT).format(
+                    finishedCountMs);
+            text = getResources().getString(R.string.phone_in_ecm_notification_complete_time,
+                    completeTime);
         }
         builder.setContentText(text);
+        builder.setChannelId(NotificationChannelController.CHANNEL_ID_ALERT);
 
         // Show notification
         mNotificationManager.notify(R.string.phone_in_ecm_notification_title, builder.build());
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index 780f76b..3559a75 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -36,20 +36,22 @@
 import android.telephony.PhoneNumberUtils;
 import android.telephony.SubscriptionManager;
 import android.text.Editable;
+import android.text.InputType;
+import android.text.Spannable;
+import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.text.method.DialerKeyListener;
 import android.text.style.TtsSpan;
 import android.util.Log;
+import android.view.HapticFeedbackConstants;
 import android.view.KeyEvent;
 import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.WindowManager;
-import android.view.accessibility.AccessibilityManager;
 import android.widget.EditText;
 
-import com.android.phone.common.HapticFeedback;
 import com.android.phone.common.dialpad.DialpadKeyButton;
 import com.android.phone.common.util.ViewUtil;
 
@@ -91,8 +93,6 @@
     private static final boolean DBG = false;
     private static final String LOG_TAG = "EmergencyDialer";
 
-    private StatusBarManager mStatusBarManager;
-
     /** The length of DTMF tones in milliseconds */
     private static final int TONE_LENGTH_MS = 150;
 
@@ -104,8 +104,6 @@
 
     private static final int BAD_EMERGENCY_NUMBER_DIALOG = 0;
 
-    // private static final int USER_ACTIVITY_TIMEOUT_WHEN_NO_PROX_SENSOR = 15000; // millis
-
     EditText mDigits;
     private View mDialButton;
     private View mDelete;
@@ -116,9 +114,6 @@
     // determines if we want to playback local DTMF tones.
     private boolean mDTMFToneEnabled;
 
-    // Haptic feedback (vibration) for dialer key presses.
-    private HapticFeedback mHaptic = new HapticFeedback();
-
     private EmergencyActionGroup mEmergencyActionGroup;
 
     // close activity when screen turns off
@@ -167,8 +162,6 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        mStatusBarManager = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);
-
         // Allow this activity to be displayed in front of the keyguard / lockscreen.
         WindowManager.LayoutParams lp = getWindow().getAttributes();
         lp.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
@@ -186,6 +179,7 @@
         mDigits.setOnClickListener(this);
         mDigits.setOnKeyListener(this);
         mDigits.setLongClickable(false);
+        mDigits.setInputType(InputType.TYPE_NULL);
         maybeAddNumberFormatting();
 
         // Check for the presence of the keypad
@@ -206,7 +200,7 @@
         CarrierConfigManager configMgr =
                 (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE);
         PersistableBundle carrierConfig =
-                configMgr.getConfigForSubId(SubscriptionManager.getDefaultVoiceSubId());
+                configMgr.getConfigForSubId(SubscriptionManager.getDefaultVoiceSubscriptionId());
         if (carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL)) {
             mDialButton.setOnClickListener(this);
         } else {
@@ -244,15 +238,6 @@
         intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
         registerReceiver(mBroadcastReceiver, intentFilter);
 
-        try {
-            mHaptic.init(
-                    this,
-                    carrierConfig.getBoolean(
-                            CarrierConfigManager.KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL));
-        } catch (Resources.NotFoundException nfe) {
-             Log.e(LOG_TAG, "Vibrate control bool missing.", nfe);
-        }
-
         mEmergencyActionGroup = (EmergencyActionGroup) findViewById(R.id.emergency_action_group);
     }
 
@@ -333,7 +318,7 @@
     }
 
     private void keyPressed(int keyCode) {
-        mHaptic.vibrate();
+        mDigits.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
         KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
         mDigits.onKeyDown(keyCode, event);
     }
@@ -370,7 +355,7 @@
                 return;
             }
             case R.id.floating_action_button: {
-                mHaptic.vibrate();  // Vibrate here too, just like we do for the regular keys
+                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                 placeCall();
                 return;
             }
@@ -480,9 +465,6 @@
         mDTMFToneEnabled = Settings.System.getInt(getContentResolver(),
                 Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1;
 
-        // Retrieve the haptic feedback setting.
-        mHaptic.checkSystemSetting();
-
         // if the mToneGenerator creation fails, just continue without it.  It is
         // a local audio signal, and is not as important as the dtmf tone itself.
         synchronized (mToneGeneratorLock) {
@@ -497,21 +479,11 @@
             }
         }
 
-        // Disable the status bar and set the poke lock timeout to medium.
-        // There is no need to do anything with the wake lock.
-        if (DBG) Log.d(LOG_TAG, "disabling status bar, set to long timeout");
-        mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
-
         updateDialAndDeleteButtonStateEnabledAttr();
     }
 
     @Override
     public void onPause() {
-        // Reenable the status bar and set the poke lock timeout to default.
-        // There is no need to do anything with the wake lock.
-        if (DBG) Log.d(LOG_TAG, "reenabling status bar and closing the dialer");
-        mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
-
         super.onPause();
 
         synchronized (mToneGeneratorLock) {
@@ -527,6 +499,12 @@
      */
     private void placeCall() {
         mLastNumber = mDigits.getText().toString();
+
+        // Convert into emergency number according to emergency conversion map.
+        // If conversion map is not defined (this is default), this method does
+        // nothing and just returns input number.
+        mLastNumber = PhoneNumberUtils.convertToEmergencyNumber(this, mLastNumber);
+
         if (PhoneNumberUtils.isLocalEmergencyNumber(this, mLastNumber)) {
             if (DBG) Log.d(LOG_TAG, "placing call to " + mLastNumber);
 
@@ -588,7 +566,12 @@
 
     private CharSequence createErrorMessage(String number) {
         if (!TextUtils.isEmpty(number)) {
-            return getString(R.string.dial_emergency_error, mLastNumber);
+            String errorString = getString(R.string.dial_emergency_error, number);
+            int startingPosition = errorString.indexOf(number);
+            int endingPosition = startingPosition + number.length();
+            Spannable result = new SpannableString(errorString);
+            PhoneNumberUtils.addTtsSpan(result, startingPosition, endingPosition);
+            return result;
         } else {
             return getText(R.string.dial_emergency_empty_error).toString();
         }
diff --git a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
index 88d32fb..082eaa9 100644
--- a/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
+++ b/src/com/android/phone/GsmUmtsAdditionalCallOptions.java
@@ -1,7 +1,6 @@
 package com.android.phone;
 
 import android.app.ActionBar;
-import android.content.Intent;
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
@@ -20,7 +19,7 @@
     private static final String BUTTON_CW_KEY    = "button_cw_key";
 
     private CLIRListPreference mCLIRButton;
-    private CallWaitingCheckBoxPreference mCWButton;
+    private CallWaitingSwitchPreference mCWButton;
 
     private final ArrayList<Preference> mPreferences = new ArrayList<Preference>();
     private int mInitIndex = 0;
@@ -40,7 +39,7 @@
 
         PreferenceScreen prefSet = getPreferenceScreen();
         mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY);
-        mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY);
+        mCWButton = (CallWaitingSwitchPreference) prefSet.findPreference(BUTTON_CW_KEY);
 
         mPreferences.add(mCLIRButton);
         mPreferences.add(mCWButton);
@@ -84,8 +83,8 @@
         if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
             mInitIndex++;
             Preference pref = mPreferences.get(mInitIndex);
-            if (pref instanceof CallWaitingCheckBoxPreference) {
-                ((CallWaitingCheckBoxPreference) pref).init(this, false, mPhone);
+            if (pref instanceof CallWaitingSwitchPreference) {
+                ((CallWaitingSwitchPreference) pref).init(this, false, mPhone);
             }
         }
         super.onFinished(preference, reading);
diff --git a/src/com/android/phone/GsmUmtsOptions.java b/src/com/android/phone/GsmUmtsOptions.java
index 2e9d88a..70ba4af 100644
--- a/src/com/android/phone/GsmUmtsOptions.java
+++ b/src/com/android/phone/GsmUmtsOptions.java
@@ -16,12 +16,11 @@
 
 package com.android.phone;
 
-import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.os.PersistableBundle;
 import android.preference.Preference;
-import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
@@ -43,20 +42,20 @@
     private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
     private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
     public static final String EXTRA_SUB_ID = "sub_id";
-    private PreferenceActivity mPrefActivity;
+    private PreferenceFragment mPrefFragment;
     private PreferenceScreen mPrefScreen;
     private int mSubId;
 
-    public GsmUmtsOptions(PreferenceActivity prefActivity, PreferenceScreen prefScreen,
+    public GsmUmtsOptions(PreferenceFragment prefFragment, PreferenceScreen prefScreen,
             final int subId) {
-        mPrefActivity = prefActivity;
+        mPrefFragment = prefFragment;
         mPrefScreen = prefScreen;
         mSubId = subId;
         create();
     }
 
     protected void create() {
-        mPrefActivity.addPreferencesFromResource(R.xml.gsm_umts_options);
+        mPrefFragment.addPreferencesFromResource(R.xml.gsm_umts_options);
         mButtonAPNExpand = (PreferenceScreen) mPrefScreen.findPreference(BUTTON_APN_EXPAND_KEY);
         boolean removedAPNExpand = false;
         mButtonOperatorSelectionExpand =
@@ -67,7 +66,7 @@
             mButtonOperatorSelectionExpand.setEnabled(false);
         } else {
             log("Not a CDMA phone");
-            Resources res = mPrefActivity.getResources();
+            Resources res = mPrefFragment.getResources();
             PersistableBundle carrierConfig =
                     PhoneGlobals.getInstance().getCarrierConfigForSubId(mSubId);
 
@@ -120,7 +119,7 @@
                             // This will setup the Home and Search affordance
                             intent.putExtra(":settings:show_fragment_as_subsetting", true);
                             intent.putExtra(EXTRA_SUB_ID, mSubId);
-                            mPrefActivity.startActivity(intent);
+                            mPrefFragment.startActivity(intent);
                             return true;
                         }
             });
@@ -134,7 +133,7 @@
                             intent.setComponent(new ComponentName("com.android.phone",
                                     "com.android.phone.NetworkSetting"));
                             intent.putExtra(EXTRA_SUB_ID, mSubId);
-                            mPrefActivity.startActivity(intent);
+                            mPrefFragment.startActivity(intent);
                             return true;
                         }
             });
diff --git a/src/com/android/phone/HfaActivity.java b/src/com/android/phone/HfaActivity.java
deleted file mode 100644
index b526d46..0000000
--- a/src/com/android/phone/HfaActivity.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.PendingIntent;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.util.Log;
-
-/**
- * Starts and displays status for Hands Free Activation (HFA).
- *
- * This class operates with Hands Free Activation apps. It comes up during activation
- * requests that occur outside of setup wizard and so provides its own UI.
- * It uses {@link HfaLogic} to perform the actual activation and during the process
- * displays a "performing activation..." dialog.  This will remain up until the user
- * chooses to skip the activation (still happens in the background) or the activation
- * is successful.  Upon failure, the dialog also goes away but a subsequent dialog will
- * ask the user if they would like to try again or cancel.
- */
-public class HfaActivity extends Activity {
-    private static final String TAG = HfaActivity.class.getSimpleName();
-
-    private AlertDialog mDialog;
-    private HfaLogic mHfaLogic;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Log.i(TAG, "onCreate");
-
-        final PendingIntent otaResponseIntent = getIntent().getParcelableExtra(
-                OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
-
-        mHfaLogic = new HfaLogic(this.getApplicationContext(), new HfaLogic.HfaLogicCallback() {
-            @Override
-            public void onSuccess() {
-                onHfaSuccess();
-            }
-
-            @Override
-            public void onError(String error) {
-                onHfaError(error);
-            }
-        }, otaResponseIntent);
-
-        startProvisioning();
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-
-        Log.i(TAG, "onDestroy");
-
-        if (mDialog != null && mDialog.isShowing()) {
-            mDialog.dismiss();
-            mDialog = null;
-        }
-    }
-
-    private void startProvisioning() {
-        buildAndShowDialog();
-        mHfaLogic.start();
-    }
-
-    private void buildAndShowDialog() {
-        mDialog = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
-                .setTitle(R.string.ota_hfa_activation_title)
-                .setMessage(R.string.ota_hfa_activation_dialog_message)
-                .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label,
-                        new DialogInterface.OnClickListener() {
-                            @Override
-                            public void onClick(DialogInterface di, int which) {
-                                onUserSkip();
-                            }})
-                /*.setOnCancelListener(new DialogInterface.OnCancelListener() {
-                    @Override
-                    public void onCancel(DialogInterface di) {
-                        sendFinalResponse(OTASP_USER_SKIPPED);
-                    }})*/
-                .create();
-
-        // Do not allow user to dismiss dialog unless they are clicking "skip"
-        mDialog.setCanceledOnTouchOutside(false);
-        mDialog.setCancelable(false);
-
-        Log.i(TAG, "showing dialog");
-        mDialog.show();
-    }
-
-    private void onHfaError(String errorMsg) {
-        mDialog.dismiss();
-
-        AlertDialog errorDialog = new AlertDialog.Builder(this,
-                AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
-            .setMessage(errorMsg)
-            .setPositiveButton(R.string.ota_skip_activation_dialog_skip_label,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface di, int which) {
-                            di.dismiss();
-                            onUserSkip();
-                        }
-                    })
-            .setNegativeButton(R.string.ota_try_again,
-                    new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface di, int which) {
-                            di.dismiss();
-                            startProvisioning();
-                        }
-                    })
-            .create();
-
-        errorDialog.show();
-    }
-
-    private void onHfaSuccess() {
-        finish();
-    }
-
-    private void onUserSkip() {
-        finish();
-    }
-
-}
diff --git a/src/com/android/phone/HfaLogic.java b/src/com/android/phone/HfaLogic.java
deleted file mode 100644
index b064b18..0000000
--- a/src/com/android/phone/HfaLogic.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.telephony.ServiceState;
-import android.util.Log;
-
-import com.android.internal.telephony.Phone;
-import com.google.common.base.Preconditions;
-
-/**
- * Starts and displays status for Hands Free Activation (HFA).
- *
- * This class operates with Hands Free Activation apps.
- * It starts by broadcasting the intent com.android.action.START_HFA.
- * An HFA app will pick that up and start the HFA process.
- * If it fails it return ERROR_HFA Intent and upon success returns COMPLETE_HFA.
- *
- * If successful, we bounce the radio so that the service picks up the new number.
- * Once the radio is back on we callback the requestor.
- *
- * If there is an error, we do not bounce the radio but still callback with a failure.
- *
- * TODO(klp): We need system-only permissions for the HFA intents.
- */
-public class HfaLogic {
-    private static final String TAG = HfaLogic.class.getSimpleName();
-
-    private static final String ACTION_START = "com.android.action.START_HFA";
-    private static final String ACTION_ERROR = "com.android.action.ERROR_HFA";
-    private static final String ACTION_CANCEL = "com.android.action.CANCEL_HFA";
-    private static final String ACTION_COMPLETE = "com.android.action.COMPLETE_HFA";
-
-    private static final int SERVICE_STATE_CHANGED = 1;
-
-    public static final int NOT_WAITING = 0;
-    public static final int WAITING_FOR_RADIO_OFF = 1;
-    public static final int WAITING_FOR_RADIO_ON = 2;
-
-    public static final int OTASP_UNKNOWN = 0;
-    public static final int OTASP_USER_SKIPPED = 1;
-    public static final int OTASP_SUCCESS = 2;
-    public static final int OTASP_FAILURE = 3;
-
-    private int mPhoneMonitorState = NOT_WAITING;
-    private BroadcastReceiver mReceiver;
-    private HfaLogicCallback mCallback;
-    private PendingIntent mResponseIntent;
-    private Context mContext;
-
-    // No retry at the moment. Increase later if necessary.
-    private static final int DEFAULT_RETRY_COUNT = 0;
-    private int mRetryCount;
-
-    public interface HfaLogicCallback {
-        public void onSuccess();
-        public void onError(String errorMsg);
-    }
-
-    public HfaLogic(Context context, HfaLogicCallback callback, PendingIntent intent) {
-        mCallback = Preconditions.checkNotNull(callback);
-        mContext = Preconditions.checkNotNull(context);
-        mResponseIntent = intent;
-    }
-
-    public void start() {
-        Log.i(TAG, "start:");
-        mRetryCount = DEFAULT_RETRY_COUNT;
-        startHfaIntentReceiver();
-        startProvisioning();
-    }
-
-    private void startProvisioning() {
-        Log.i(TAG, "startProvisioning:");
-        sendHfaCommand(ACTION_START);
-    }
-
-    private void sendHfaCommand(String action) {
-        Log.i(TAG, "sendHfaCommand: command=" + action);
-        mContext.sendBroadcast(new Intent(action));
-    }
-
-    private void onHfaError(String errorMsg) {
-        Log.i(TAG, "onHfaError: call mCallBack.onError errorMsg=" + errorMsg
-                + " mRetryCount=" + mRetryCount);
-        mRetryCount -= 1;
-        if (mRetryCount >= 0) {
-            Log.i(TAG, "onHfaError: retry");
-            startProvisioning();
-        } else {
-            Log.i(TAG, "onHfaError: Declare OTASP_FAILURE");
-            mRetryCount = 0;
-            stopHfaIntentReceiver();
-            sendFinalResponse(OTASP_FAILURE, errorMsg);
-            mCallback.onError(errorMsg);
-        }
-    }
-
-    private void onHfaSuccess() {
-        Log.i(TAG, "onHfaSuccess: NOT bouncing radio call onTotalSuccess");
-        stopHfaIntentReceiver();
-        // bounceRadio();
-        onTotalSuccess();
-    }
-
-    private void onTotalSuccess() {
-        Log.i(TAG, "onTotalSuccess: call mCallBack.onSuccess");
-        sendFinalResponse(OTASP_SUCCESS, null);
-        mCallback.onSuccess();
-    }
-
-    private void bounceRadio() {
-        final Phone phone = PhoneGlobals.getInstance().getPhone();
-        phone.registerForServiceStateChanged(mHandler, SERVICE_STATE_CHANGED, null);
-
-        mPhoneMonitorState = WAITING_FOR_RADIO_OFF;
-        phone.setRadioPower(false);
-        onServiceStateChange(phone.getServiceState());
-    }
-
-    private void onServiceStateChange(ServiceState state) {
-        final boolean radioIsOff = state.getVoiceRegState() == ServiceState.STATE_POWER_OFF;
-        final Phone phone = PhoneGlobals.getInstance().getPhone();
-
-        Log.i(TAG, "Radio is on: " + !radioIsOff);
-
-        if (mPhoneMonitorState == WAITING_FOR_RADIO_OFF) {
-            if (radioIsOff) {
-                mPhoneMonitorState = WAITING_FOR_RADIO_ON;
-                phone.setRadioPower(true);
-            }
-        } else if (mPhoneMonitorState == WAITING_FOR_RADIO_ON) {
-            if (!radioIsOff) {
-                mPhoneMonitorState = NOT_WAITING;
-                phone.unregisterForServiceStateChanged(mHandler);
-
-                onTotalSuccess();
-            }
-        }
-    }
-
-    private void startHfaIntentReceiver() {
-        final IntentFilter filter = new IntentFilter(ACTION_COMPLETE);
-        filter.addAction(ACTION_ERROR);
-
-        mReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                final String action = intent.getAction();
-                if (action.equals(ACTION_ERROR)) {
-                    onHfaError(intent.getStringExtra("errorCode"));
-                } else if (action.equals(ACTION_COMPLETE)) {
-                    Log.i(TAG, "Hfa Successful");
-                    onHfaSuccess();
-                }
-            }
-        };
-
-        mContext.registerReceiver(mReceiver, filter);
-    }
-
-    private void stopHfaIntentReceiver() {
-        if (mReceiver != null) {
-            mContext.unregisterReceiver(mReceiver);
-            mReceiver = null;
-        }
-    }
-
-    private void sendFinalResponse(int responseCode, String errorCode) {
-        if (mResponseIntent != null) {
-            final Intent extraStuff = new Intent();
-            extraStuff.putExtra(OtaUtils.EXTRA_OTASP_RESULT_CODE, responseCode);
-
-            if (responseCode == OTASP_FAILURE && errorCode != null) {
-                extraStuff.putExtra(OtaUtils.EXTRA_OTASP_ERROR_CODE, errorCode);
-            }
-
-            try {
-                Log.i(TAG, "Sending OTASP confirmation with result code: "
-                        + responseCode);
-                mResponseIntent.send(mContext, 0 /* resultCode (not used) */, extraStuff);
-            } catch (CanceledException e) {
-                Log.e(TAG, "Pending Intent canceled");
-            }
-        }
-    }
-
-    private Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case SERVICE_STATE_CHANGED:
-                    ServiceState state = (ServiceState) ((AsyncResult) msg.obj).result;
-                    onServiceStateChange(state);
-                    break;
-                default:
-                    break;
-            }
-        }
-    };
-
-}
diff --git a/src/com/android/phone/HfaService.java b/src/com/android/phone/HfaService.java
deleted file mode 100644
index bc07453..0000000
--- a/src/com/android/phone/HfaService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-import android.util.Log;
-
-/**
- * Service for performing HfaActivation without any UI.
- */
-public class HfaService extends Service {
-    private static final String TAG = HfaService.class.getSimpleName();
-
-    private HfaLogic mHfaLogic;
-
-    @Override
-    public void onCreate() {
-        Log.i(TAG, "service started");
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        final PendingIntent otaResponseIntent = intent.getParcelableExtra(
-                OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
-
-        mHfaLogic = new HfaLogic(this, new HfaLogic.HfaLogicCallback() {
-            @Override
-            public void onSuccess() {
-                Log.i(TAG, "onSuccess");
-                onComplete();
-            }
-
-            @Override
-            public void onError(String msg) {
-                Log.i(TAG, "onError: " + msg);
-                // We do not respond from this service. On success or failure
-                // we do the same thing...finish.
-                onComplete();
-            }
-        }, otaResponseIntent);
-        mHfaLogic.start();
-
-        return START_REDELIVER_INTENT;
-    }
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        return null;
-    }
-
-    private void onComplete() {
-        stopSelf();
-    }
-}
diff --git a/src/com/android/phone/INetworkQueryService.aidl b/src/com/android/phone/INetworkQueryService.aidl
index 81eb8e6..b0fe992 100644
--- a/src/com/android/phone/INetworkQueryService.aidl
+++ b/src/com/android/phone/INetworkQueryService.aidl
@@ -21,8 +21,7 @@
 /**
  * Service interface to handle queries for available networks.  The
  * Phone application lets this service interface handle carrier 
- * availability queries instead of making direct calls to the 
- * GSMPhone layer.
+ * availability queries instead of making direct calls to the Phone layer.
  */
 oneway interface INetworkQueryService {
  
diff --git a/src/com/android/phone/ImsUtil.java b/src/com/android/phone/ImsUtil.java
index 868a0f1..b6c88ae 100644
--- a/src/com/android/phone/ImsUtil.java
+++ b/src/com/android/phone/ImsUtil.java
@@ -17,6 +17,9 @@
 package com.android.phone;
 
 import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.telephony.CarrierConfigManager;
 import android.util.Log;
 
 import com.android.ims.ImsConfig;
@@ -66,4 +69,35 @@
         if (DBG) Log.d(LOG_TAG, "isWfcModeWifiOnly :: isWifiOnlyMode" + isWifiOnlyMode);
         return isWfcEnabled(context) && isWifiOnlyMode;
     }
+
+    /**
+     * When a call cannot be placed, determines if the use of WFC should be promoted, per the
+     * carrier config.  Use of WFC is promoted to the user if the device is connected to a WIFI
+     * network, WFC is disabled but provisioned, and the carrier config indicates that the
+     * features should be promoted.
+     *
+     * @return {@code true} if use of WFC should be promoted, {@code false} otherwise.
+     */
+    public static boolean shouldPromoteWfc(Context context) {
+        CarrierConfigManager cfgManager = (CarrierConfigManager) context
+                .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        if (cfgManager == null || !cfgManager.getConfig()
+                .getBoolean(CarrierConfigManager.KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL)) {
+            return false;
+        }
+
+        if (!ImsManager.isWfcProvisionedOnDevice(context)) {
+            return false;
+        }
+
+        ConnectivityManager cm =
+                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        if (cm != null) {
+            NetworkInfo ni = cm.getActiveNetworkInfo();
+            if (ni != null && ni.isConnected()) {
+                return ni.getType() == ConnectivityManager.TYPE_WIFI && !isWfcEnabled(context);
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/phone/InCallScreenShowActivation.java b/src/com/android/phone/InCallScreenShowActivation.java
deleted file mode 100644
index 9d35442..0000000
--- a/src/com/android/phone/InCallScreenShowActivation.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.Bundle;
-import android.os.PersistableBundle;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
-import android.util.Log;
-
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.TelephonyCapabilities;
-
-/**
- * Invisible activity that handles the com.android.phone.PERFORM_CDMA_PROVISIONING intent.
- * This activity is protected by the android.permission.PERFORM_CDMA_PROVISIONING permission.
- *
- * We handle the PERFORM_CDMA_PROVISIONING action by launching an OTASP
- * call via one of the OtaUtils helper methods: startInteractiveOtasp() on
- * regular phones, or startNonInteractiveOtasp() on data-only devices.
- *
- * TODO: The class name InCallScreenShowActivation is misleading, since
- * this activity is totally unrelated to the InCallScreen (which
- * implements the in-call UI.)  Let's eventually rename this to something
- * like CdmaProvisioningLauncher or CdmaProvisioningHandler...
- */
-public class InCallScreenShowActivation extends Activity {
-    private static final String LOG_TAG = "InCallScreenShowActivation";
-    private static final boolean DBG =
-            (PhoneGlobals.DBG_LEVEL >= 1) && (SystemProperties.getInt("ro.debuggable", 0) == 1);
-
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        Intent intent = getIntent();
-        if (DBG) Log.d(LOG_TAG, "onCreate: intent = " + intent);
-        Bundle extras = intent.getExtras();
-        if (DBG && (extras != null)) {
-            Log.d(LOG_TAG, "      - has extras: size = " + extras.size()); // forces an unparcel()
-            Log.d(LOG_TAG, "      - extras = " + extras);
-        }
-
-        PhoneGlobals app = PhoneGlobals.getInstanceIfPrimary();
-        if (app == null) {
-            // TODO: All CDMA provisioning code should move into a BroadcastReceiver that runs
-            // exclusively in the primary user's context.  This is because the majority of the
-            // telephony logic -- and all of the important bits -- runs only as primary so we don't
-            // have access to the things we need. We still need to maintain an Activity to support
-            // legacy code which starts this using startActivity() but that Activity should be a
-            // simple intent-trampoline for the new BroadcastReceiver.
-            //
-            // Though this conditional protects this code from NPEs on a secondary user due to an
-            // uninitialized PhoneGlobals, there's not a good reason at the time of this writing as
-            // to why a secondary user context shouldn't trigger a CDMA provisioning, or at least
-            // nobody has expressed concern.
-            Log.i(LOG_TAG, "Being asked to provision CDMA SIM from secondary user, skipping.");
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-
-        Phone phone = app.getPhone();
-        if (!TelephonyCapabilities.supportsOtasp(phone)) {
-            Log.w(LOG_TAG, "CDMA Provisioning not supported on this device");
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-
-        if (intent.getAction().equals(OtaUtils.ACTION_PERFORM_CDMA_PROVISIONING)) {
-
-            PersistableBundle carrierConfig = app.getCarrierConfig();
-            boolean usesHfa = carrierConfig.getBoolean(
-                    CarrierConfigManager.KEY_USE_HFA_FOR_PROVISIONING_BOOL);
-            if (usesHfa) {
-                Log.i(LOG_TAG, "Starting Hfa from ACTION_PERFORM_CDMA_PROVISIONING");
-                startHfa();
-                finish();
-                return;
-            }
-
-            boolean usesOtasp = carrierConfig.getBoolean(
-                    CarrierConfigManager.KEY_USE_OTASP_FOR_PROVISIONING_BOOL);
-            if (usesOtasp) {
-                // On voice-capable devices, we perform CDMA provisioning in
-                // "interactive" mode by directly launching the InCallScreen.
-                // boolean interactiveMode = PhoneGlobals.sVoiceCapable;
-                // TODO: Renable interactive mode for device provisioning.
-                boolean interactiveMode = false;
-                Log.i(LOG_TAG, "ACTION_PERFORM_CDMA_PROVISIONING (interactiveMode = "
-                      + interactiveMode + ")...");
-
-                // Testing: this intent extra allows test apps manually
-                // enable/disable "interactive mode", regardless of whether
-                // the current device is voice-capable.  This is allowed only
-                // in userdebug or eng builds.
-                if (intent.hasExtra(OtaUtils.EXTRA_OVERRIDE_INTERACTIVE_MODE)
-                        && (SystemProperties.getInt("ro.debuggable", 0) == 1)) {
-                    interactiveMode =
-                            intent.getBooleanExtra(OtaUtils.EXTRA_OVERRIDE_INTERACTIVE_MODE, false);
-                    Log.d(LOG_TAG, "==> MANUALLY OVERRIDING interactiveMode to " + interactiveMode);
-                }
-
-                // We allow the caller to pass a PendingIntent (as the
-                // EXTRA_NONINTERACTIVE_OTASP_RESULT_PENDING_INTENT extra)
-                // which we'll later use to notify them when the OTASP call
-                // fails or succeeds.
-                //
-                // Stash that away here, and we'll fire it off later in
-                // OtaUtils.sendOtaspResult().
-                app.cdmaOtaScreenState.otaspResultCodePendingIntent =
-                            (PendingIntent) intent.getParcelableExtra(
-                                    OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
-
-                if (interactiveMode) {
-                    // On voice-capable devices, launch an OTASP call and arrange
-                    // for the in-call UI to come up.  (The InCallScreen will
-                    // notice that an OTASP call is active, and display the
-                    // special OTASP UI instead of the usual in-call controls.)
-
-                    if (DBG) Log.d(LOG_TAG, "==> Starting interactive CDMA provisioning...");
-                    OtaUtils.startInteractiveOtasp(this);
-
-                    // The result we set here is actually irrelevant, since the
-                    // InCallScreen's "interactive" OTASP sequence never actually
-                    // finish()es; it ends by directly launching the Home
-                    // activity.  So our caller won't actually ever get an
-                    // onActivityResult() call in this case.
-                    setResult(OtaUtils.RESULT_INTERACTIVE_OTASP_STARTED);
-                } else {
-                    // On data-only devices, manually launch the OTASP call
-                    // *without* displaying any UI.  (Our caller, presumably
-                    // SetupWizardActivity, is responsible for displaying some
-                    // sort of progress UI.)
-
-                    if (DBG) Log.d(LOG_TAG, "==> Starting non-interactive CDMA provisioning...");
-                    int callStatus = OtaUtils.startNonInteractiveOtasp(this);
-
-                    if (callStatus == PhoneUtils.CALL_STATUS_DIALED) {
-                        if (DBG) Log.d(LOG_TAG,
-                                "  ==> successful result from startNonInteractiveOtasp(): " +
-                                callStatus);
-                        setResult(OtaUtils.RESULT_NONINTERACTIVE_OTASP_STARTED);
-                    } else {
-                        Log.w(LOG_TAG, "Failure code from startNonInteractiveOtasp(): " +
-                                callStatus);
-                        setResult(OtaUtils.RESULT_NONINTERACTIVE_OTASP_FAILED);
-                    }
-                }
-            } else {
-                Log.i(LOG_TAG, "Skipping activation.");
-            }
-        } else {
-            Log.e(LOG_TAG, "Unexpected intent action: " + intent);
-            setResult(RESULT_CANCELED);
-        }
-
-        finish();
-    }
-
-    /**
-     * On devices that provide a phone initialization wizard (such as Google Setup Wizard),
-     * the wizard displays it's own activation UI. The Hfa activation started by this class
-     * will show a UI or not depending on the status of the setup wizard. If the setup wizard
-     * is running, do not show a UI, otherwise show our own UI since setup wizard will not.
-     *
-     * The method checks two properties:
-     * 1. Does the device require a setup wizard (ro.setupwizard.mode == (REQUIRED|OPTIONAL))
-     * 2. Is device_provisioned set to non-zero--a property that setup wizard sets at completion.
-     * @return true if wizard is running, false otherwise.
-     */
-    private boolean isWizardRunning(Context context) {
-        Intent intent = new Intent("android.intent.action.DEVICE_INITIALIZATION_WIZARD");
-        ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent,
-                PackageManager.MATCH_DEFAULT_ONLY);
-        boolean provisioned = Settings.Global.getInt(context.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
-        String mode = SystemProperties.get("ro.setupwizard.mode", "REQUIRED");
-        boolean runningSetupWizard = "REQUIRED".equals(mode) || "OPTIONAL".equals(mode);
-        if (DBG) {
-            Log.v(LOG_TAG, "resolvInfo = " + resolveInfo + ", provisioned = " + provisioned
-                    + ", runningSetupWizard = " + runningSetupWizard);
-        }
-        return resolveInfo != null && !provisioned && runningSetupWizard;
-    }
-
-    /**
-     * Starts the HFA provisioning process by bringing up the HFA Activity.
-     */
-    private void startHfa() {
-        boolean isWizardRunning = isWizardRunning(this);
-        // We always run our HFA logic if we're in setup wizard, but if we're outside of setup
-        // wizard then we have to check a config to see if we should still run HFA.
-        if (isWizardRunning ||
-                getResources().getBoolean(R.bool.config_allow_hfa_outside_of_setup_wizard)) {
-
-            final Intent intent = new Intent();
-
-            final PendingIntent otaResponseIntent = getIntent().getParcelableExtra(
-                    OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT);
-
-            final boolean showUi = !isWizardRunning;
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-            if (otaResponseIntent != null) {
-                intent.putExtra(OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT, otaResponseIntent);
-            }
-
-            Log.v(LOG_TAG, "Starting hfa activation activity");
-            if (showUi) {
-                intent.setClassName(this, HfaActivity.class.getName());
-                startActivity(intent);
-            } else {
-                intent.setClassName(this, HfaService.class.getName());
-                startService(intent);
-            }
-
-        }
-        setResult(RESULT_OK);
-    }
-}
diff --git a/src/com/android/phone/MMIDialogActivity.java b/src/com/android/phone/MMIDialogActivity.java
index 10ec6a3..4afa6be 100644
--- a/src/com/android/phone/MMIDialogActivity.java
+++ b/src/com/android/phone/MMIDialogActivity.java
@@ -18,10 +18,12 @@
 
 import android.app.Activity;
 import android.app.Dialog;
+import android.content.Intent;
 import android.os.AsyncResult;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.telephony.SubscriptionManager;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -30,6 +32,7 @@
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -43,12 +46,16 @@
     private Handler mHandler;
 
     private CallManager mCM = PhoneGlobals.getInstance().getCallManager();
-    private Phone mPhone = PhoneGlobals.getPhone();
+    private Phone mPhone;
 
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        Intent intent = getIntent();
+        int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
+                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+        mPhone = PhoneGlobals.getPhone(subId);
         mHandler = new Handler() {
                 @Override
                 public void handleMessage(Message msg) {
@@ -62,10 +69,8 @@
                     }
                 }
         };
+        Log.d(TAG, "onCreate; registering for mmi complete.");
         mCM.registerForMmiComplete(mHandler, PhoneGlobals.MMI_COMPLETE, null);
-        if (mCM.getState() == PhoneConstants.State.OFFHOOK) {
-            Toast.makeText(this, R.string.incall_status_dialed_mmi, Toast.LENGTH_SHORT).show();
-        }
         showMMIDialog();
     }
 
@@ -84,12 +89,18 @@
     }
 
     private void showMMIDialog() {
-        final List<? extends MmiCode> codes = mPhone.getPendingMmiCodes();
+        final List<MmiCode> codes = new ArrayList<>(mPhone.getPendingMmiCodes());
+        // If the phone has an IMS phone, also get pending imS MMIsl.
+        if (mPhone.getImsPhone() != null) {
+            codes.addAll(mPhone.getImsPhone().getPendingMmiCodes());
+        }
         if (codes.size() > 0) {
             final MmiCode mmiCode = codes.get(0);
             final Message message = Message.obtain(mHandler, PhoneGlobals.MMI_CANCEL);
+            Log.d(TAG, "showMMIDialog: mmiCode = " + mmiCode);
             mMMIDialog = PhoneUtils.displayMMIInitiate(this, mmiCode, message, mMMIDialog);
         } else {
+            Log.d(TAG, "showMMIDialog: no pending MMIs; finishing");
             finish();
         }
     }
@@ -101,6 +112,7 @@
         // Check the code to see if the request is ready to
         // finish, this includes any MMI state that is not
         // PENDING.
+        Log.d(TAG, "onMMIComplete: mmi=" + mmiCode);
 
         // if phone is a CDMA phone display feature code completed message
         int phoneType = mPhone.getPhoneType();
@@ -108,8 +120,10 @@
             PhoneUtils.displayMMIComplete(mPhone, this, mmiCode, null, null);
         } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
             if (mmiCode.getState() != MmiCode.State.PENDING) {
-                Log.d(TAG, "Got MMI_COMPLETE, finishing dialog activity...");
+                Log.d(TAG, "onMMIComplete: Got MMI_COMPLETE, finishing dialog activity...");
                 dismissDialogsAndFinish();
+            } else {
+                Log.d(TAG, "onMMIComplete: still pending.");
             }
         }
     }
@@ -134,7 +148,7 @@
         // the in-call screen, since we'll be visible in a
         // partially-constructed state as soon as the "MMI Started" dialog
         // gets dismissed. So let's forcibly bail out right now.
-        Log.d(TAG, "onMMICancel: finishing InCallScreen...");
+        Log.d(TAG, "onMMICancel: finishing MMI dialog...");
         dismissDialogsAndFinish();
     }
 
@@ -147,6 +161,7 @@
             mCM.unregisterForMmiComplete(mHandler);
             mHandler = null;
         }
+        Log.v(TAG, "dismissDialogsAndFinish");
         finish();
     }
 }
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 59aa9a1..bc233f7 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -16,25 +16,16 @@
 
 package com.android.phone;
 
-import com.android.ims.ImsManager;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneFactory;
-import com.android.internal.telephony.TelephonyIntents;
-import com.android.internal.telephony.TelephonyProperties;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import android.app.ActionBar;
-import android.app.AlertDialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Bundle;
@@ -46,7 +37,7 @@
 import android.os.UserManager;
 import android.preference.ListPreference;
 import android.preference.Preference;
-import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.preference.SwitchPreference;
 import android.telephony.CarrierConfigManager;
@@ -56,1283 +47,1372 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.widget.TabHost.OnTabChangeListener;
-import android.widget.TabHost.TabContentFactory;
-import android.widget.TabHost.TabSpec;
+import android.view.ViewGroup;
 import android.widget.TabHost;
 
+import com.android.ims.ImsManager;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.telephony.TelephonyProperties;
+import com.android.settingslib.RestrictedLockUtils;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
- * "Mobile network settings" screen.  This preference screen lets you
+ * "Mobile network settings" screen.  This screen lets you
  * enable/disable mobile data, and control data roaming and other
  * network-specific mobile data features.  It's used on non-voice-capable
  * tablets as well as regular phone devices.
  *
- * Note that this PreferenceActivity is part of the phone app, even though
+ * Note that this Activity is part of the phone app, even though
  * you reach it from the "Wireless & Networks" section of the main
  * Settings app.  It's not part of the "Call settings" hierarchy that's
  * available from the Phone app (see CallFeaturesSetting for that.)
  */
-public class MobileNetworkSettings extends PreferenceActivity
-        implements DialogInterface.OnClickListener,
-        DialogInterface.OnDismissListener, Preference.OnPreferenceChangeListener{
 
-    // debug data
-    private static final String LOG_TAG = "NetworkSettings";
-    private static final boolean DBG = true;
-    public static final int REQUEST_CODE_EXIT_ECM = 17;
-
-    // Number of active Subscriptions to show tabs
-    private static final int TAB_THRESHOLD = 2;
-
-    //String keys for preference lookup
-    private static final String BUTTON_PREFERED_NETWORK_MODE = "preferred_network_mode_key";
-    private static final String BUTTON_ROAMING_KEY = "button_roaming_key";
-    private static final String BUTTON_CDMA_LTE_DATA_SERVICE_KEY = "cdma_lte_data_service_key";
-    private static final String BUTTON_ENABLED_NETWORKS_KEY = "enabled_networks_key";
-    private static final String BUTTON_4G_LTE_KEY = "enhanced_4g_lte";
-    private static final String BUTTON_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
-    private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key";
-    private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
-    private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
-    private static final String BUTTON_CDMA_SYSTEM_SELECT_KEY = "cdma_system_select_key";
-
-    static final int preferredNetworkMode = Phone.PREFERRED_NT_MODE;
-
-    //Information about logical "up" Activity
-    private static final String UP_ACTIVITY_PACKAGE = "com.android.settings";
-    private static final String UP_ACTIVITY_CLASS =
-            "com.android.settings.Settings$WirelessSettingsActivity";
-
-    private SubscriptionManager mSubscriptionManager;
-
-    //UI objects
-    private ListPreference mButtonPreferredNetworkMode;
-    private ListPreference mButtonEnabledNetworks;
-    private SwitchPreference mButtonDataRoam;
-    private SwitchPreference mButton4glte;
-    private Preference mLteDataServicePref;
-
-    private static final String iface = "rmnet0"; //TODO: this will go away
-    private List<SubscriptionInfo> mActiveSubInfos;
-
-    private UserManager mUm;
-    private Phone mPhone;
-    private MyHandler mHandler;
-    private boolean mOkClicked;
-
-    // We assume the the value returned by mTabHost.getCurrentTab() == slotId
-    private TabHost mTabHost;
-
-    //GsmUmts options and Cdma options
-    GsmUmtsOptions mGsmUmtsOptions;
-    CdmaOptions mCdmaOptions;
-
-    private Preference mClickedPreference;
-    private boolean mShow4GForLTE;
-    private boolean mIsGlobalCdma;
-    private boolean mUnavailable;
-
-    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
-        /*
-         * Enable/disable the 'Enhanced 4G LTE Mode' when in/out of a call
-         * and depending on TTY mode and TTY support over VoLTE.
-         * @see android.telephony.PhoneStateListener#onCallStateChanged(int,
-         * java.lang.String)
-         */
-        @Override
-        public void onCallStateChanged(int state, String incomingNumber) {
-            if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
-            boolean enabled = (state == TelephonyManager.CALL_STATE_IDLE) &&
-                    ImsManager.isNonTtyOrTtyOnVolteEnabled(getApplicationContext());
-            Preference pref = getPreferenceScreen().findPreference(BUTTON_4G_LTE_KEY);
-            if (pref != null) pref.setEnabled(enabled && hasActiveSubscriptions());
-        }
-    };
-
-    private final BroadcastReceiver mPhoneChangeReceiver = new PhoneChangeReceiver();
-
-    private class PhoneChangeReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (DBG) log("onReceive:");
-            // When the radio changes (ex: CDMA->GSM), refresh all options.
-            mGsmUmtsOptions = null;
-            mCdmaOptions = null;
-            updateBody();
-        }
-    }
-
-    //This is a method implemented for DialogInterface.OnClickListener.
-    //  Used to dismiss the dialogs when they come up.
-    public void onClick(DialogInterface dialog, int which) {
-        if (which == DialogInterface.BUTTON_POSITIVE) {
-            mPhone.setDataRoamingEnabled(true);
-            mOkClicked = true;
-        } else {
-            // Reset the toggle
-            mButtonDataRoam.setChecked(false);
-        }
-    }
-
-    @Override
-    public void onDismiss(DialogInterface dialog) {
-        // Assuming that onClick gets called first
-        mButtonDataRoam.setChecked(mOkClicked);
-    }
-
-    /**
-     * Invoked on each preference click in this hierarchy, overrides
-     * PreferenceActivity's implementation.  Used to make sure we track the
-     * preference click events.
-     */
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        /** TODO: Refactor and get rid of the if's using subclasses */
-        final int phoneSubId = mPhone.getSubId();
-        if (preference.getKey().equals(BUTTON_4G_LTE_KEY)) {
-            return true;
-        } else if (mGsmUmtsOptions != null &&
-                mGsmUmtsOptions.preferenceTreeClick(preference) == true) {
-            return true;
-        } else if (mCdmaOptions != null &&
-                   mCdmaOptions.preferenceTreeClick(preference) == true) {
-            if (Boolean.parseBoolean(
-                    SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
-
-                mClickedPreference = preference;
-
-                // In ECM mode launch ECM app dialog
-                startActivityForResult(
-                    new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
-                    REQUEST_CODE_EXIT_ECM);
-            }
-            return true;
-        } else if (preference == mButtonPreferredNetworkMode) {
-            //displays the value taken from the Settings.System
-            int settingsNetworkMode = android.provider.Settings.Global.getInt(mPhone.getContext().
-                    getContentResolver(),
-                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                    preferredNetworkMode);
-            mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
-            return true;
-        } else if (preference == mLteDataServicePref) {
-            String tmpl = android.provider.Settings.Global.getString(getContentResolver(),
-                        android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
-            if (!TextUtils.isEmpty(tmpl)) {
-                TelephonyManager tm = (TelephonyManager) getSystemService(
-                        Context.TELEPHONY_SERVICE);
-                String imsi = tm.getSubscriberId();
-                if (imsi == null) {
-                    imsi = "";
-                }
-                final String url = TextUtils.isEmpty(tmpl) ? null
-                        : TextUtils.expandTemplate(tmpl, imsi).toString();
-                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-                startActivity(intent);
-            } else {
-                android.util.Log.e(LOG_TAG, "Missing SETUP_PREPAID_DATA_SERVICE_URL");
-            }
-            return true;
-        }  else if (preference == mButtonEnabledNetworks) {
-            int settingsNetworkMode = android.provider.Settings.Global.getInt(mPhone.getContext().
-                            getContentResolver(),
-                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                    preferredNetworkMode);
-            mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
-            return true;
-        } else if (preference == mButtonDataRoam) {
-            // Do not disable the preference screen if the user clicks Data roaming.
-            return true;
-        } else {
-            // if the button is anything but the simple toggle preference,
-            // we'll need to disable all preferences to reject all click
-            // events until the sub-activity's UI comes up.
-            preferenceScreen.setEnabled(false);
-            // Let the intents be launched by the Preference manager
-            return false;
-        }
-    }
-
-    private final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener
-            = new SubscriptionManager.OnSubscriptionsChangedListener() {
-        @Override
-        public void onSubscriptionsChanged() {
-            if (DBG) log("onSubscriptionsChanged:");
-            initializeSubscriptions();
-        }
-    };
-
-    private void initializeSubscriptions() {
-        int currentTab = 0;
-        if (DBG) log("initializeSubscriptions:+");
-
-        // Before updating the the active subscription list check
-        // if tab updating is needed as the list is changing.
-        List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
-        TabState state = isUpdateTabsNeeded(sil);
-
-        // Update to the active subscription list
-        mActiveSubInfos.clear();
-        if (sil != null) {
-            mActiveSubInfos.addAll(sil);
-            // If there is only 1 sim then currenTab should represent slot no. of the sim.
-            if (sil.size() == 1) {
-                currentTab = sil.get(0).getSimSlotIndex();
-            }
-        }
-
-        switch (state) {
-            case UPDATE: {
-                if (DBG) log("initializeSubscriptions: UPDATE");
-                currentTab = mTabHost != null ? mTabHost.getCurrentTab() : 0;
-
-                setContentView(com.android.internal.R.layout.common_tab_settings);
-
-                mTabHost = (TabHost) findViewById(android.R.id.tabhost);
-                mTabHost.setup();
-
-                // Update the tabName. Since the mActiveSubInfos are in slot order
-                // we can iterate though the tabs and subscription info in one loop. But
-                // we need to handle the case where a slot may be empty.
-
-                Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.listIterator();
-                SubscriptionInfo si = siIterator.hasNext() ? siIterator.next() : null;
-                for (int simSlotIndex = 0; simSlotIndex  < mActiveSubInfos.size(); simSlotIndex++) {
-                    String tabName;
-                    if (si != null && si.getSimSlotIndex() == simSlotIndex) {
-                        // Slot is not empty and we match
-                        tabName = String.valueOf(si.getDisplayName());
-                        si = siIterator.hasNext() ? siIterator.next() : null;
-                    } else {
-                        // Slot is empty, set name to unknown
-                        tabName = getResources().getString(R.string.unknown);
-                    }
-                    if (DBG) {
-                        log("initializeSubscriptions: tab=" + simSlotIndex + " name=" + tabName);
-                    }
-
-                    mTabHost.addTab(buildTabSpec(String.valueOf(simSlotIndex), tabName));
-                }
-
-                mTabHost.setOnTabChangedListener(mTabListener);
-                mTabHost.setCurrentTab(currentTab);
-                break;
-            }
-            case NO_TABS: {
-                if (DBG) log("initializeSubscriptions: NO_TABS");
-
-                if (mTabHost != null) {
-                    mTabHost.clearAllTabs();
-                    mTabHost = null;
-                }
-                setContentView(com.android.internal.R.layout.common_tab_settings);
-                break;
-            }
-            case DO_NOTHING: {
-                if (DBG) log("initializeSubscriptions: DO_NOTHING");
-                if (mTabHost != null) {
-                    currentTab = mTabHost.getCurrentTab();
-                }
-                break;
-            }
-        }
-        updatePhone(currentTab);
-        updateBody();
-        if (DBG) log("initializeSubscriptions:-");
-    }
+public class MobileNetworkSettings extends Activity  {
 
     private enum TabState {
         NO_TABS, UPDATE, DO_NOTHING
     }
-    private TabState isUpdateTabsNeeded(List<SubscriptionInfo> newSil) {
-        TabState state = TabState.DO_NOTHING;
-        if (newSil == null) {
-            if (mActiveSubInfos.size() >= TAB_THRESHOLD) {
-                if (DBG) log("isUpdateTabsNeeded: NO_TABS, size unknown and was tabbed");
-                state = TabState.NO_TABS;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.network_setting);
+
+        FragmentManager fragmentManager = getFragmentManager();
+        Fragment fragment = fragmentManager.findFragmentById(R.id.network_setting_content);
+        if (fragment == null) {
+            fragmentManager.beginTransaction()
+                    .add(R.id.network_setting_content, new MobileNetworkFragment())
+                    .commit();
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(final MenuItem item) {
+        final int itemId = item.getItemId();
+        switch (itemId) {
+            // Respond to the action bar's Up/Home button
+            case android.R.id.home:
+                finish();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public static class MobileNetworkFragment extends PreferenceFragment implements
+            Preference.OnPreferenceChangeListener, RoamingDialogFragment.RoamingDialogListener {
+
+        // debug data
+        private static final String LOG_TAG = "NetworkSettings";
+        private static final boolean DBG = true;
+        public static final int REQUEST_CODE_EXIT_ECM = 17;
+
+        // Number of active Subscriptions to show tabs
+        private static final int TAB_THRESHOLD = 2;
+
+        // fragment tag for roaming data dialog
+        private static final String ROAMING_TAG = "RoamingDialogFragment";
+
+        //String keys for preference lookup
+        private static final String BUTTON_PREFERED_NETWORK_MODE = "preferred_network_mode_key";
+        private static final String BUTTON_ROAMING_KEY = "button_roaming_key";
+        private static final String BUTTON_CDMA_LTE_DATA_SERVICE_KEY = "cdma_lte_data_service_key";
+        private static final String BUTTON_ENABLED_NETWORKS_KEY = "enabled_networks_key";
+        private static final String BUTTON_4G_LTE_KEY = "enhanced_4g_lte";
+        private static final String BUTTON_CELL_BROADCAST_SETTINGS = "cell_broadcast_settings";
+        private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key";
+        private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
+        private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
+        private static final String BUTTON_CDMA_SYSTEM_SELECT_KEY = "cdma_system_select_key";
+
+        private final BroadcastReceiver mPhoneChangeReceiver = new PhoneChangeReceiver();
+
+        static final int preferredNetworkMode = Phone.PREFERRED_NT_MODE;
+
+        //Information about logical "up" Activity
+        private static final String UP_ACTIVITY_PACKAGE = "com.android.settings";
+        private static final String UP_ACTIVITY_CLASS =
+                "com.android.settings.Settings$WirelessSettingsActivity";
+
+        private SubscriptionManager mSubscriptionManager;
+
+        //UI objects
+        private ListPreference mButtonPreferredNetworkMode;
+        private ListPreference mButtonEnabledNetworks;
+        private RestrictedSwitchPreference mButtonDataRoam;
+        private SwitchPreference mButton4glte;
+        private Preference mLteDataServicePref;
+
+        private static final String iface = "rmnet0"; //TODO: this will go away
+        private List<SubscriptionInfo> mActiveSubInfos;
+
+        private UserManager mUm;
+        private Phone mPhone;
+        private MyHandler mHandler;
+        private boolean mOkClicked;
+
+        // We assume the the value returned by mTabHost.getCurrentTab() == slotId
+        private TabHost mTabHost;
+
+        //GsmUmts options and Cdma options
+        GsmUmtsOptions mGsmUmtsOptions;
+        CdmaOptions mCdmaOptions;
+
+        private Preference mClickedPreference;
+        private boolean mShow4GForLTE;
+        private boolean mIsGlobalCdma;
+        private boolean mUnavailable;
+
+        private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+            /*
+             * Enable/disable the 'Enhanced 4G LTE Mode' when in/out of a call
+             * and depending on TTY mode and TTY support over VoLTE.
+             * @see android.telephony.PhoneStateListener#onCallStateChanged(int,
+             * java.lang.String)
+             */
+            @Override
+            public void onCallStateChanged(int state, String incomingNumber) {
+                if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
+                boolean enabled = (state == TelephonyManager.CALL_STATE_IDLE) &&
+                        ImsManager.isNonTtyOrTtyOnVolteEnabled
+                                (getActivity().getApplicationContext());
+                Preference pref = getPreferenceScreen().findPreference(BUTTON_4G_LTE_KEY);
+                if (pref != null) pref.setEnabled(enabled && hasActiveSubscriptions());
+
             }
-        } else if (newSil.size() < TAB_THRESHOLD && mActiveSubInfos.size() >= TAB_THRESHOLD) {
-            if (DBG) log("isUpdateTabsNeeded: NO_TABS, size went to small");
-            state = TabState.NO_TABS;
-        } else if (newSil.size() >= TAB_THRESHOLD && mActiveSubInfos.size() < TAB_THRESHOLD) {
-            if (DBG) log("isUpdateTabsNeeded: UPDATE, size changed");
-            state = TabState.UPDATE;
-        } else if (newSil.size() >= TAB_THRESHOLD) {
-            Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.iterator();
-            for(SubscriptionInfo newSi : newSil) {
-                SubscriptionInfo curSi = siIterator.next();
-                if (!newSi.getDisplayName().equals(curSi.getDisplayName())) {
-                    if (DBG) log("isUpdateTabsNeeded: UPDATE, new name=" + newSi.getDisplayName());
-                    state = TabState.UPDATE;
+        };
+
+        @Override
+        public void onPositiveButtonClick(DialogFragment dialog) {
+            mPhone.setDataRoamingEnabled(true);
+            mButtonDataRoam.setChecked(true);
+        }
+
+        @Override
+        public void onViewCreated(View view, Bundle savedInstanceState) {
+            if (getListView() != null) {
+                getListView().setDivider(null);
+            }
+        }
+
+        /**
+         * Invoked on each preference click in this hierarchy, overrides
+         * PreferenceActivity's implementation.  Used to make sure we track the
+         * preference click events.
+         */
+        @Override
+        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+                                             Preference preference) {
+            /** TODO: Refactor and get rid of the if's using subclasses */
+            final int phoneSubId = mPhone.getSubId();
+            if (preference.getKey().equals(BUTTON_4G_LTE_KEY)) {
+                return true;
+            } else if (mGsmUmtsOptions != null &&
+                    mGsmUmtsOptions.preferenceTreeClick(preference) == true) {
+                return true;
+            } else if (mCdmaOptions != null &&
+                    mCdmaOptions.preferenceTreeClick(preference) == true) {
+                if (mPhone.isInEcm()) {
+
+                    mClickedPreference = preference;
+
+                    // In ECM mode launch ECM app dialog
+                    startActivityForResult(
+                            new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
+                            REQUEST_CODE_EXIT_ECM);
+                }
+                return true;
+            } else if (preference == mButtonPreferredNetworkMode) {
+                //displays the value taken from the Settings.System
+                int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                        mPhone.getContext().getContentResolver(),
+                        android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                        preferredNetworkMode);
+                mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
+                return true;
+            } else if (preference == mLteDataServicePref) {
+                String tmpl = android.provider.Settings.Global.getString(
+                        getActivity().getContentResolver(),
+                        android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
+                if (!TextUtils.isEmpty(tmpl)) {
+                    TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(
+                            Context.TELEPHONY_SERVICE);
+                    String imsi = tm.getSubscriberId();
+                    if (imsi == null) {
+                        imsi = "";
+                    }
+                    final String url = TextUtils.isEmpty(tmpl) ? null
+                            : TextUtils.expandTemplate(tmpl, imsi).toString();
+                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+                    startActivity(intent);
+                } else {
+                    android.util.Log.e(LOG_TAG, "Missing SETUP_PREPAID_DATA_SERVICE_URL");
+                }
+                return true;
+            }  else if (preference == mButtonEnabledNetworks) {
+                int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                        mPhone.getContext().getContentResolver(),
+                        android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                        preferredNetworkMode);
+                mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
+                return true;
+            } else if (preference == mButtonDataRoam) {
+                // Do not disable the preference screen if the user clicks Data roaming.
+                return true;
+            } else {
+                // if the button is anything but the simple toggle preference,
+                // we'll need to disable all preferences to reject all click
+                // events until the sub-activity's UI comes up.
+                preferenceScreen.setEnabled(false);
+                // Let the intents be launched by the Preference manager
+                return false;
+            }
+        }
+
+        private final SubscriptionManager.OnSubscriptionsChangedListener
+                mOnSubscriptionsChangeListener
+                = new SubscriptionManager.OnSubscriptionsChangedListener() {
+            @Override
+            public void onSubscriptionsChanged() {
+                if (DBG) log("onSubscriptionsChanged:");
+                initializeSubscriptions();
+            }
+        };
+
+        private void initializeSubscriptions() {
+            if (getActivity().isDestroyed()) {
+                // Process preferences in activity only if its not destroyed
+                return;
+            }
+            int currentTab = 0;
+            if (DBG) log("initializeSubscriptions:+");
+
+            // Before updating the the active subscription list check
+            // if tab updating is needed as the list is changing.
+            List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList();
+            MobileNetworkSettings.TabState state = isUpdateTabsNeeded(sil);
+
+            // Update to the active subscription list
+            mActiveSubInfos.clear();
+            if (sil != null) {
+                mActiveSubInfos.addAll(sil);
+                // If there is only 1 sim then currenTab should represent slot no. of the sim.
+                if (sil.size() == 1) {
+                    currentTab = sil.get(0).getSimSlotIndex();
+                }
+            }
+
+            switch (state) {
+                case UPDATE: {
+                    if (DBG) log("initializeSubscriptions: UPDATE");
+                    currentTab = mTabHost != null ? mTabHost.getCurrentTab() : 0;
+
+                    mTabHost = (TabHost) getActivity().findViewById(android.R.id.tabhost);
+                    mTabHost.setup();
+
+                    // Update the tabName. Since the mActiveSubInfos are in slot order
+                    // we can iterate though the tabs and subscription info in one loop. But
+                    // we need to handle the case where a slot may be empty.
+
+                    Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.listIterator();
+                    SubscriptionInfo si = siIterator.hasNext() ? siIterator.next() : null;
+                    for (int simSlotIndex = 0; simSlotIndex  < mActiveSubInfos.size();
+                         simSlotIndex++) {
+                        String tabName;
+                        if (si != null && si.getSimSlotIndex() == simSlotIndex) {
+                            // Slot is not empty and we match
+                            tabName = String.valueOf(si.getDisplayName());
+                            si = siIterator.hasNext() ? siIterator.next() : null;
+                        } else {
+                            // Slot is empty, set name to unknown
+                            tabName = getResources().getString(R.string.unknown);
+                        }
+                        if (DBG) {
+                            log("initializeSubscriptions:tab=" + simSlotIndex + " name=" + tabName);
+                        }
+
+                        mTabHost.addTab(buildTabSpec(String.valueOf(simSlotIndex), tabName));
+                    }
+
+                    mTabHost.setOnTabChangedListener(mTabListener);
+                    mTabHost.setCurrentTab(currentTab);
+                    break;
+                }
+                case NO_TABS: {
+                    if (DBG) log("initializeSubscriptions: NO_TABS");
+
+                    if (mTabHost != null) {
+                        mTabHost.clearAllTabs();
+                        mTabHost = null;
+                    }
+                    break;
+                }
+                case DO_NOTHING: {
+                    if (DBG) log("initializeSubscriptions: DO_NOTHING");
+                    if (mTabHost != null) {
+                        currentTab = mTabHost.getCurrentTab();
+                    }
                     break;
                 }
             }
-        }
-        if (DBG) {
-            log("isUpdateTabsNeeded:- " + state
-                + " newSil.size()=" + ((newSil != null) ? newSil.size() : 0)
-                + " mActiveSubInfos.size()=" + mActiveSubInfos.size());
-        }
-        return state;
-    }
-
-    private OnTabChangeListener mTabListener = new OnTabChangeListener() {
-        @Override
-        public void onTabChanged(String tabId) {
-            if (DBG) log("onTabChanged:");
-            // The User has changed tab; update the body.
-            updatePhone(Integer.parseInt(tabId));
+            updatePhone(currentTab);
             updateBody();
-        }
-    };
-
-    private void updatePhone(int slotId) {
-        final SubscriptionInfo sir = mSubscriptionManager
-                .getActiveSubscriptionInfoForSimSlotIndex(slotId);
-        if (sir != null) {
-            mPhone = PhoneFactory.getPhone(
-                    SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
-        }
-        if (mPhone == null) {
-            // Do the best we can
-            mPhone = PhoneGlobals.getPhone();
-        }
-        if (DBG) log("updatePhone:- slotId=" + slotId + " sir=" + sir);
-    }
-
-    private TabContentFactory mEmptyTabContent = new TabContentFactory() {
-        @Override
-        public View createTabContent(String tag) {
-            return new View(mTabHost.getContext());
-        }
-    };
-
-    private TabSpec buildTabSpec(String tag, String title) {
-        return mTabHost.newTabSpec(tag).setIndicator(title).setContent(
-                mEmptyTabContent);
-    }
-
-    @Override
-    protected void onCreate(Bundle icicle) {
-        if (DBG) log("onCreate:+");
-        setTheme(R.style.Theme_Material_Settings);
-        super.onCreate(icicle);
-
-        mHandler = new MyHandler();
-        mUm = (UserManager) getSystemService(Context.USER_SERVICE);
-        mSubscriptionManager = SubscriptionManager.from(this);
-
-        if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
-            mUnavailable = true;
-            setContentView(R.layout.telephony_disallowed_preference_screen);
-            return;
+            if (DBG) log("initializeSubscriptions:-");
         }
 
-        addPreferencesFromResource(R.xml.network_setting);
-
-        mButton4glte = (SwitchPreference)findPreference(BUTTON_4G_LTE_KEY);
-        mButton4glte.setOnPreferenceChangeListener(this);
-
-        try {
-            Context con = createPackageContext("com.android.systemui", 0);
-            int id = con.getResources().getIdentifier("config_show4GForLTE",
-                    "bool", "com.android.systemui");
-            mShow4GForLTE = con.getResources().getBoolean(id);
-        } catch (NameNotFoundException e) {
-            loge("NameNotFoundException for show4GFotLTE");
-            mShow4GForLTE = false;
-        }
-
-        //get UI object references
-        PreferenceScreen prefSet = getPreferenceScreen();
-
-        mButtonDataRoam = (SwitchPreference) prefSet.findPreference(BUTTON_ROAMING_KEY);
-        mButtonPreferredNetworkMode = (ListPreference) prefSet.findPreference(
-                BUTTON_PREFERED_NETWORK_MODE);
-        mButtonEnabledNetworks = (ListPreference) prefSet.findPreference(
-                BUTTON_ENABLED_NETWORKS_KEY);
-        mButtonDataRoam.setOnPreferenceChangeListener(this);
-
-        mLteDataServicePref = prefSet.findPreference(BUTTON_CDMA_LTE_DATA_SERVICE_KEY);
-
-        // Initialize mActiveSubInfo
-        int max = mSubscriptionManager.getActiveSubscriptionInfoCountMax();
-        mActiveSubInfos = new ArrayList<SubscriptionInfo>(max);
-
-        initializeSubscriptions();
-
-        IntentFilter intentFilter = new IntentFilter(
-                TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
-        registerReceiver(mPhoneChangeReceiver, intentFilter);
-        if (DBG) log("onCreate:-");
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        unregisterReceiver(mPhoneChangeReceiver);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        if (DBG) log("onResume:+");
-
-        if (mUnavailable) {
-            if (DBG) log("onResume:- ignore mUnavailable == false");
-            return;
-        }
-
-        // upon resumption from the sub-activity, make sure we re-enable the
-        // preferences.
-        getPreferenceScreen().setEnabled(true);
-
-        // Set UI state in onResume because a user could go home, launch some
-        // app to change this setting's backend, and re-launch this settings app
-        // and the UI state would be inconsistent with actual state
-        mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled());
-
-        if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null
-                || getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null)  {
-            updatePreferredNetworkUIFromDb();
-        }
-
-        if (ImsManager.isVolteEnabledByPlatform(this)
-                && ImsManager.isVolteProvisionedOnDevice(this)) {
-            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-            tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
-        }
-
-        // NOTE: Buttons will be enabled/disabled in mPhoneStateListener
-        boolean enh4glteMode = ImsManager.isEnhanced4gLteModeSettingEnabledByUser(this)
-                && ImsManager.isNonTtyOrTtyOnVolteEnabled(this);
-        mButton4glte.setChecked(enh4glteMode);
-
-        mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
-
-        if (DBG) log("onResume:-");
-
-    }
-
-    private boolean hasActiveSubscriptions() {
-        return mActiveSubInfos.size() > 0;
-    }
-
-    private void updateBody() {
-        final Context context = getApplicationContext();
-        PreferenceScreen prefSet = getPreferenceScreen();
-        boolean isLteOnCdma = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE;
-        final int phoneSubId = mPhone.getSubId();
-
-        if (DBG) {
-            log("updateBody: isLteOnCdma=" + isLteOnCdma + " phoneSubId=" + phoneSubId);
-        }
-
-        if (prefSet != null) {
-            prefSet.removeAll();
-            prefSet.addPreference(mButtonDataRoam);
-            prefSet.addPreference(mButtonPreferredNetworkMode);
-            prefSet.addPreference(mButtonEnabledNetworks);
-            prefSet.addPreference(mButton4glte);
-        }
-
-        int settingsNetworkMode = android.provider.Settings.Global.getInt(
-                mPhone.getContext().getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                preferredNetworkMode);
-
-        PersistableBundle carrierConfig =
-                PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
-        mIsGlobalCdma = isLteOnCdma
-                && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL);
-        if (carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) {
-            prefSet.removePreference(mButtonPreferredNetworkMode);
-            prefSet.removePreference(mButtonEnabledNetworks);
-            prefSet.removePreference(mLteDataServicePref);
-        } else if (carrierConfig.getBoolean(CarrierConfigManager
-                    .KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
-                && !mPhone.getServiceState().getRoaming()) {
-            prefSet.removePreference(mButtonPreferredNetworkMode);
-            prefSet.removePreference(mButtonEnabledNetworks);
-
-            final int phoneType = mPhone.getPhoneType();
-            if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
-                mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
-                // In World mode force a refresh of GSM Options.
-                if (isWorldMode()) {
-                    mGsmUmtsOptions = null;
+        private MobileNetworkSettings.TabState isUpdateTabsNeeded(List<SubscriptionInfo> newSil) {
+            TabState state = MobileNetworkSettings.TabState.DO_NOTHING;
+            if (newSil == null) {
+                if (mActiveSubInfos.size() >= TAB_THRESHOLD) {
+                    if (DBG) log("isUpdateTabsNeeded: NO_TABS, size unknown and was tabbed");
+                    state = MobileNetworkSettings.TabState.NO_TABS;
                 }
-            } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+            } else if (newSil.size() < TAB_THRESHOLD && mActiveSubInfos.size() >= TAB_THRESHOLD) {
+                if (DBG) log("isUpdateTabsNeeded: NO_TABS, size went to small");
+                state = MobileNetworkSettings.TabState.NO_TABS;
+            } else if (newSil.size() >= TAB_THRESHOLD && mActiveSubInfos.size() < TAB_THRESHOLD) {
+                if (DBG) log("isUpdateTabsNeeded: UPDATE, size changed");
+                state = MobileNetworkSettings.TabState.UPDATE;
+            } else if (newSil.size() >= TAB_THRESHOLD) {
+                Iterator<SubscriptionInfo> siIterator = mActiveSubInfos.iterator();
+                for(SubscriptionInfo newSi : newSil) {
+                    SubscriptionInfo curSi = siIterator.next();
+                    if (!newSi.getDisplayName().equals(curSi.getDisplayName())) {
+                        if (DBG) log("isUpdateTabsNeeded: UPDATE, new name="
+                                + newSi.getDisplayName());
+                        state = MobileNetworkSettings.TabState.UPDATE;
+                        break;
+                    }
+                }
+            }
+            if (DBG) {
+                Log.i(LOG_TAG, "isUpdateTabsNeeded:- " + state
+                        + " newSil.size()=" + ((newSil != null) ? newSil.size() : 0)
+                        + " mActiveSubInfos.size()=" + mActiveSubInfos.size());
+            }
+            return state;
+        }
+
+        private TabHost.OnTabChangeListener mTabListener = new TabHost.OnTabChangeListener() {
+            @Override
+            public void onTabChanged(String tabId) {
+                if (DBG) log("onTabChanged:");
+                // The User has changed tab; update the body.
+                updatePhone(Integer.parseInt(tabId));
+                updateBody();
+            }
+        };
+
+        private void updatePhone(int slotId) {
+            final SubscriptionInfo sir = mSubscriptionManager
+                    .getActiveSubscriptionInfoForSimSlotIndex(slotId);
+            if (sir != null) {
+                mPhone = PhoneFactory.getPhone(
+                        SubscriptionManager.getPhoneId(sir.getSubscriptionId()));
+            }
+            if (mPhone == null) {
+                // Do the best we can
+                mPhone = PhoneGlobals.getPhone();
+            }
+            Log.i(LOG_TAG, "updatePhone:- slotId=" + slotId + " sir=" + sir);
+        }
+
+        private TabHost.TabContentFactory mEmptyTabContent = new TabHost.TabContentFactory() {
+            @Override
+            public View createTabContent(String tag) {
+                return new View(mTabHost.getContext());
+            }
+        };
+
+        private TabHost.TabSpec buildTabSpec(String tag, String title) {
+            return mTabHost.newTabSpec(tag).setIndicator(title).setContent(
+                    mEmptyTabContent);
+        }
+
+        @Override
+        public void onCreate(Bundle icicle) {
+            Log.i(LOG_TAG, "onCreate:+");
+            super.onCreate(icicle);
+            mHandler = new MyHandler();
+            mUm = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
+            mSubscriptionManager = SubscriptionManager.from(getActivity());
+
+            if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
+                mUnavailable = true;
+                getActivity().setContentView(R.layout.telephony_disallowed_preference_screen);
+                return;
+            }
+
+            addPreferencesFromResource(R.xml.network_setting_fragment);
+
+            mButton4glte = (SwitchPreference)findPreference(BUTTON_4G_LTE_KEY);
+            mButton4glte.setOnPreferenceChangeListener(this);
+
+            try {
+                Context con = getActivity().createPackageContext("com.android.systemui", 0);
+                int id = con.getResources().getIdentifier("config_show4GForLTE",
+                        "bool", "com.android.systemui");
+                mShow4GForLTE = con.getResources().getBoolean(id);
+            } catch (PackageManager.NameNotFoundException e) {
+                Log.e(LOG_TAG, "NameNotFoundException for show4GFotLTE");
+                mShow4GForLTE = false;
+            }
+
+            //get UI object references
+            PreferenceScreen prefSet = getPreferenceScreen();
+
+            mButtonDataRoam = (RestrictedSwitchPreference) prefSet.findPreference(
+                    BUTTON_ROAMING_KEY);
+            mButtonPreferredNetworkMode = (ListPreference) prefSet.findPreference(
+                    BUTTON_PREFERED_NETWORK_MODE);
+            mButtonEnabledNetworks = (ListPreference) prefSet.findPreference(
+                    BUTTON_ENABLED_NETWORKS_KEY);
+            mButtonDataRoam.setOnPreferenceChangeListener(this);
+
+            mLteDataServicePref = prefSet.findPreference(BUTTON_CDMA_LTE_DATA_SERVICE_KEY);
+
+            // Initialize mActiveSubInfo
+            int max = mSubscriptionManager.getActiveSubscriptionInfoCountMax();
+            mActiveSubInfos = new ArrayList<SubscriptionInfo>(max);
+
+            IntentFilter intentFilter = new IntentFilter(
+                    TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+            getActivity().registerReceiver(mPhoneChangeReceiver, intentFilter);
+
+            Log.i(LOG_TAG, "onCreate:-");
+        }
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                Bundle savedInstanceState) {
+            return inflater.inflate(com.android.internal.R.layout.common_tab_settings,
+                    container, false);
+        }
+
+        @Override
+        public void onActivityCreated(Bundle savedInstanceState) {
+            super.onActivityCreated(savedInstanceState);
+            initializeSubscriptions();
+        }
+
+        private class PhoneChangeReceiver extends BroadcastReceiver {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                Log.i(LOG_TAG, "onReceive:");
+                // When the radio changes (ex: CDMA->GSM), refresh all options.
+                mGsmUmtsOptions = null;
+                mCdmaOptions = null;
+                updateBody();
+            }
+        }
+
+        @Override
+        public void onDestroy() {
+            super.onDestroy();
+            getActivity().unregisterReceiver(mPhoneChangeReceiver);
+        }
+
+        @Override
+        public void onResume() {
+            super.onResume();
+            Log.i(LOG_TAG, "onResume:+");
+
+            if (mUnavailable) {
+                Log.i(LOG_TAG, "onResume:- ignore mUnavailable == false");
+                return;
+            }
+
+            // upon resumption from the sub-activity, make sure we re-enable the
+            // preferences.
+            getPreferenceScreen().setEnabled(true);
+
+            // Set UI state in onResume because a user could go home, launch some
+            // app to change this setting's backend, and re-launch this settings app
+            // and the UI state would be inconsistent with actual state
+            mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled());
+
+            if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null
+                    || getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null)  {
+                updatePreferredNetworkUIFromDb();
+            }
+
+            if (ImsManager.isVolteEnabledByPlatform(getActivity())
+                    && ImsManager.isVolteProvisionedOnDevice(getActivity())) {
+                TelephonyManager tm =
+                        (TelephonyManager) getActivity().getSystemService(
+                                Context.TELEPHONY_SERVICE);
+                tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+            }
+
+            // NOTE: Buttons will be enabled/disabled in mPhoneStateListener
+            boolean enh4glteMode = ImsManager.isEnhanced4gLteModeSettingEnabledByUser(getActivity())
+                    && ImsManager.isNonTtyOrTtyOnVolteEnabled(getActivity());
+            mButton4glte.setChecked(enh4glteMode);
+
+            mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+
+            Log.i(LOG_TAG, "onResume:-");
+
+        }
+
+        private boolean hasActiveSubscriptions() {
+            return mActiveSubInfos.size() > 0;
+        }
+
+        private void updateBody() {
+            Context context = getActivity().getApplicationContext();
+            PreferenceScreen prefSet = getPreferenceScreen();
+            boolean isLteOnCdma = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE;
+            final int phoneSubId = mPhone.getSubId();
+
+            if (DBG) {
+                log("updateBody: isLteOnCdma=" + isLteOnCdma + " phoneSubId=" + phoneSubId);
+            }
+
+            if (prefSet != null) {
+                prefSet.removeAll();
+                prefSet.addPreference(mButtonDataRoam);
+                prefSet.addPreference(mButtonPreferredNetworkMode);
+                prefSet.addPreference(mButtonEnabledNetworks);
+                prefSet.addPreference(mButton4glte);
+            }
+
+            int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                    mPhone.getContext().getContentResolver(),
+                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                    preferredNetworkMode);
+
+            PersistableBundle carrierConfig =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            mIsGlobalCdma = isLteOnCdma
+                    && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_CDMA_CHOICES_BOOL);
+            if (carrierConfig.getBoolean(
+                    CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)) {
+                prefSet.removePreference(mButtonPreferredNetworkMode);
+                prefSet.removePreference(mButtonEnabledNetworks);
+                prefSet.removePreference(mLteDataServicePref);
+            } else if (carrierConfig.getBoolean(CarrierConfigManager
+                    .KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
+                    && !mPhone.getServiceState().getRoaming()) {
+                prefSet.removePreference(mButtonPreferredNetworkMode);
+                prefSet.removePreference(mButtonEnabledNetworks);
+
+                final int phoneType = mPhone.getPhoneType();
+                if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
+                    mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
+                    // In World mode force a refresh of GSM Options.
+                    if (isWorldMode()) {
+                        mGsmUmtsOptions = null;
+                    }
+                } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+                    mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId);
+                } else {
+                    throw new IllegalStateException("Unexpected phone type: " + phoneType);
+                }
+                // Since pref is being hidden from user, set network mode to default
+                // in case it is currently something else. That is possible if user
+                // changed the setting while roaming and is now back to home network.
+                settingsNetworkMode = preferredNetworkMode;
+            } else if (carrierConfig.getBoolean(
+                    CarrierConfigManager.KEY_WORLD_PHONE_BOOL) == true) {
+                prefSet.removePreference(mButtonEnabledNetworks);
+                // set the listener for the mButtonPreferredNetworkMode list preference so we can issue
+                // change Preferred Network Mode.
+                mButtonPreferredNetworkMode.setOnPreferenceChangeListener(this);
+
+                mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
                 mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId);
             } else {
-                throw new IllegalStateException("Unexpected phone type: " + phoneType);
-            }
-            // Since pref is being hidden from user, set network mode to default
-            // in case it is currently something else. That is possible if user
-            // changed the setting while roaming and is now back to home network.
-            settingsNetworkMode = preferredNetworkMode;
-        } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL) == true) {
-            prefSet.removePreference(mButtonEnabledNetworks);
-            // set the listener for the mButtonPreferredNetworkMode list preference so we can issue
-            // change Preferred Network Mode.
-            mButtonPreferredNetworkMode.setOnPreferenceChangeListener(this);
+                prefSet.removePreference(mButtonPreferredNetworkMode);
+                final int phoneType = mPhone.getPhoneType();
+                if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
+                    int lteForced = android.provider.Settings.Global.getInt(
+                            mPhone.getContext().getContentResolver(),
+                            android.provider.Settings.Global.LTE_SERVICE_FORCED + mPhone.getSubId(),
+                            0);
 
-            mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
-            mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId);
-        } else {
-            prefSet.removePreference(mButtonPreferredNetworkMode);
-            final int phoneType = mPhone.getPhoneType();
-            if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
-                int lteForced = android.provider.Settings.Global.getInt(
-                        mPhone.getContext().getContentResolver(),
-                        android.provider.Settings.Global.LTE_SERVICE_FORCED + mPhone.getSubId(),
-                        0);
+                    if (isLteOnCdma) {
+                        if (lteForced == 0) {
+                            mButtonEnabledNetworks.setEntries(
+                                    R.array.enabled_networks_cdma_choices);
+                            mButtonEnabledNetworks.setEntryValues(
+                                    R.array.enabled_networks_cdma_values);
+                        } else {
+                            switch (settingsNetworkMode) {
+                                case Phone.NT_MODE_CDMA:
+                                case Phone.NT_MODE_CDMA_NO_EVDO:
+                                case Phone.NT_MODE_EVDO_NO_CDMA:
+                                    mButtonEnabledNetworks.setEntries(
+                                            R.array.enabled_networks_cdma_no_lte_choices);
+                                    mButtonEnabledNetworks.setEntryValues(
+                                            R.array.enabled_networks_cdma_no_lte_values);
+                                    break;
+                                case Phone.NT_MODE_GLOBAL:
+                                case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                                case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                                case Phone.NT_MODE_LTE_ONLY:
+                                    mButtonEnabledNetworks.setEntries(
+                                            R.array.enabled_networks_cdma_only_lte_choices);
+                                    mButtonEnabledNetworks.setEntryValues(
+                                            R.array.enabled_networks_cdma_only_lte_values);
+                                    break;
+                                default:
+                                    mButtonEnabledNetworks.setEntries(
+                                            R.array.enabled_networks_cdma_choices);
+                                    mButtonEnabledNetworks.setEntryValues(
+                                            R.array.enabled_networks_cdma_values);
+                                    break;
+                            }
+                        }
+                    }
+                    mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
 
-                if (isLteOnCdma) {
-                    if (lteForced == 0) {
+                    // In World mode force a refresh of GSM Options.
+                    if (isWorldMode()) {
+                        mGsmUmtsOptions = null;
+                    }
+                } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+                    if (isSupportTdscdma()) {
+                        mButtonEnabledNetworks.setEntries(
+                                R.array.enabled_networks_tdscdma_choices);
+                        mButtonEnabledNetworks.setEntryValues(
+                                R.array.enabled_networks_tdscdma_values);
+                    } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)
+                            && !getResources().getBoolean(R.bool.config_enabled_lte)) {
+                        mButtonEnabledNetworks.setEntries(
+                                R.array.enabled_networks_except_gsm_lte_choices);
+                        mButtonEnabledNetworks.setEntryValues(
+                                R.array.enabled_networks_except_gsm_lte_values);
+                    } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) {
+                        int select = (mShow4GForLTE == true) ?
+                                R.array.enabled_networks_except_gsm_4g_choices
+                                : R.array.enabled_networks_except_gsm_choices;
+                        mButtonEnabledNetworks.setEntries(select);
+                        mButtonEnabledNetworks.setEntryValues(
+                                R.array.enabled_networks_except_gsm_values);
+                    } else if (!getResources().getBoolean(R.bool.config_enabled_lte)) {
+                        mButtonEnabledNetworks.setEntries(
+                                R.array.enabled_networks_except_lte_choices);
+                        mButtonEnabledNetworks.setEntryValues(
+                                R.array.enabled_networks_except_lte_values);
+                    } else if (mIsGlobalCdma) {
                         mButtonEnabledNetworks.setEntries(
                                 R.array.enabled_networks_cdma_choices);
                         mButtonEnabledNetworks.setEntryValues(
                                 R.array.enabled_networks_cdma_values);
                     } else {
-                        switch (settingsNetworkMode) {
-                            case Phone.NT_MODE_CDMA:
-                            case Phone.NT_MODE_CDMA_NO_EVDO:
-                            case Phone.NT_MODE_EVDO_NO_CDMA:
-                                mButtonEnabledNetworks.setEntries(
-                                        R.array.enabled_networks_cdma_no_lte_choices);
-                                mButtonEnabledNetworks.setEntryValues(
-                                        R.array.enabled_networks_cdma_no_lte_values);
-                                break;
-                            case Phone.NT_MODE_GLOBAL:
-                            case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
-                            case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                            case Phone.NT_MODE_LTE_ONLY:
-                                mButtonEnabledNetworks.setEntries(
-                                        R.array.enabled_networks_cdma_only_lte_choices);
-                                mButtonEnabledNetworks.setEntryValues(
-                                        R.array.enabled_networks_cdma_only_lte_values);
-                                break;
-                            default:
-                                mButtonEnabledNetworks.setEntries(
-                                        R.array.enabled_networks_cdma_choices);
-                                mButtonEnabledNetworks.setEntryValues(
-                                        R.array.enabled_networks_cdma_values);
-                                break;
-                        }
+                        int select = (mShow4GForLTE == true) ? R.array.enabled_networks_4g_choices
+                                : R.array.enabled_networks_choices;
+                        mButtonEnabledNetworks.setEntries(select);
+                        mButtonEnabledNetworks.setEntryValues(
+                                R.array.enabled_networks_values);
                     }
-                }
-                mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
-
-                // In World mode force a refresh of GSM Options.
-                if (isWorldMode()) {
-                    mGsmUmtsOptions = null;
-                }
-            } else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
-                if (isSupportTdscdma()) {
-                    mButtonEnabledNetworks.setEntries(
-                            R.array.enabled_networks_tdscdma_choices);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_tdscdma_values);
-                } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)
-                        && !getResources().getBoolean(R.bool.config_enabled_lte)) {
-                    mButtonEnabledNetworks.setEntries(
-                            R.array.enabled_networks_except_gsm_lte_choices);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_except_gsm_lte_values);
-                } else if (!carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) {
-                    int select = (mShow4GForLTE == true) ?
-                            R.array.enabled_networks_except_gsm_4g_choices
-                            : R.array.enabled_networks_except_gsm_choices;
-                    mButtonEnabledNetworks.setEntries(select);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_except_gsm_values);
-                } else if (!getResources().getBoolean(R.bool.config_enabled_lte)) {
-                    mButtonEnabledNetworks.setEntries(
-                            R.array.enabled_networks_except_lte_choices);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_except_lte_values);
-                } else if (mIsGlobalCdma) {
-                    mButtonEnabledNetworks.setEntries(
-                            R.array.enabled_networks_cdma_choices);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_cdma_values);
+                    mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId);
                 } else {
-                    int select = (mShow4GForLTE == true) ? R.array.enabled_networks_4g_choices
-                            : R.array.enabled_networks_choices;
-                    mButtonEnabledNetworks.setEntries(select);
-                    mButtonEnabledNetworks.setEntryValues(
-                            R.array.enabled_networks_values);
+                    throw new IllegalStateException("Unexpected phone type: " + phoneType);
                 }
-                mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, phoneSubId);
+                if (isWorldMode()) {
+                    mButtonEnabledNetworks.setEntries(
+                            R.array.preferred_network_mode_choices_world_mode);
+                    mButtonEnabledNetworks.setEntryValues(
+                            R.array.preferred_network_mode_values_world_mode);
+                }
+                mButtonEnabledNetworks.setOnPreferenceChangeListener(this);
+                if (DBG) log("settingsNetworkMode: " + settingsNetworkMode);
+            }
+
+            final boolean missingDataServiceUrl = TextUtils.isEmpty(
+                    android.provider.Settings.Global.getString(getActivity().getContentResolver(),
+                            android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL));
+            if (!isLteOnCdma || missingDataServiceUrl) {
+                prefSet.removePreference(mLteDataServicePref);
             } else {
-                throw new IllegalStateException("Unexpected phone type: " + phoneType);
+                android.util.Log.d(LOG_TAG, "keep ltePref");
             }
-            if (isWorldMode()) {
-                mButtonEnabledNetworks.setEntries(
-                        R.array.preferred_network_mode_choices_world_mode);
-                mButtonEnabledNetworks.setEntryValues(
-                        R.array.preferred_network_mode_values_world_mode);
+
+            if (!(ImsManager.isVolteEnabledByPlatform(getActivity())
+                    && ImsManager.isVolteProvisionedOnDevice(getActivity()))
+                    || carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
+                Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
+                if (pref != null) {
+                    prefSet.removePreference(pref);
+                }
             }
-            mButtonEnabledNetworks.setOnPreferenceChangeListener(this);
-            if (DBG) log("settingsNetworkMode: " + settingsNetworkMode);
-        }
 
-        final boolean missingDataServiceUrl = TextUtils.isEmpty(
-                android.provider.Settings.Global.getString(getContentResolver(),
-                        android.provider.Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL));
-        if (!isLteOnCdma || missingDataServiceUrl) {
-            prefSet.removePreference(mLteDataServicePref);
-        } else {
-            android.util.Log.d(LOG_TAG, "keep ltePref");
-        }
-
-        // Enable enhanced 4G LTE mode settings depending on whether exists on platform
-        if (!(ImsManager.isVolteEnabledByPlatform(this)
-                && ImsManager.isVolteProvisionedOnDevice(this))) {
-            Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
-            if (pref != null) {
-                prefSet.removePreference(pref);
+            ActionBar actionBar = getActivity().getActionBar();
+            if (actionBar != null) {
+                // android.R.id.home will be triggered in onOptionsItemSelected()
+                actionBar.setDisplayHomeAsUpEnabled(true);
             }
-        }
 
-        ActionBar actionBar = getActionBar();
-        if (actionBar != null) {
-            // android.R.id.home will be triggered in onOptionsItemSelected()
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
+            // Enable link to CMAS app settings depending on the value in config.xml.
+            final boolean isCellBroadcastAppLinkEnabled = getActivity().getResources().getBoolean(
+                    com.android.internal.R.bool.config_cellBroadcastAppLinks);
+            if (!mUm.isAdminUser() || !isCellBroadcastAppLinkEnabled
+                    || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) {
+                PreferenceScreen root = getPreferenceScreen();
+                Preference ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS);
+                if (ps != null) {
+                    root.removePreference(ps);
+                }
+            }
 
-        final boolean isSecondaryUser = UserHandle.myUserId() != UserHandle.USER_OWNER;
-        // Enable link to CMAS app settings depending on the value in config.xml.
-        final boolean isCellBroadcastAppLinkEnabled = this.getResources().getBoolean(
-                com.android.internal.R.bool.config_cellBroadcastAppLinks);
-        if (isSecondaryUser || !isCellBroadcastAppLinkEnabled
-                || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) {
+            // Get the networkMode from Settings.System and displays it
+            mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled());
+            mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
+            mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
+            UpdatePreferredNetworkModeSummary(settingsNetworkMode);
+            UpdateEnabledNetworksValueAndSummary(settingsNetworkMode);
+            // Display preferred network type based on what modem returns b/18676277
+            mPhone.setPreferredNetworkType(settingsNetworkMode, mHandler
+                    .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
+
+            /**
+             * Enable/disable depending upon if there are any active subscriptions.
+             *
+             * I've decided to put this enable/disable code at the bottom as the
+             * code above works even when there are no active subscriptions, thus
+             * putting it afterwards is a smaller change. This can be refined later,
+             * but you do need to remember that this all needs to work when subscriptions
+             * change dynamically such as when hot swapping sims.
+             */
+            boolean hasActiveSubscriptions = hasActiveSubscriptions();
+            TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(
+                    Context.TELEPHONY_SERVICE);
+            boolean canChange4glte = (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) &&
+                    ImsManager.isNonTtyOrTtyOnVolteEnabled(getActivity().getApplicationContext()) &&
+                    carrierConfig.getBoolean(
+                            CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);
+            boolean useVariant4glteTitle = carrierConfig.getBoolean(
+                    CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_BOOL);
+            int enhanced4glteModeTitleId = useVariant4glteTitle ?
+                    R.string.enhanced_4g_lte_mode_title_variant :
+                    R.string.enhanced_4g_lte_mode_title;
+            mButtonDataRoam.setDisabledByAdmin(false);
+            mButtonDataRoam.setEnabled(hasActiveSubscriptions);
+            if (mButtonDataRoam.isEnabled()) {
+                if (RestrictedLockUtils.hasBaseUserRestriction(context,
+                        UserManager.DISALLOW_DATA_ROAMING, UserHandle.myUserId())) {
+                    mButtonDataRoam.setEnabled(false);
+                } else {
+                    mButtonDataRoam.checkRestrictionAndSetDisabled(
+                            UserManager.DISALLOW_DATA_ROAMING);
+                }
+            }
+            mButtonPreferredNetworkMode.setEnabled(hasActiveSubscriptions);
+            mButtonEnabledNetworks.setEnabled(hasActiveSubscriptions);
+            mButton4glte.setTitle(enhanced4glteModeTitleId);
+            mButton4glte.setEnabled(hasActiveSubscriptions && canChange4glte);
+            mLteDataServicePref.setEnabled(hasActiveSubscriptions);
+            Preference ps;
             PreferenceScreen root = getPreferenceScreen();
-            Preference ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS);
+            ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS);
             if (ps != null) {
-                root.removePreference(ps);
+                ps.setEnabled(hasActiveSubscriptions);
+            }
+            ps = findPreference(BUTTON_APN_EXPAND_KEY);
+            if (ps != null) {
+                ps.setEnabled(hasActiveSubscriptions);
+            }
+            ps = findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
+            if (ps != null) {
+                ps.setEnabled(hasActiveSubscriptions);
+            }
+            ps = findPreference(BUTTON_CARRIER_SETTINGS_KEY);
+            if (ps != null) {
+                ps.setEnabled(hasActiveSubscriptions);
+            }
+            ps = findPreference(BUTTON_CDMA_SYSTEM_SELECT_KEY);
+            if (ps != null) {
+                ps.setEnabled(hasActiveSubscriptions);
             }
         }
 
-        // Get the networkMode from Settings.System and displays it
-        mButtonDataRoam.setChecked(mPhone.getDataRoamingEnabled());
-        mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
-        mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
-        UpdatePreferredNetworkModeSummary(settingsNetworkMode);
-        UpdateEnabledNetworksValueAndSummary(settingsNetworkMode);
-        // Display preferred network type based on what modem returns b/18676277
-        mPhone.setPreferredNetworkType(settingsNetworkMode, mHandler
-                .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
+        @Override
+        public void onPause() {
+            super.onPause();
+            if (DBG) log("onPause:+");
+
+            if (ImsManager.isVolteEnabledByPlatform(getActivity())
+                    && ImsManager.isVolteProvisionedOnDevice(getActivity())) {
+                TelephonyManager tm =
+                        (TelephonyManager) getActivity().getSystemService(
+                                Context.TELEPHONY_SERVICE);
+                tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
+            }
+
+            mSubscriptionManager
+                    .removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+            if (DBG) log("onPause:-");
+        }
 
         /**
-         * Enable/disable depending upon if there are any active subscriptions.
+         * Implemented to support onPreferenceChangeListener to look for preference
+         * changes specifically on CLIR.
          *
-         * I've decided to put this enable/disable code at the bottom as the
-         * code above works even when there are no active subscriptions, thus
-         * putting it afterwards is a smaller change. This can be refined later,
-         * but you do need to remember that this all needs to work when subscriptions
-         * change dynamically such as when hot swapping sims.
+         * @param preference is the preference to be changed, should be mButtonCLIR.
+         * @param objValue should be the value of the selection, NOT its localized
+         * display value.
          */
-        boolean hasActiveSubscriptions = hasActiveSubscriptions();
-        TelephonyManager tm = (TelephonyManager) getSystemService(
-                Context.TELEPHONY_SERVICE);
-        boolean canChange4glte = (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) &&
-                ImsManager.isNonTtyOrTtyOnVolteEnabled(getApplicationContext()) &&
-                carrierConfig.getBoolean(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);
-        mButtonDataRoam.setEnabled(hasActiveSubscriptions);
-        mButtonPreferredNetworkMode.setEnabled(hasActiveSubscriptions);
-        mButtonEnabledNetworks.setEnabled(hasActiveSubscriptions);
-        mButton4glte.setEnabled(hasActiveSubscriptions && canChange4glte);
-        mLteDataServicePref.setEnabled(hasActiveSubscriptions);
-        Preference ps;
-        PreferenceScreen root = getPreferenceScreen();
-        ps = findPreference(BUTTON_CELL_BROADCAST_SETTINGS);
-        if (ps != null) {
-            ps.setEnabled(hasActiveSubscriptions);
-        }
-        ps = findPreference(BUTTON_APN_EXPAND_KEY);
-        if (ps != null) {
-            ps.setEnabled(hasActiveSubscriptions);
-        }
-        ps = findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
-        if (ps != null) {
-            ps.setEnabled(hasActiveSubscriptions);
-        }
-        ps = findPreference(BUTTON_CARRIER_SETTINGS_KEY);
-        if (ps != null) {
-            ps.setEnabled(hasActiveSubscriptions);
-        }
-        ps = findPreference(BUTTON_CDMA_SYSTEM_SELECT_KEY);
-        if (ps != null) {
-            ps.setEnabled(hasActiveSubscriptions);
-        }
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        if (DBG) log("onPause:+");
-
-        if (ImsManager.isVolteEnabledByPlatform(this)
-                && ImsManager.isVolteProvisionedOnDevice(this)) {
-            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-            tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
-        }
-
-        mSubscriptionManager
-            .removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
-        if (DBG) log("onPause:-");
-    }
-
-    /**
-     * Implemented to support onPreferenceChangeListener to look for preference
-     * changes specifically on CLIR.
-     *
-     * @param preference is the preference to be changed, should be mButtonCLIR.
-     * @param objValue should be the value of the selection, NOT its localized
-     * display value.
-     */
-    public boolean onPreferenceChange(Preference preference, Object objValue) {
-        final int phoneSubId = mPhone.getSubId();
-        if (preference == mButtonPreferredNetworkMode) {
-            //NOTE onPreferenceChange seems to be called even if there is no change
-            //Check if the button value is changed from the System.Setting
-            mButtonPreferredNetworkMode.setValue((String) objValue);
-            int buttonNetworkMode;
-            buttonNetworkMode = Integer.valueOf((String) objValue).intValue();
-            int settingsNetworkMode = android.provider.Settings.Global.getInt(
-                    mPhone.getContext().getContentResolver(),
-                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                    preferredNetworkMode);
-            if (buttonNetworkMode != settingsNetworkMode) {
-                int modemNetworkMode;
-                // if new mode is invalid ignore it
-                switch (buttonNetworkMode) {
-                    case Phone.NT_MODE_WCDMA_PREF:
-                    case Phone.NT_MODE_GSM_ONLY:
-                    case Phone.NT_MODE_WCDMA_ONLY:
-                    case Phone.NT_MODE_GSM_UMTS:
-                    case Phone.NT_MODE_CDMA:
-                    case Phone.NT_MODE_CDMA_NO_EVDO:
-                    case Phone.NT_MODE_EVDO_NO_CDMA:
-                    case Phone.NT_MODE_GLOBAL:
-                    case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
-                    case Phone.NT_MODE_LTE_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_ONLY:
-                    case Phone.NT_MODE_LTE_WCDMA:
-                    case Phone.NT_MODE_TDSCDMA_ONLY:
-                    case Phone.NT_MODE_TDSCDMA_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA:
-                    case Phone.NT_MODE_TDSCDMA_GSM:
-                    case Phone.NT_MODE_LTE_TDSCDMA_GSM:
-                    case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
-                    case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                        // This is one of the modes we recognize
-                        modemNetworkMode = buttonNetworkMode;
-                        break;
-                    default:
-                        loge("Invalid Network Mode (" + buttonNetworkMode + ") chosen. Ignore.");
-                        return true;
-                }
-
-                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+        public boolean onPreferenceChange(Preference preference, Object objValue) {
+            final int phoneSubId = mPhone.getSubId();
+            if (preference == mButtonPreferredNetworkMode) {
+                //NOTE onPreferenceChange seems to be called even if there is no change
+                //Check if the button value is changed from the System.Setting
+                mButtonPreferredNetworkMode.setValue((String) objValue);
+                int buttonNetworkMode;
+                buttonNetworkMode = Integer.parseInt((String) objValue);
+                int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                        mPhone.getContext().getContentResolver(),
                         android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                        buttonNetworkMode );
-                //Set the modem network mode
-                mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
-                        .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
-            }
-        } else if (preference == mButtonEnabledNetworks) {
-            mButtonEnabledNetworks.setValue((String) objValue);
-            int buttonNetworkMode;
-            buttonNetworkMode = Integer.valueOf((String) objValue).intValue();
-            if (DBG) log("buttonNetworkMode: " + buttonNetworkMode);
-            int settingsNetworkMode = android.provider.Settings.Global.getInt(
-                    mPhone.getContext().getContentResolver(),
-                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                    preferredNetworkMode);
-            if (buttonNetworkMode != settingsNetworkMode) {
-                int modemNetworkMode;
-                // if new mode is invalid ignore it
-                switch (buttonNetworkMode) {
-                    case Phone.NT_MODE_WCDMA_PREF:
-                    case Phone.NT_MODE_GSM_ONLY:
-                    case Phone.NT_MODE_LTE_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                    case Phone.NT_MODE_CDMA:
-                    case Phone.NT_MODE_CDMA_NO_EVDO:
-                    case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
-                    case Phone.NT_MODE_TDSCDMA_ONLY:
-                    case Phone.NT_MODE_TDSCDMA_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA:
-                    case Phone.NT_MODE_TDSCDMA_GSM:
-                    case Phone.NT_MODE_LTE_TDSCDMA_GSM:
-                    case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
-                    case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                    case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                        // This is one of the modes we recognize
-                        modemNetworkMode = buttonNetworkMode;
-                        break;
-                    default:
-                        loge("Invalid Network Mode (" + buttonNetworkMode + ") chosen. Ignore.");
-                        return true;
+                        preferredNetworkMode);
+                if (buttonNetworkMode != settingsNetworkMode) {
+                    int modemNetworkMode;
+                    // if new mode is invalid ignore it
+                    switch (buttonNetworkMode) {
+                        case Phone.NT_MODE_WCDMA_PREF:
+                        case Phone.NT_MODE_GSM_ONLY:
+                        case Phone.NT_MODE_WCDMA_ONLY:
+                        case Phone.NT_MODE_GSM_UMTS:
+                        case Phone.NT_MODE_CDMA:
+                        case Phone.NT_MODE_CDMA_NO_EVDO:
+                        case Phone.NT_MODE_EVDO_NO_CDMA:
+                        case Phone.NT_MODE_GLOBAL:
+                        case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                        case Phone.NT_MODE_LTE_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_ONLY:
+                        case Phone.NT_MODE_LTE_WCDMA:
+                        case Phone.NT_MODE_TDSCDMA_ONLY:
+                        case Phone.NT_MODE_TDSCDMA_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA:
+                        case Phone.NT_MODE_TDSCDMA_GSM:
+                        case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                        case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                        case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                            // This is one of the modes we recognize
+                            modemNetworkMode = buttonNetworkMode;
+                            break;
+                        default:
+                            loge("Invalid Network Mode (" +buttonNetworkMode+ ") chosen. Ignore.");
+                            return true;
+                    }
+
+                    android.provider.Settings.Global.putInt(
+                            mPhone.getContext().getContentResolver(),
+                            android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                            buttonNetworkMode );
+                    //Set the modem network mode
+                    mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
+                            .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
                 }
-
-                UpdateEnabledNetworksValueAndSummary(buttonNetworkMode);
-
-                android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+            } else if (preference == mButtonEnabledNetworks) {
+                mButtonEnabledNetworks.setValue((String) objValue);
+                int buttonNetworkMode;
+                buttonNetworkMode = Integer.parseInt((String) objValue);
+                if (DBG) log("buttonNetworkMode: " + buttonNetworkMode);
+                int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                        mPhone.getContext().getContentResolver(),
                         android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                        buttonNetworkMode );
-                //Set the modem network mode
-                mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
-                        .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
-            }
-        } else if (preference == mButton4glte) {
-            SwitchPreference enhanced4gModePref = (SwitchPreference) preference;
-            boolean enhanced4gMode = !enhanced4gModePref.isChecked();
-            enhanced4gModePref.setChecked(enhanced4gMode);
-            ImsManager.setEnhanced4gLteModeSetting(this, enhanced4gModePref.isChecked());
-        } else if (preference == mButtonDataRoam) {
-            if (DBG) log("onPreferenceTreeClick: preference == mButtonDataRoam.");
+                        preferredNetworkMode);
+                if (buttonNetworkMode != settingsNetworkMode) {
+                    int modemNetworkMode;
+                    // if new mode is invalid ignore it
+                    switch (buttonNetworkMode) {
+                        case Phone.NT_MODE_WCDMA_PREF:
+                        case Phone.NT_MODE_GSM_ONLY:
+                        case Phone.NT_MODE_LTE_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                        case Phone.NT_MODE_CDMA:
+                        case Phone.NT_MODE_CDMA_NO_EVDO:
+                        case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                        case Phone.NT_MODE_TDSCDMA_ONLY:
+                        case Phone.NT_MODE_TDSCDMA_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA:
+                        case Phone.NT_MODE_TDSCDMA_GSM:
+                        case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                        case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                        case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                        case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                            // This is one of the modes we recognize
+                            modemNetworkMode = buttonNetworkMode;
+                            break;
+                        default:
+                            loge("Invalid Network Mode (" +buttonNetworkMode+ ") chosen. Ignore.");
+                            return true;
+                    }
 
-            //normally called on the toggle click
-            if (!mButtonDataRoam.isChecked()) {
-                // First confirm with a warning dialog about charges
-                mOkClicked = false;
-                new AlertDialog.Builder(this).setMessage(
-                        getResources().getString(R.string.roaming_warning))
-                        .setTitle(R.string.roaming_alert_title)
-                        .setIconAttribute(android.R.attr.alertDialogIcon)
-                        .setPositiveButton(android.R.string.yes, this)
-                        .setNegativeButton(android.R.string.no, this)
-                        .show()
-                        .setOnDismissListener(this);
-            } else {
-                mPhone.setDataRoamingEnabled(false);
+                    UpdateEnabledNetworksValueAndSummary(buttonNetworkMode);
+
+                    android.provider.Settings.Global.putInt(
+                            mPhone.getContext().getContentResolver(),
+                            android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                            buttonNetworkMode );
+                    //Set the modem network mode
+                    mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
+                            .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
+                }
+            } else if (preference == mButton4glte) {
+                SwitchPreference enhanced4gModePref = (SwitchPreference) preference;
+                boolean enhanced4gMode = !enhanced4gModePref.isChecked();
+                enhanced4gModePref.setChecked(enhanced4gMode);
+                ImsManager.setEnhanced4gLteModeSetting(getActivity(),
+                        enhanced4gModePref.isChecked());
+            } else if (preference == mButtonDataRoam) {
+                if (DBG) log("onPreferenceTreeClick: preference == mButtonDataRoam.");
+
+                //normally called on the toggle click
+                if (!mButtonDataRoam.isChecked()) {
+                    // First confirm with a warning dialog about charges
+                    mOkClicked = false;
+                    RoamingDialogFragment fragment = new RoamingDialogFragment();
+                    fragment.show(getFragmentManager(), ROAMING_TAG);
+                    // Don't update the toggle unless the confirm button is actually pressed.
+                    return false;
+                } else {
+                    mPhone.setDataRoamingEnabled(false);
+                }
+                return true;
             }
+
+            updateBody();
+            // always let the preference setting proceed.
             return true;
         }
 
-        updateBody();
-        // always let the preference setting proceed.
-        return true;
-    }
+        private class MyHandler extends Handler {
 
-    private class MyHandler extends Handler {
+            static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 0;
 
-        static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 0;
-
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MESSAGE_SET_PREFERRED_NETWORK_TYPE:
-                    handleSetPreferredNetworkTypeResponse(msg);
-                    break;
-            }
-        }
-
-        private void handleSetPreferredNetworkTypeResponse(Message msg) {
-            AsyncResult ar = (AsyncResult) msg.obj;
-            final int phoneSubId = mPhone.getSubId();
-
-            if (ar.exception == null) {
-                int networkMode;
-                if (getPreferenceScreen().findPreference(BUTTON_PREFERED_NETWORK_MODE) != null)  {
-                    networkMode =  Integer.valueOf(
-                            mButtonPreferredNetworkMode.getValue()).intValue();
-                    android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                            android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                            networkMode );
-                }
-                if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null)  {
-                    networkMode = Integer.valueOf(
-                            mButtonEnabledNetworks.getValue()).intValue();
-                    android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
-                            android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                            networkMode );
-                }
-            } else {
-                if (DBG) {
-                    log("handleSetPreferredNetworkTypeResponse: exception in setting network mode.");
-                }
-                updatePreferredNetworkUIFromDb();
-            }
-        }
-    }
-
-    private void updatePreferredNetworkUIFromDb() {
-        final int phoneSubId = mPhone.getSubId();
-
-        int settingsNetworkMode = android.provider.Settings.Global.getInt(
-                mPhone.getContext().getContentResolver(),
-                android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
-                preferredNetworkMode);
-
-        if (DBG) {
-            log("updatePreferredNetworkUIFromDb: settingsNetworkMode = " +
-                    settingsNetworkMode);
-        }
-
-        UpdatePreferredNetworkModeSummary(settingsNetworkMode);
-        UpdateEnabledNetworksValueAndSummary(settingsNetworkMode);
-        // changes the mButtonPreferredNetworkMode accordingly to settingsNetworkMode
-        mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
-    }
-
-    private void UpdatePreferredNetworkModeSummary(int NetworkMode) {
-        switch(NetworkMode) {
-            case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
-            case Phone.NT_MODE_TDSCDMA_GSM:
-            case Phone.NT_MODE_WCDMA_PREF:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_wcdma_perf_summary);
-                break;
-            case Phone.NT_MODE_GSM_ONLY:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_gsm_only_summary);
-                break;
-            case Phone.NT_MODE_TDSCDMA_WCDMA:
-            case Phone.NT_MODE_WCDMA_ONLY:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_wcdma_only_summary);
-                break;
-            case Phone.NT_MODE_GSM_UMTS:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_gsm_wcdma_summary);
-                break;
-            case Phone.NT_MODE_CDMA:
-                switch (mPhone.getLteOnCdmaMode()) {
-                    case PhoneConstants.LTE_ON_CDMA_TRUE:
-                        mButtonPreferredNetworkMode.setSummary(
-                            R.string.preferred_network_mode_cdma_summary);
-                    break;
-                    case PhoneConstants.LTE_ON_CDMA_FALSE:
-                    default:
-                        mButtonPreferredNetworkMode.setSummary(
-                            R.string.preferred_network_mode_cdma_evdo_summary);
+            @Override
+            public void handleMessage(Message msg) {
+                switch (msg.what) {
+                    case MESSAGE_SET_PREFERRED_NETWORK_TYPE:
+                        handleSetPreferredNetworkTypeResponse(msg);
                         break;
                 }
-                break;
-            case Phone.NT_MODE_CDMA_NO_EVDO:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_cdma_only_summary);
-                break;
-            case Phone.NT_MODE_EVDO_NO_CDMA:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_evdo_only_summary);
-                break;
-            case Phone.NT_MODE_LTE_TDSCDMA:
-            case Phone.NT_MODE_LTE_ONLY:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_lte_summary);
-                break;
-            case Phone.NT_MODE_LTE_TDSCDMA_GSM:
-            case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
-            case Phone.NT_MODE_LTE_GSM_WCDMA:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_lte_gsm_wcdma_summary);
-                break;
-            case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_lte_cdma_evdo_summary);
-                break;
-            case Phone.NT_MODE_TDSCDMA_ONLY:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_tdscdma_summary);
-                break;
-            case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-            case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
-                        mIsGlobalCdma ||
-                        isWorldMode()) {
-                    mButtonPreferredNetworkMode.setSummary(
-                            R.string.preferred_network_mode_global_summary);
+            }
+
+            private void handleSetPreferredNetworkTypeResponse(Message msg) {
+                final Activity activity = getActivity();
+                if (activity == null || activity.isDestroyed()) {
+                    // Access preferences of activity only if it is not destroyed
+                    // or if fragment is not attached to an activity.
+                    return;
+                }
+
+                AsyncResult ar = (AsyncResult) msg.obj;
+                final int phoneSubId = mPhone.getSubId();
+
+                if (ar.exception == null) {
+                    int networkMode;
+                    if (getPreferenceScreen().findPreference(
+                            BUTTON_PREFERED_NETWORK_MODE) != null)  {
+                        networkMode =  Integer.parseInt(mButtonPreferredNetworkMode.getValue());
+                        android.provider.Settings.Global.putInt(
+                                mPhone.getContext().getContentResolver(),
+                                android.provider.Settings.Global.PREFERRED_NETWORK_MODE
+                                        + phoneSubId,
+                                networkMode );
+                    }
+                    if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) {
+                        networkMode = Integer.parseInt(mButtonEnabledNetworks.getValue());
+                        android.provider.Settings.Global.putInt(
+                                mPhone.getContext().getContentResolver(),
+                                android.provider.Settings.Global.PREFERRED_NETWORK_MODE
+                                        + phoneSubId,
+                                networkMode );
+                    }
                 } else {
+                    Log.i(LOG_TAG, "handleSetPreferredNetworkTypeResponse:" +
+                            "exception in setting network mode.");
+                    updatePreferredNetworkUIFromDb();
+                }
+            }
+        }
+
+        private void updatePreferredNetworkUIFromDb() {
+            final int phoneSubId = mPhone.getSubId();
+
+            int settingsNetworkMode = android.provider.Settings.Global.getInt(
+                    mPhone.getContext().getContentResolver(),
+                    android.provider.Settings.Global.PREFERRED_NETWORK_MODE + phoneSubId,
+                    preferredNetworkMode);
+
+            if (DBG) {
+                log("updatePreferredNetworkUIFromDb: settingsNetworkMode = " +
+                        settingsNetworkMode);
+            }
+
+            UpdatePreferredNetworkModeSummary(settingsNetworkMode);
+            UpdateEnabledNetworksValueAndSummary(settingsNetworkMode);
+            // changes the mButtonPreferredNetworkMode accordingly to settingsNetworkMode
+            mButtonPreferredNetworkMode.setValue(Integer.toString(settingsNetworkMode));
+        }
+
+        private void UpdatePreferredNetworkModeSummary(int NetworkMode) {
+            switch(NetworkMode) {
+                case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                case Phone.NT_MODE_TDSCDMA_GSM:
+                case Phone.NT_MODE_WCDMA_PREF:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_wcdma_perf_summary);
+                    break;
+                case Phone.NT_MODE_GSM_ONLY:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_gsm_only_summary);
+                    break;
+                case Phone.NT_MODE_TDSCDMA_WCDMA:
+                case Phone.NT_MODE_WCDMA_ONLY:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_wcdma_only_summary);
+                    break;
+                case Phone.NT_MODE_GSM_UMTS:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_gsm_wcdma_summary);
+                    break;
+                case Phone.NT_MODE_CDMA:
+                    switch (mPhone.getLteOnCdmaMode()) {
+                        case PhoneConstants.LTE_ON_CDMA_TRUE:
+                            mButtonPreferredNetworkMode.setSummary(
+                                    R.string.preferred_network_mode_cdma_summary);
+                            break;
+                        case PhoneConstants.LTE_ON_CDMA_FALSE:
+                        default:
+                            mButtonPreferredNetworkMode.setSummary(
+                                    R.string.preferred_network_mode_cdma_evdo_summary);
+                            break;
+                    }
+                    break;
+                case Phone.NT_MODE_CDMA_NO_EVDO:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_cdma_only_summary);
+                    break;
+                case Phone.NT_MODE_EVDO_NO_CDMA:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_evdo_only_summary);
+                    break;
+                case Phone.NT_MODE_LTE_TDSCDMA:
+                case Phone.NT_MODE_LTE_ONLY:
                     mButtonPreferredNetworkMode.setSummary(
                             R.string.preferred_network_mode_lte_summary);
-                }
-                break;
-            case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-            case Phone.NT_MODE_GLOBAL:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary);
-                break;
-            case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
-            case Phone.NT_MODE_LTE_WCDMA:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_lte_wcdma_summary);
-                break;
-            default:
-                mButtonPreferredNetworkMode.setSummary(
-                        R.string.preferred_network_mode_global_summary);
-        }
-    }
-
-    private void UpdateEnabledNetworksValueAndSummary(int NetworkMode) {
-        switch (NetworkMode) {
-            case Phone.NT_MODE_TDSCDMA_WCDMA:
-            case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
-            case Phone.NT_MODE_TDSCDMA_GSM:
-                mButtonEnabledNetworks.setValue(
-                        Integer.toString(Phone.NT_MODE_TDSCDMA_GSM_WCDMA));
-                mButtonEnabledNetworks.setSummary(R.string.network_3G);
-                break;
-            case Phone.NT_MODE_WCDMA_ONLY:
-            case Phone.NT_MODE_GSM_UMTS:
-            case Phone.NT_MODE_WCDMA_PREF:
-                if (!mIsGlobalCdma) {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_WCDMA_PREF));
-                    mButtonEnabledNetworks.setSummary(R.string.network_3G);
-                } else {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
-                    mButtonEnabledNetworks.setSummary(R.string.network_global);
-                }
-                break;
-            case Phone.NT_MODE_GSM_ONLY:
-                if (!mIsGlobalCdma) {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_GSM_ONLY));
-                    mButtonEnabledNetworks.setSummary(R.string.network_2G);
-                } else {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
-                    mButtonEnabledNetworks.setSummary(R.string.network_global);
-                }
-                break;
-            case Phone.NT_MODE_LTE_GSM_WCDMA:
-                if (isWorldMode()) {
-                    mButtonEnabledNetworks.setSummary(
-                            R.string.preferred_network_mode_lte_gsm_umts_summary);
-                    controlCdmaOptions(false);
-                    controlGsmOptions(true);
                     break;
-                }
-            case Phone.NT_MODE_LTE_ONLY:
-            case Phone.NT_MODE_LTE_WCDMA:
-                if (!mIsGlobalCdma) {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_GSM_WCDMA));
-                    mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
-                            ? R.string.network_4G : R.string.network_lte);
-                } else {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
-                    mButtonEnabledNetworks.setSummary(R.string.network_global);
-                }
-                break;
-            case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
-                if (isWorldMode()) {
-                    mButtonEnabledNetworks.setSummary(
-                            R.string.preferred_network_mode_lte_cdma_summary);
-                    controlCdmaOptions(true);
-                    controlGsmOptions(false);
-                } else {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_CDMA_AND_EVDO));
-                    mButtonEnabledNetworks.setSummary(R.string.network_lte);
-                }
-                break;
-            case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-                mButtonEnabledNetworks.setValue(
-                        Integer.toString(Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
-                mButtonEnabledNetworks.setSummary(R.string.network_3G);
-                break;
-            case Phone.NT_MODE_CDMA:
-            case Phone.NT_MODE_EVDO_NO_CDMA:
-            case Phone.NT_MODE_GLOBAL:
-                mButtonEnabledNetworks.setValue(
-                        Integer.toString(Phone.NT_MODE_CDMA));
-                mButtonEnabledNetworks.setSummary(R.string.network_3G);
-                break;
-            case Phone.NT_MODE_CDMA_NO_EVDO:
-                mButtonEnabledNetworks.setValue(
-                        Integer.toString(Phone.NT_MODE_CDMA_NO_EVDO));
-                mButtonEnabledNetworks.setSummary(R.string.network_1x);
-                break;
-            case Phone.NT_MODE_TDSCDMA_ONLY:
-                mButtonEnabledNetworks.setValue(
-                        Integer.toString(Phone.NT_MODE_TDSCDMA_ONLY));
-                mButtonEnabledNetworks.setSummary(R.string.network_3G);
-                break;
-            case Phone.NT_MODE_LTE_TDSCDMA_GSM:
-            case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
-            case Phone.NT_MODE_LTE_TDSCDMA:
-            case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
-            case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
-            case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
-                if (isSupportTdscdma()) {
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
-                    mButtonEnabledNetworks.setSummary(R.string.network_lte);
-                } else {
-                    if (isWorldMode()) {
-                        controlCdmaOptions(true);
-                        controlGsmOptions(false);
-                    }
-                    mButtonEnabledNetworks.setValue(
-                            Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                case Phone.NT_MODE_LTE_GSM_WCDMA:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_lte_gsm_wcdma_summary);
+                    break;
+                case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_lte_cdma_evdo_summary);
+                    break;
+                case Phone.NT_MODE_TDSCDMA_ONLY:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_tdscdma_summary);
+                    break;
+                case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
                     if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
                             mIsGlobalCdma ||
                             isWorldMode()) {
-                        mButtonEnabledNetworks.setSummary(R.string.network_global);
+                        mButtonPreferredNetworkMode.setSummary(
+                                R.string.preferred_network_mode_global_summary);
                     } else {
+                        mButtonPreferredNetworkMode.setSummary(
+                                R.string.preferred_network_mode_lte_summary);
+                    }
+                    break;
+                case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                case Phone.NT_MODE_GLOBAL:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_cdma_evdo_gsm_wcdma_summary);
+                    break;
+                case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                case Phone.NT_MODE_LTE_WCDMA:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_lte_wcdma_summary);
+                    break;
+                default:
+                    mButtonPreferredNetworkMode.setSummary(
+                            R.string.preferred_network_mode_global_summary);
+            }
+        }
+
+        private void UpdateEnabledNetworksValueAndSummary(int NetworkMode) {
+            switch (NetworkMode) {
+                case Phone.NT_MODE_TDSCDMA_WCDMA:
+                case Phone.NT_MODE_TDSCDMA_GSM_WCDMA:
+                case Phone.NT_MODE_TDSCDMA_GSM:
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_TDSCDMA_GSM_WCDMA));
+                    mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                    break;
+                case Phone.NT_MODE_WCDMA_ONLY:
+                case Phone.NT_MODE_GSM_UMTS:
+                case Phone.NT_MODE_WCDMA_PREF:
+                    if (!mIsGlobalCdma) {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_WCDMA_PREF));
+                        mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                    } else {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                        mButtonEnabledNetworks.setSummary(R.string.network_global);
+                    }
+                    break;
+                case Phone.NT_MODE_GSM_ONLY:
+                    if (!mIsGlobalCdma) {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_GSM_ONLY));
+                        mButtonEnabledNetworks.setSummary(R.string.network_2G);
+                    } else {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                        mButtonEnabledNetworks.setSummary(R.string.network_global);
+                    }
+                    break;
+                case Phone.NT_MODE_LTE_GSM_WCDMA:
+                    if (isWorldMode()) {
+                        mButtonEnabledNetworks.setSummary(
+                                R.string.preferred_network_mode_lte_gsm_umts_summary);
+                        controlCdmaOptions(false);
+                        controlGsmOptions(true);
+                        break;
+                    }
+                case Phone.NT_MODE_LTE_ONLY:
+                case Phone.NT_MODE_LTE_WCDMA:
+                    if (!mIsGlobalCdma) {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_GSM_WCDMA));
                         mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
                                 ? R.string.network_4G : R.string.network_lte);
+                    } else {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                        mButtonEnabledNetworks.setSummary(R.string.network_global);
                     }
-                }
-                break;
-            default:
-                String errMsg = "Invalid Network Mode (" + NetworkMode + "). Ignore.";
-                loge(errMsg);
-                mButtonEnabledNetworks.setSummary(errMsg);
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch(requestCode) {
-        case REQUEST_CODE_EXIT_ECM:
-            Boolean isChoiceYes =
-                data.getBooleanExtra(EmergencyCallbackModeExitDialog.EXTRA_EXIT_ECM_RESULT, false);
-            if (isChoiceYes) {
-                // If the phone exits from ECM mode, show the CDMA Options
-                mCdmaOptions.showDialog(mClickedPreference);
-            } else {
-                // do nothing
+                    break;
+                case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+                    if (isWorldMode()) {
+                        mButtonEnabledNetworks.setSummary(
+                                R.string.preferred_network_mode_lte_cdma_summary);
+                        controlCdmaOptions(true);
+                        controlGsmOptions(false);
+                    } else {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_CDMA_AND_EVDO));
+                        mButtonEnabledNetworks.setSummary(R.string.network_lte);
+                    }
+                    break;
+                case Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+                    mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                    break;
+                case Phone.NT_MODE_CDMA:
+                case Phone.NT_MODE_EVDO_NO_CDMA:
+                case Phone.NT_MODE_GLOBAL:
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_CDMA));
+                    mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                    break;
+                case Phone.NT_MODE_CDMA_NO_EVDO:
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_CDMA_NO_EVDO));
+                    mButtonEnabledNetworks.setSummary(R.string.network_1x);
+                    break;
+                case Phone.NT_MODE_TDSCDMA_ONLY:
+                    mButtonEnabledNetworks.setValue(
+                            Integer.toString(Phone.NT_MODE_TDSCDMA_ONLY));
+                    mButtonEnabledNetworks.setSummary(R.string.network_3G);
+                    break;
+                case Phone.NT_MODE_LTE_TDSCDMA_GSM:
+                case Phone.NT_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                case Phone.NT_MODE_LTE_TDSCDMA:
+                case Phone.NT_MODE_LTE_TDSCDMA_WCDMA:
+                case Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                case Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                    if (isSupportTdscdma()) {
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA));
+                        mButtonEnabledNetworks.setSummary(R.string.network_lte);
+                    } else {
+                        if (isWorldMode()) {
+                            controlCdmaOptions(true);
+                            controlGsmOptions(false);
+                        }
+                        mButtonEnabledNetworks.setValue(
+                                Integer.toString(Phone.NT_MODE_LTE_CDMA_EVDO_GSM_WCDMA));
+                        if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA ||
+                                mIsGlobalCdma ||
+                                isWorldMode()) {
+                            mButtonEnabledNetworks.setSummary(R.string.network_global);
+                        } else {
+                            mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
+                                    ? R.string.network_4G : R.string.network_lte);
+                        }
+                    }
+                    break;
+                default:
+                    String errMsg = "Invalid Network Mode (" + NetworkMode + "). Ignore.";
+                    loge(errMsg);
+                    mButtonEnabledNetworks.setSummary(errMsg);
             }
-            break;
-
-        default:
-            break;
         }
-    }
 
-    private static void log(String msg) {
-        Log.d(LOG_TAG, msg);
-    }
+        @Override
+        public void onActivityResult(int requestCode, int resultCode, Intent data) {
+            switch(requestCode) {
+                case REQUEST_CODE_EXIT_ECM:
+                    Boolean isChoiceYes = data.getBooleanExtra(
+                            EmergencyCallbackModeExitDialog.EXTRA_EXIT_ECM_RESULT, false);
+                    if (isChoiceYes) {
+                        // If the phone exits from ECM mode, show the CDMA Options
+                        mCdmaOptions.showDialog(mClickedPreference);
+                    } else {
+                        // do nothing
+                    }
+                    break;
 
-    private static void loge(String msg) {
-        Log.e(LOG_TAG, msg);
-    }
+                default:
+                    break;
+            }
+        }
 
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        final int itemId = item.getItemId();
-        if (itemId == android.R.id.home) {  // See ActionBar#setDisplayHomeAsUpEnabled()
-            // Commenting out "logical up" capability. This is a workaround for issue 5278083.
-            //
-            // Settings app may not launch this activity via UP_ACTIVITY_CLASS but the other
-            // Activity that looks exactly same as UP_ACTIVITY_CLASS ("SubSettings" Activity).
-            // At that moment, this Activity launches UP_ACTIVITY_CLASS on top of the Activity.
-            // which confuses users.
-            // TODO: introduce better mechanism for "up" capability here.
+        private static void log(String msg) {
+            Log.d(LOG_TAG, msg);
+        }
+
+        private static void loge(String msg) {
+            Log.e(LOG_TAG, msg);
+        }
+
+        @Override
+        public boolean onOptionsItemSelected(MenuItem item) {
+            final int itemId = item.getItemId();
+            if (itemId == android.R.id.home) {  // See ActionBar#setDisplayHomeAsUpEnabled()
+                // Commenting out "logical up" capability. This is a workaround for issue 5278083.
+                //
+                // Settings app may not launch this activity via UP_ACTIVITY_CLASS but the other
+                // Activity that looks exactly same as UP_ACTIVITY_CLASS ("SubSettings" Activity).
+                // At that moment, this Activity launches UP_ACTIVITY_CLASS on top of the Activity.
+                // which confuses users.
+                // TODO: introduce better mechanism for "up" capability here.
             /*Intent intent = new Intent(Intent.ACTION_MAIN);
             intent.setClassName(UP_ACTIVITY_PACKAGE, UP_ACTIVITY_CLASS);
             intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
             startActivity(intent);*/
-            finish();
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    private boolean isWorldMode() {
-        boolean worldModeOn = false;
-        final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-        final String configString = getResources().getString(R.string.config_world_mode);
-
-        if (!TextUtils.isEmpty(configString)) {
-            String[] configArray = configString.split(";");
-            // Check if we have World mode configuration set to True only or config is set to True
-            // and SIM GID value is also set and matches to the current SIM GID.
-            if (configArray != null &&
-                   ((configArray.length == 1 && configArray[0].equalsIgnoreCase("true")) ||
-                       (configArray.length == 2 && !TextUtils.isEmpty(configArray[1]) &&
-                           tm != null && configArray[1].equalsIgnoreCase(tm.getGroupIdLevel1())))) {
-                               worldModeOn = true;
-            }
-        }
-
-        if (DBG) {
-            log("isWorldMode=" + worldModeOn);
-        }
-
-        return worldModeOn;
-    }
-
-    private void controlGsmOptions(boolean enable) {
-        PreferenceScreen prefSet = getPreferenceScreen();
-        if (prefSet == null) {
-            return;
-        }
-
-        if (mGsmUmtsOptions == null) {
-            mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, mPhone.getSubId());
-        }
-        PreferenceScreen apnExpand =
-                (PreferenceScreen) prefSet.findPreference(BUTTON_APN_EXPAND_KEY);
-        PreferenceScreen operatorSelectionExpand =
-                (PreferenceScreen) prefSet.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
-        PreferenceScreen carrierSettings =
-                (PreferenceScreen) prefSet.findPreference(BUTTON_CARRIER_SETTINGS_KEY);
-        if (apnExpand != null) {
-            apnExpand.setEnabled(isWorldMode() || enable);
-        }
-        if (operatorSelectionExpand != null) {
-            if (enable) {
-                operatorSelectionExpand.setEnabled(true);
-            } else {
-                prefSet.removePreference(operatorSelectionExpand);
-            }
-        }
-        if (carrierSettings != null) {
-            prefSet.removePreference(carrierSettings);
-        }
-    }
-
-    private void controlCdmaOptions(boolean enable) {
-        PreferenceScreen prefSet = getPreferenceScreen();
-        if (prefSet == null) {
-            return;
-        }
-        if (enable && mCdmaOptions == null) {
-            mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
-        }
-        CdmaSystemSelectListPreference systemSelect =
-                (CdmaSystemSelectListPreference)prefSet.findPreference
-                        (BUTTON_CDMA_SYSTEM_SELECT_KEY);
-        if (systemSelect != null) {
-            systemSelect.setEnabled(enable);
-        }
-    }
-
-    private boolean isSupportTdscdma() {
-        if (getResources().getBoolean(R.bool.config_support_tdscdma)) {
-            return true;
-        }
-
-        String operatorNumeric = mPhone.getServiceState().getOperatorNumeric();
-        String[] numericArray = getResources().getStringArray(
-                R.array.config_support_tdscdma_roaming_on_networks);
-        if (numericArray.length == 0 || operatorNumeric == null) {
-            return false;
-        }
-        for (String numeric : numericArray) {
-            if (operatorNumeric.equals(numeric)) {
+                getActivity().finish();
                 return true;
             }
+            return super.onOptionsItemSelected(item);
         }
-        return false;
+
+        private boolean isWorldMode() {
+            boolean worldModeOn = false;
+            final TelephonyManager tm =
+                    (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+            final String configString = getResources().getString(R.string.config_world_mode);
+
+            if (!TextUtils.isEmpty(configString)) {
+                String[] configArray = configString.split(";");
+                // Check if we have World mode configuration set to True only or config is set to True
+                // and SIM GID value is also set and matches to the current SIM GID.
+                if (configArray != null &&
+                        ((configArray.length == 1 && configArray[0].equalsIgnoreCase("true"))
+                                || (configArray.length == 2 && !TextUtils.isEmpty(configArray[1])
+                                && tm != null
+                                && configArray[1].equalsIgnoreCase(tm.getGroupIdLevel1())))) {
+                    worldModeOn = true;
+                }
+            }
+
+            Log.d(LOG_TAG, "isWorldMode=" + worldModeOn);
+
+            return worldModeOn;
+        }
+
+        private void controlGsmOptions(boolean enable) {
+            PreferenceScreen prefSet = getPreferenceScreen();
+            if (prefSet == null) {
+                return;
+            }
+
+            if (mGsmUmtsOptions == null) {
+                mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet, mPhone.getSubId());
+            }
+            PreferenceScreen apnExpand =
+                    (PreferenceScreen) prefSet.findPreference(BUTTON_APN_EXPAND_KEY);
+            PreferenceScreen operatorSelectionExpand =
+                    (PreferenceScreen) prefSet.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
+            PreferenceScreen carrierSettings =
+                    (PreferenceScreen) prefSet.findPreference(BUTTON_CARRIER_SETTINGS_KEY);
+            if (apnExpand != null) {
+                apnExpand.setEnabled(isWorldMode() || enable);
+            }
+            if (operatorSelectionExpand != null) {
+                if (enable) {
+                    operatorSelectionExpand.setEnabled(true);
+                } else {
+                    prefSet.removePreference(operatorSelectionExpand);
+                }
+            }
+            if (carrierSettings != null) {
+                prefSet.removePreference(carrierSettings);
+            }
+        }
+
+        private void controlCdmaOptions(boolean enable) {
+            PreferenceScreen prefSet = getPreferenceScreen();
+            if (prefSet == null) {
+                return;
+            }
+            if (enable && mCdmaOptions == null) {
+                mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
+            }
+            CdmaSystemSelectListPreference systemSelect =
+                    (CdmaSystemSelectListPreference)prefSet.findPreference
+                            (BUTTON_CDMA_SYSTEM_SELECT_KEY);
+            if (systemSelect != null) {
+                systemSelect.setEnabled(enable);
+            }
+        }
+
+        private boolean isSupportTdscdma() {
+            if (getResources().getBoolean(R.bool.config_support_tdscdma)) {
+                return true;
+            }
+
+            String operatorNumeric = mPhone.getServiceState().getOperatorNumeric();
+            String[] numericArray = getResources().getStringArray(
+                    R.array.config_support_tdscdma_roaming_on_networks);
+            if (numericArray.length == 0 || operatorNumeric == null) {
+                return false;
+            }
+            for (String numeric : numericArray) {
+                if (operatorNumeric.equals(numeric)) {
+                    return true;
+                }
+            }
+            return false;
+        }
     }
 }
+
diff --git a/src/com/android/phone/common/mail/BodyPart.java b/src/com/android/phone/NeededForTesting.java
similarity index 65%
rename from src/com/android/phone/common/mail/BodyPart.java
rename to src/com/android/phone/NeededForTesting.java
index 78140c8..576598b 100644
--- a/src/com/android/phone/common/mail/BodyPart.java
+++ b/src/com/android/phone/NeededForTesting.java
@@ -1,24 +1,25 @@
-/*

- * Copyright (C) 2015 The Android Open Source Project

- *

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package com.android.phone.common.mail;

-

-public abstract class BodyPart implements Part {

-    protected Multipart mParent;

-

-    public Multipart getParent() {

-        return mParent;

-    }

-}

+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.SOURCE)
+public @interface NeededForTesting {
+
+}
diff --git a/src/com/android/phone/NetworkSetting.java b/src/com/android/phone/NetworkSetting.java
index a08bd40..72ad513 100644
--- a/src/com/android/phone/NetworkSetting.java
+++ b/src/com/android/phone/NetworkSetting.java
@@ -34,6 +34,8 @@
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 import android.telephony.SubscriptionManager;
@@ -159,8 +161,6 @@
         public void onServiceConnected(ComponentName className, IBinder service) {
             if (DBG) log("connection created, binding local service.");
             mNetworkQueryService = ((NetworkQueryService.LocalBinder) service).getService();
-            // as soon as it is bound, run a query.
-            loadNetworksList();
         }
 
         /** Handle the task of cleaning up the local binding */
@@ -388,6 +388,15 @@
         final PhoneGlobals app = PhoneGlobals.getInstance();
         app.notificationMgr.postTransientNotification(
                 NotificationMgr.NETWORK_SELECTION_NOTIFICATION, status);
+
+        TelephonyManager tm = (TelephonyManager) app.getSystemService(Context.TELEPHONY_SERVICE);
+        Phone phone = PhoneFactory.getPhone(mPhoneId);
+        if (phone != null) {
+            ServiceState ss = tm.getServiceStateForSubscriber(phone.getSubId());
+            if (ss != null) {
+                app.notificationMgr.updateNetworkSelection(ss.getState(), phone.getSubId());
+            }
+        }
     }
 
     private void displayNetworkSelectionSucceeded() {
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index 100a38c..31bca92 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -16,6 +16,8 @@
 
 package com.android.phone;
 
+import static android.Manifest.permission.READ_PHONE_STATE;
+
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -24,6 +26,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
 import android.net.Uri;
@@ -33,7 +36,7 @@
 import android.os.UserManager;
 import android.preference.PreferenceManager;
 import android.provider.ContactsContract.PhoneLookup;
-import android.provider.Settings;
+import android.telecom.DefaultDialerManager;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -42,6 +45,7 @@
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.ArrayMap;
@@ -49,16 +53,13 @@
 import android.widget.Toast;
 
 import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneBase;
+import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.TelephonyCapabilities;
+import com.android.internal.telephony.util.NotificationChannelController;
 import com.android.phone.settings.VoicemailSettingsActivity;
-import com.android.phone.vvm.omtp.sync.VoicemailStatusQueryHelper;
-import com.android.phone.settings.VoicemailNotificationSettingsUtil;
-import com.android.phone.settings.VoicemailProviderSettingsUtil;
 
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 /**
@@ -77,6 +78,18 @@
     // Do not check in with VDBG = true, since that may write PII to the system log.
     private static final boolean VDBG = false;
 
+    private static final String MWI_SHOULD_CHECK_VVM_CONFIGURATION_KEY_PREFIX =
+            "mwi_should_check_vvm_configuration_state_";
+
+    /**
+     * Boolean value representing whether the {@link
+     * TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION} is new or a refresh of an existing
+     * notification.
+     *
+     * TODO(b/62202833): make public
+     */
+    private static final String EXTRA_IS_REFRESH = "is_refresh";
+
     // notification types
     static final int MMI_NOTIFICATION = 1;
     static final int NETWORK_SELECTION_NOTIFICATION = 2;
@@ -89,11 +102,9 @@
     private static NotificationMgr sInstance;
 
     private PhoneGlobals mApp;
-    private Phone mPhone;
 
     private Context mContext;
     private NotificationManager mNotificationManager;
-    private final ComponentName mNotificationComponent;
     private StatusBarManager mStatusBarManager;
     private UserManager mUserManager;
     private Toast mToast;
@@ -101,8 +112,6 @@
     private TelecomManager mTelecomManager;
     private TelephonyManager mTelephonyManager;
 
-    public StatusBarHelper statusBarHelper;
-
     // used to track the notification of selected network unavailable
     private boolean mSelectedUnavailableNotify = false;
 
@@ -121,17 +130,30 @@
         mStatusBarManager =
                 (StatusBarManager) app.getSystemService(Context.STATUS_BAR_SERVICE);
         mUserManager = (UserManager) app.getSystemService(Context.USER_SERVICE);
-        mPhone = app.mCM.getDefaultPhone();
-        statusBarHelper = new StatusBarHelper();
         mSubscriptionManager = SubscriptionManager.from(mContext);
         mTelecomManager = TelecomManager.from(mContext);
         mTelephonyManager = (TelephonyManager) app.getSystemService(Context.TELEPHONY_SERVICE);
 
-        final String notificationComponent = mContext.getString(
-                R.string.config_customVoicemailComponent);
+        mSubscriptionManager.addOnSubscriptionsChangedListener(
+                new OnSubscriptionsChangedListener() {
+                    @Override
+                    public void onSubscriptionsChanged() {
+                        updateActivePhonesMwi();
+                    }
+                });
+    }
 
-        mNotificationComponent = notificationComponent != null
-                ? ComponentName.unflattenFromString(notificationComponent) : null;
+    public void updateActivePhonesMwi() {
+        List<SubscriptionInfo> subInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
+
+        if (subInfos == null) {
+            return;
+        }
+
+        for (int i = 0; i < subInfos.size(); i++) {
+            int subId = subInfos.get(i).getSubscriptionId();
+            refreshMwi(subId);
+        }
     }
 
     /**
@@ -153,101 +175,6 @@
         }
     }
 
-    /**
-     * Helper class that's a wrapper around the framework's
-     * StatusBarManager.disable() API.
-     *
-     * This class is used to control features like:
-     *
-     *   - Disabling the status bar "notification windowshade"
-     *     while the in-call UI is up
-     *
-     *   - Disabling notification alerts (audible or vibrating)
-     *     while a phone call is active
-     *
-     *   - Disabling navigation via the system bar (the "soft buttons" at
-     *     the bottom of the screen on devices with no hard buttons)
-     *
-     * We control these features through a single point of control to make
-     * sure that the various StatusBarManager.disable() calls don't
-     * interfere with each other.
-     */
-    public class StatusBarHelper {
-        // Current desired state of status bar / system bar behavior
-        private boolean mIsNotificationEnabled = true;
-        private boolean mIsExpandedViewEnabled = true;
-        private boolean mIsSystemBarNavigationEnabled = true;
-
-        private StatusBarHelper() {
-        }
-
-        /**
-         * Enables or disables auditory / vibrational alerts.
-         *
-         * (We disable these any time a voice call is active, regardless
-         * of whether or not the in-call UI is visible.)
-         */
-        public void enableNotificationAlerts(boolean enable) {
-            if (mIsNotificationEnabled != enable) {
-                mIsNotificationEnabled = enable;
-                updateStatusBar();
-            }
-        }
-
-        /**
-         * Enables or disables the expanded view of the status bar
-         * (i.e. the ability to pull down the "notification windowshade").
-         *
-         * (This feature is disabled by the InCallScreen while the in-call
-         * UI is active.)
-         */
-        public void enableExpandedView(boolean enable) {
-            if (mIsExpandedViewEnabled != enable) {
-                mIsExpandedViewEnabled = enable;
-                updateStatusBar();
-            }
-        }
-
-        /**
-         * Enables or disables the navigation via the system bar (the
-         * "soft buttons" at the bottom of the screen)
-         *
-         * (This feature is disabled while an incoming call is ringing,
-         * because it's easy to accidentally touch the system bar while
-         * pulling the phone out of your pocket.)
-         */
-        public void enableSystemBarNavigation(boolean enable) {
-            if (mIsSystemBarNavigationEnabled != enable) {
-                mIsSystemBarNavigationEnabled = enable;
-                updateStatusBar();
-            }
-        }
-
-        /**
-         * Updates the status bar to reflect the current desired state.
-         */
-        private void updateStatusBar() {
-            int state = StatusBarManager.DISABLE_NONE;
-
-            if (!mIsExpandedViewEnabled) {
-                state |= StatusBarManager.DISABLE_EXPAND;
-            }
-            if (!mIsNotificationEnabled) {
-                state |= StatusBarManager.DISABLE_NOTIFICATION_ALERTS;
-            }
-            if (!mIsSystemBarNavigationEnabled) {
-                // Disable *all* possible navigation via the system bar.
-                state |= StatusBarManager.DISABLE_HOME;
-                state |= StatusBarManager.DISABLE_RECENT;
-                state |= StatusBarManager.DISABLE_BACK;
-                state |= StatusBarManager.DISABLE_SEARCH;
-            }
-
-            if (DBG) log("updateStatusBar: state = 0x" + Integer.toHexString(state));
-            mStatusBarManager.disable(state);
-        }
-    }
-
     /** The projection to use when querying the phones table */
     static final String[] PHONES_PROJECTION = new String[] {
         PhoneLookup.NUMBER,
@@ -278,18 +205,39 @@
         if (mMwiVisible.containsKey(subId)) {
             boolean mwiVisible = mMwiVisible.get(subId);
             if (mwiVisible) {
-                updateMwi(subId, mwiVisible, false /* enableNotificationSound */);
+                updateMwi(subId, mwiVisible, true /* isRefresh */);
             }
         }
     }
 
+    public void setShouldCheckVisualVoicemailConfigurationForMwi(int subId, boolean enabled) {
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+            Log.e(LOG_TAG, "setShouldCheckVisualVoicemailConfigurationForMwi: invalid subId"
+                    + subId);
+            return;
+        }
+
+        PreferenceManager.getDefaultSharedPreferences(mContext).edit()
+                .putBoolean(MWI_SHOULD_CHECK_VVM_CONFIGURATION_KEY_PREFIX + subId, enabled)
+                .apply();
+    }
+
+    private boolean shouldCheckVisualVoicemailConfigurationForMwi(int subId) {
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+            Log.e(LOG_TAG, "shouldCheckVisualVoicemailConfigurationForMwi: invalid subId" + subId);
+            return true;
+        }
+        return PreferenceManager
+                .getDefaultSharedPreferences(mContext)
+                .getBoolean(MWI_SHOULD_CHECK_VVM_CONFIGURATION_KEY_PREFIX + subId, true);
+    }
     /**
      * Updates the message waiting indicator (voicemail) notification.
      *
      * @param visible true if there are messages waiting
      */
     /* package */ void updateMwi(int subId, boolean visible) {
-        updateMwi(subId, visible, true /* enableNotificationSound */);
+        updateMwi(subId, visible, false /* isRefresh */);
     }
 
     /**
@@ -297,9 +245,10 @@
      *
      * @param subId the subId to update.
      * @param visible true if there are messages waiting
-     * @param enableNotificationSound {@code true} if the notification sound should be played.
+     * @param isRefresh {@code true} if the notification is a refresh and the user should not be
+     * notified again.
      */
-    void updateMwi(int subId, boolean visible, boolean enableNotificationSound) {
+    void updateMwi(int subId, boolean visible, boolean isRefresh) {
         if (!PhoneGlobals.sVoiceCapable) {
             // Do not show the message waiting indicator on devices which are not voice capable.
             // These events *should* be blocked at the telephony layer for such devices.
@@ -308,15 +257,6 @@
         }
 
         Phone phone = PhoneGlobals.getPhone(subId);
-        if (visible && phone != null) {
-            VoicemailStatusQueryHelper queryHelper = new VoicemailStatusQueryHelper(mContext);
-            PhoneAccountHandle phoneAccount = PhoneUtils.makePstnPhoneAccountHandle(phone);
-            if (queryHelper.isNotificationsChannelActive(phoneAccount)) {
-                Log.v(LOG_TAG, "Notifications channel active for visual voicemail, hiding mwi.");
-                visible = false;
-            }
-        }
-
         Log.i(LOG_TAG, "updateMwi(): subId " + subId + " update to " + visible);
         mMwiVisible.put(subId, visible);
 
@@ -401,15 +341,10 @@
 
             PendingIntent pendingIntent =
                     PendingIntent.getActivity(mContext, subId /* requestCode */, intent, 0);
-            Uri ringtoneUri = null;
-
-            if (enableNotificationSound) {
-                ringtoneUri = VoicemailNotificationSettingsUtil.getRingtoneUri(mPhone);
-            }
 
             Resources res = mContext.getResources();
             PersistableBundle carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(
-                    mPhone.getSubId());
+                    subId);
             Notification.Builder builder = new Notification.Builder(mContext);
             builder.setSmallIcon(resId)
                     .setWhen(System.currentTimeMillis())
@@ -417,14 +352,11 @@
                     .setContentTitle(notificationTitle)
                     .setContentText(notificationText)
                     .setContentIntent(pendingIntent)
-                    .setSound(ringtoneUri)
                     .setColor(res.getColor(R.color.dialer_theme_color))
                     .setOngoing(carrierConfig.getBoolean(
-                            CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL));
-
-            if (VoicemailNotificationSettingsUtil.isVibrationEnabled(phone)) {
-                builder.setDefaults(Notification.DEFAULT_VIBRATE);
-            }
+                            CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL))
+                    .setChannel(NotificationChannelController.CHANNEL_ID_VOICE_MAIL)
+                    .setOnlyAlertOnce(isRefresh);
 
             final Notification notification = builder.build();
             List<UserInfo> users = mUserManager.getUsers(true);
@@ -434,8 +366,8 @@
                 if (!mUserManager.hasUserRestriction(
                         UserManager.DISALLOW_OUTGOING_CALLS, userHandle)
                         && !user.isManagedProfile()) {
-                    if (!sendNotificationCustomComponent(vmCount, vmNumber, pendingIntent,
-                            isSettingsIntent)) {
+                    if (!maybeSendVoicemailNotificationUsingDefaultDialer(phone, vmCount, vmNumber,
+                            pendingIntent, isSettingsIntent, userHandle, isRefresh)) {
                         mNotificationManager.notifyAsUser(
                                 Integer.toString(subId) /* tag */,
                                 VOICEMAIL_NOTIFICATION,
@@ -445,36 +377,52 @@
                 }
             }
         } else {
-            if (!sendNotificationCustomComponent(0, null, null, false)) {
-                mNotificationManager.cancelAsUser(
-                        Integer.toString(subId) /* tag */,
-                        VOICEMAIL_NOTIFICATION,
-                        UserHandle.ALL);
+            List<UserInfo> users = mUserManager.getUsers(true /* excludeDying */);
+            for (int i = 0; i < users.size(); i++) {
+                final UserInfo user = users.get(i);
+                final UserHandle userHandle = user.getUserHandle();
+                if (!mUserManager.hasUserRestriction(
+                        UserManager.DISALLOW_OUTGOING_CALLS, userHandle)
+                        && !user.isManagedProfile()) {
+                    if (!maybeSendVoicemailNotificationUsingDefaultDialer(phone, 0, null, null,
+                            false, userHandle, isRefresh)) {
+                        mNotificationManager.cancelAsUser(
+                                Integer.toString(subId) /* tag */,
+                                VOICEMAIL_NOTIFICATION,
+                                userHandle);
+                    }
+                }
             }
         }
     }
 
     /**
-     * Sends a broadcast with the voicemail notification information to a custom component to
-     * handle. This method is also used to indicate to the custom component when to clear the
-     * notification. A pending intent can be passed to the custom component to indicate an action to
+     * Sends a broadcast with the voicemail notification information to the default dialer. This
+     * method is also used to indicate to the default dialer when to clear the
+     * notification. A pending intent can be passed to the default dialer to indicate an action to
      * be taken as it would by a notification produced in this class.
+     * @param phone The phone the notification is sent from
      * @param count The number of pending voicemail messages to indicate on the notification. A
      *              Value of 0 is passed here to indicate that the notification should be cleared.
      * @param number The voicemail phone number if specified.
      * @param pendingIntent The intent that should be passed as the action to be taken.
      * @param isSettingsIntent {@code true} to indicate the pending intent is to launch settings.
      *                         otherwise, {@code false} to indicate the intent launches voicemail.
-     * @return {@code true} if a custom component was notified of the notification.
+     * @param userHandle The user to receive the notification. Each user can have their own default
+     *                   dialer.
+     * @return {@code true} if the default was notified of the notification.
      */
-    private boolean sendNotificationCustomComponent(Integer count, String number,
-            PendingIntent pendingIntent, boolean isSettingsIntent) {
-        if (mNotificationComponent != null) {
-            Intent intent = new Intent();
-            intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-            intent.setComponent(mNotificationComponent);
-            intent.setAction(TelephonyManager.ACTION_SHOW_VOICEMAIL_NOTIFICATION);
+    private boolean maybeSendVoicemailNotificationUsingDefaultDialer(Phone phone, Integer count,
+            String number, PendingIntent pendingIntent, boolean isSettingsIntent,
+            UserHandle userHandle, boolean isRefresh) {
 
+        if (shouldManageNotificationThroughDefaultDialer(userHandle)) {
+            Intent intent = getShowVoicemailIntentForDefaultDialer(userHandle);
+            intent.setFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+            intent.setAction(TelephonyManager.ACTION_SHOW_VOICEMAIL_NOTIFICATION);
+            intent.putExtra(TelephonyManager.EXTRA_PHONE_ACCOUNT_HANDLE,
+                    PhoneUtils.makePstnPhoneAccountHandle(phone));
+            intent.putExtra(EXTRA_IS_REFRESH, isRefresh);
             if (count != null) {
                 intent.putExtra(TelephonyManager.EXTRA_NOTIFICATION_COUNT, count);
             }
@@ -494,14 +442,31 @@
                             pendingIntent);
                 }
             }
-
-            mContext.sendBroadcast(intent);
+            mContext.sendBroadcastAsUser(intent, userHandle, READ_PHONE_STATE);
             return true;
         }
 
         return false;
     }
 
+    private Intent getShowVoicemailIntentForDefaultDialer(UserHandle userHandle) {
+        String dialerPackage = DefaultDialerManager
+                .getDefaultDialerApplication(mContext, userHandle.getIdentifier());
+        return new Intent(TelephonyManager.ACTION_SHOW_VOICEMAIL_NOTIFICATION)
+                .setPackage(dialerPackage);
+    }
+
+    private boolean shouldManageNotificationThroughDefaultDialer(UserHandle userHandle) {
+        Intent intent = getShowVoicemailIntentForDefaultDialer(userHandle);
+        if (intent == null) {
+            return false;
+        }
+
+        List<ResolveInfo> receivers = mContext.getPackageManager()
+                .queryBroadcastReceivers(intent, 0);
+        return receivers.size() > 0;
+    }
+
     /**
      * Updates the message call forwarding indicator notification.
      *
@@ -540,7 +505,8 @@
                     .setContentTitle(notificationTitle)
                     .setContentText(mContext.getString(R.string.sum_cfu_enabled_indicator))
                     .setShowWhen(false)
-                    .setOngoing(true);
+                    .setOngoing(true)
+                    .setChannel(NotificationChannelController.CHANNEL_ID_CALL_FORWARD);
 
             Intent intent = new Intent(Intent.ACTION_MAIN);
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -557,7 +523,7 @@
                     continue;
                 }
                 UserHandle userHandle = user.getUserHandle();
-                builder.setContentIntent(userHandle.isOwner() ? contentIntent : null);
+                builder.setContentIntent(user.isAdmin() ? contentIntent : null);
                 mNotificationManager.notifyAsUser(
                         Integer.toString(subId) /* tag */,
                         CALL_FORWARD_NOTIFICATION,
@@ -590,7 +556,8 @@
                 .setSmallIcon(android.R.drawable.stat_sys_warning)
                 .setContentTitle(mContext.getText(R.string.roaming))
                 .setColor(mContext.getResources().getColor(R.color.dialer_theme_color))
-                .setContentText(contentText);
+                .setContentText(contentText)
+                .setChannel(NotificationChannelController.CHANNEL_ID_MOBILE_DATA_ALERT);
 
         List<UserInfo> users = mUserManager.getUsers(true);
         for (int i = 0; i < users.size(); i++) {
@@ -599,7 +566,7 @@
                 continue;
             }
             UserHandle userHandle = user.getUserHandle();
-            builder.setContentIntent(userHandle.isOwner() ? contentIntent : null);
+            builder.setContentIntent(user.isAdmin() ? contentIntent : null);
             final Notification notif =
                     new Notification.BigTextStyle(builder).bigText(contentText).build();
             mNotificationManager.notifyAsUser(
@@ -618,8 +585,9 @@
     /**
      * Display the network selection "no service" notification
      * @param operator is the numeric operator number
+     * @param subId is the subscription ID
      */
-    private void showNetworkSelection(String operator) {
+    private void showNetworkSelection(String operator, int subId) {
         if (DBG) log("showNetworkSelection(" + operator + ")...");
 
         Notification.Builder builder = new Notification.Builder(mContext)
@@ -628,7 +596,8 @@
                 .setContentText(
                         mContext.getString(R.string.notification_network_selection_text, operator))
                 .setShowWhen(false)
-                .setOngoing(true);
+                .setOngoing(true)
+                .setChannel(NotificationChannelController.CHANNEL_ID_ALERT);
 
         // create the target network operators settings intent
         Intent intent = new Intent(Intent.ACTION_MAIN);
@@ -638,7 +607,7 @@
         intent.setComponent(new ComponentName(
                 mContext.getString(R.string.network_operator_settings_package),
                 mContext.getString(R.string.network_operator_settings_class)));
-        intent.putExtra(GsmUmtsOptions.EXTRA_SUB_ID, mPhone.getSubId());
+        intent.putExtra(GsmUmtsOptions.EXTRA_SUB_ID, subId);
         PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
 
         List<UserInfo> users = mUserManager.getUsers(true);
@@ -648,7 +617,7 @@
                 continue;
             }
             UserHandle userHandle = user.getUserHandle();
-            builder.setContentIntent(userHandle.isOwner() ? contentIntent : null);
+            builder.setContentIntent(user.isAdmin() ? contentIntent : null);
             mNotificationManager.notifyAsUser(
                     null /* tag */,
                     SELECTED_OPERATOR_FAIL_NOTIFICATION,
@@ -670,10 +639,13 @@
      * Update notification about no service of user selected operator
      *
      * @param serviceState Phone service state
+     * @param subId The subscription ID
      */
-    void updateNetworkSelection(int serviceState) {
-        if (TelephonyCapabilities.supportsNetworkSelection(mPhone)) {
-            int subId = mPhone.getSubId();
+    void updateNetworkSelection(int serviceState, int subId) {
+        int phoneId = SubscriptionManager.getPhoneId(subId);
+        Phone phone = SubscriptionManager.isValidPhoneId(phoneId) ?
+                PhoneFactory.getPhone(phoneId) : PhoneFactory.getDefaultPhone();
+        if (TelephonyCapabilities.supportsNetworkSelection(phone)) {
             if (SubscriptionManager.isValidSubscriptionId(subId)) {
                 // get the shared preference of network_selection.
                 // empty is auto mode, otherwise it is the operator alpha name
@@ -681,10 +653,10 @@
                 SharedPreferences sp =
                         PreferenceManager.getDefaultSharedPreferences(mContext);
                 String networkSelection =
-                        sp.getString(PhoneBase.NETWORK_SELECTION_NAME_KEY + subId, "");
+                        sp.getString(Phone.NETWORK_SELECTION_NAME_KEY + subId, "");
                 if (TextUtils.isEmpty(networkSelection)) {
                     networkSelection =
-                            sp.getString(PhoneBase.NETWORK_SELECTION_KEY + subId, "");
+                            sp.getString(Phone.NETWORK_SELECTION_KEY + subId, "");
                 }
 
                 if (DBG) log("updateNetworkSelection()..." + "state = " +
@@ -692,10 +664,8 @@
 
                 if (serviceState == ServiceState.STATE_OUT_OF_SERVICE
                         && !TextUtils.isEmpty(networkSelection)) {
-                    if (!mSelectedUnavailableNotify) {
-                        showNetworkSelection(networkSelection);
-                        mSelectedUnavailableNotify = true;
-                    }
+                    showNetworkSelection(networkSelection, subId);
+                    mSelectedUnavailableNotify = true;
                 } else {
                     if (mSelectedUnavailableNotify) {
                         cancelNetworkSelection();
diff --git a/src/com/android/phone/OtaStartupReceiver.java b/src/com/android/phone/OtaStartupReceiver.java
deleted file mode 100644
index 09cb185..0000000
--- a/src/com/android/phone/OtaStartupReceiver.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
-import android.telephony.TelephonyManager;
-
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.ServiceStateTracker;
-import com.android.internal.telephony.TelephonyCapabilities;
-
-import android.util.Log;
-
-/*
- * Handles OTA Start procedure at phone power up. At phone power up, if phone is not OTA
- * provisioned (check MIN value of the Phone) and 'device_provisioned' is not set,
- * OTA Activation screen is shown that helps user activate the phone
- */
-public class OtaStartupReceiver extends BroadcastReceiver {
-    private static final String TAG = "OtaStartupReceiver";
-    private static final boolean DBG = false;
-    private static final int MIN_READY = 10;
-    private static final int SERVICE_STATE_CHANGED = 11;
-    private Context mContext;
-
-    private int mOtaspMode = -1;
-    private boolean mPhoneStateListenerRegistered = false;
-    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
-        @Override
-        public void onOtaspChanged(int otaspMode) {
-            if (mOtaspMode == otaspMode) {
-                return;
-            }
-            mOtaspMode = otaspMode;
-            Log.v(TAG, "onOtaspChanged: mOtaspMode=" + mOtaspMode);
-
-            if (otaspMode == ServiceStateTracker.OTASP_NEEDED) {
-                Log.i(TAG, "OTASP is needed - performing CDMA provisioning");
-                final Intent intent = new Intent(OtaUtils.ACTION_PERFORM_CDMA_PROVISIONING);
-                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                mContext.startActivity(intent);
-            }
-        }
-    };
-
-
-    private Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MIN_READY:
-                    Log.v(TAG, "Attempting OtaActivation from handler, mOtaspMode=" + mOtaspMode);
-                    OtaUtils.maybeDoOtaCall(mContext, mHandler, MIN_READY);
-                    break;
-                case SERVICE_STATE_CHANGED: {
-                    ServiceState state = (ServiceState) ((AsyncResult) msg.obj).result;
-                    if (DBG) Log.d(TAG, "onServiceStateChanged()...  new state = " + state);
-
-                    // Possible service states:
-                    // - STATE_IN_SERVICE        // Normal operation
-                    // - STATE_OUT_OF_SERVICE    // Still searching for an operator to register to,
-                    //                           // or no radio signal
-                    // - STATE_EMERGENCY_ONLY    // Phone is locked; only emergency numbers are allowed
-                    // - STATE_POWER_OFF         // Radio is explicitly powered off (airplane mode)
-
-                    // Once we reach STATE_IN_SERVICE
-                    // it's finally OK to start OTA provisioning
-                    if (state.getState() == ServiceState.STATE_IN_SERVICE) {
-                        if (DBG) Log.d(TAG, "call OtaUtils.maybeDoOtaCall after network is available");
-                        Phone phone = PhoneGlobals.getPhone();
-                        phone.unregisterForServiceStateChanged(this);
-                        OtaUtils.maybeDoOtaCall(mContext, mHandler, MIN_READY);
-                    }
-                    break;
-                }
-            }
-
-        }
-    };
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        mContext = context;
-        if (DBG) {
-            Log.v(TAG, "onReceive: intent action=" + intent.getAction() +
-                    "  mOtaspMode=" + mOtaspMode);
-        }
-
-        PhoneGlobals globals = PhoneGlobals.getInstanceIfPrimary();
-        if (globals == null) {
-            if (DBG) Log.d(TAG, "Not primary user, nothing to do.");
-            return;
-        }
-
-        if (mPhoneStateListenerRegistered == false) {
-            if (DBG) Log.d(TAG, "Register our PhoneStateListener");
-            TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(
-                    Context.TELEPHONY_SERVICE);
-            telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_OTASP_CHANGED);
-            mPhoneStateListenerRegistered = true;
-        } else {
-            if (DBG) Log.d(TAG, "PhoneStateListener already registered");
-        }
-
-        if (!TelephonyCapabilities.supportsOtasp(PhoneGlobals.getPhone())) {
-            if (DBG) Log.d(TAG, "OTASP not supported, nothing to do.");
-            return;
-        }
-
-        if (shouldPostpone(context)) {
-            if (DBG) Log.d(TAG, "Postponing OTASP until wizard runs");
-            return;
-        }
-
-        // Delay OTA provisioning if network is not available yet
-        PhoneGlobals app = PhoneGlobals.getInstance();
-        Phone phone = PhoneGlobals.getPhone();
-        if (app.mCM.getServiceState() != ServiceState.STATE_IN_SERVICE) {
-            if (DBG) Log.w(TAG, "Network is not ready. Registering to receive notification.");
-            phone.registerForServiceStateChanged(mHandler, SERVICE_STATE_CHANGED, null);
-            return;
-        }
-
-        // The following depends on the phone process being persistent. Normally we can't
-        // expect a BroadcastReceiver to persist after returning from this function but it does
-        // because the phone activity is persistent.
-        if (DBG) Log.d(TAG, "call OtaUtils.maybeDoOtaCall");
-        OtaUtils.maybeDoOtaCall(mContext, mHandler, MIN_READY);
-    }
-
-    /**
-     * On devices that provide a phone initialization wizard (such as Google Setup Wizard), we
-     * allow delaying CDMA OTA setup so it can be done in a single wizard. The wizard is responsible
-     * for (1) disabling itself once it has been run and/or (2) setting the 'device_provisioned'
-     * flag to something non-zero and (3) calling the OTA Setup with the action below.
-     *
-     * NB: Typical phone initialization wizards will install themselves as the homescreen
-     * (category "android.intent.category.HOME") with a priority higher than the default.
-     * The wizard should set 'device_provisioned' when it completes, disable itself with the
-     * PackageManager.setComponentEnabledSetting() and then start home screen.
-     *
-     * @return true if setup will be handled by wizard, false if it should be done now.
-     */
-    private boolean shouldPostpone(Context context) {
-        Intent intent = new Intent("android.intent.action.DEVICE_INITIALIZATION_WIZARD");
-        ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent,
-                PackageManager.MATCH_DEFAULT_ONLY);
-        boolean provisioned = Settings.Global.getInt(context.getContentResolver(),
-                Settings.Global.DEVICE_PROVISIONED, 0) != 0;
-        String mode = SystemProperties.get("ro.setupwizard.mode", "REQUIRED");
-        boolean runningSetupWizard = "REQUIRED".equals(mode) || "OPTIONAL".equals(mode);
-        if (DBG) {
-            Log.v(TAG, "resolvInfo = " + resolveInfo + ", provisioned = " + provisioned
-                    + ", runningSetupWizard = " + runningSetupWizard);
-        }
-        return resolveInfo != null && !provisioned && runningSetupWizard;
-    }
-}
diff --git a/src/com/android/phone/OtaUtils.java b/src/com/android/phone/OtaUtils.java
deleted file mode 100644
index 775b253..0000000
--- a/src/com/android/phone/OtaUtils.java
+++ /dev/null
@@ -1,1580 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.TelephonyCapabilities;
-import com.android.internal.telephony.TelephonyProperties;
-import com.android.phone.OtaUtils.CdmaOtaInCallScreenUiState.State;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.AlertDialog;
-import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.SystemClock;
-import android.os.SystemProperties;
-import android.os.UserHandle;
-import android.telecom.PhoneAccount;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-import android.widget.ToggleButton;
-
-/**
- * Handles all OTASP Call related logic and UI functionality.
- * The InCallScreen interacts with this class to perform an OTASP Call.
- *
- * OTASP is a CDMA-specific feature:
- *   OTA or OTASP == Over The Air service provisioning
- *   SPC == Service Programming Code
- *   TODO: Include pointer to more detailed documentation.
- *
- * TODO: This is Over The Air Service Provisioning (OTASP)
- *       A better name would be OtaspUtils.java.
- */
-public class OtaUtils {
-    private static final String LOG_TAG = "OtaUtils";
-    private static final boolean DBG = false;
-
-    public static final int OTA_SHOW_ACTIVATION_SCREEN_OFF = 0;
-    public static final int OTA_SHOW_ACTIVATION_SCREEN_ON = 1;
-    public static final int OTA_SHOW_LISTENING_SCREEN_OFF =0;
-    public static final int OTA_SHOW_LISTENING_SCREEN_ON =1;
-    public static final int OTA_SHOW_ACTIVATE_FAIL_COUNT_OFF = 0;
-    public static final int OTA_SHOW_ACTIVATE_FAIL_COUNT_THREE = 3;
-    public static final int OTA_PLAY_SUCCESS_FAILURE_TONE_OFF = 0;
-    public static final int OTA_PLAY_SUCCESS_FAILURE_TONE_ON = 1;
-
-    // SPC Timeout is 60 seconds
-    public final int OTA_SPC_TIMEOUT = 60;
-    public final int OTA_FAILURE_DIALOG_TIMEOUT = 2;
-
-    // Constants for OTASP-related Intents and intent extras.
-    // Watch out: these must agree with the corresponding constants in
-    // apps/SetupWizard!
-
-    // Intent action to launch an OTASP call.
-    public static final String ACTION_PERFORM_CDMA_PROVISIONING =
-           "com.android.phone.PERFORM_CDMA_PROVISIONING";
-
-    // Intent action to launch activation on a non-voice capable device
-    public static final String ACTION_PERFORM_VOICELESS_CDMA_PROVISIONING =
-            "com.android.phone.PERFORM_VOICELESS_CDMA_PROVISIONING";
-
-    // Intent action to display the InCallScreen in the OTASP "activation" state.
-    public static final String ACTION_DISPLAY_ACTIVATION_SCREEN =
-            "com.android.phone.DISPLAY_ACTIVATION_SCREEN";
-
-    // boolean voiceless provisioning extra that enables a "don't show this again" checkbox
-    // the user can check to never see the activity upon bootup again
-    public static final String EXTRA_VOICELESS_PROVISIONING_OFFER_DONTSHOW =
-            "com.android.phone.VOICELESS_PROVISIONING_OFFER_DONTSHOW";
-
-    // Activity result codes for the ACTION_PERFORM_CDMA_PROVISIONING intent
-    // (see the InCallScreenShowActivation activity.)
-    //
-    // Note: currently, our caller won't ever actually receive the
-    // RESULT_INTERACTIVE_OTASP_STARTED result code; see comments in
-    // InCallScreenShowActivation.onCreate() for details.
-
-    public static final int RESULT_INTERACTIVE_OTASP_STARTED = Activity.RESULT_FIRST_USER;
-    public static final int RESULT_NONINTERACTIVE_OTASP_STARTED = Activity.RESULT_FIRST_USER + 1;
-    public static final int RESULT_NONINTERACTIVE_OTASP_FAILED = Activity.RESULT_FIRST_USER + 2;
-
-    // Testing: Extra for the ACTION_PERFORM_CDMA_PROVISIONING intent that
-    // allows the caller to manually enable/disable "interactive mode" for
-    // the OTASP call.   Only available in userdebug or eng builds.
-    public static final String EXTRA_OVERRIDE_INTERACTIVE_MODE =
-            "ota_override_interactive_mode";
-
-    // Extra for the ACTION_PERFORM_CDMA_PROVISIONING intent, holding a
-    // PendingIntent which the phone app can use to send a result code
-    // back to the caller.
-    public static final String EXTRA_OTASP_RESULT_CODE_PENDING_INTENT =
-            "otasp_result_code_pending_intent";
-
-    // Extra attached to the above PendingIntent that indicates
-    // success or failure.
-    public static final String EXTRA_OTASP_RESULT_CODE = "otasp_result_code";
-
-    // Extra attached to the above PendingIntent that contains an error code.
-    public static final String EXTRA_OTASP_ERROR_CODE = "otasp_error_code";
-
-    public static final int OTASP_UNKNOWN = 0;
-    public static final int OTASP_USER_SKIPPED = 1;  // Only meaningful with interactive OTASP
-    public static final int OTASP_SUCCESS = 2;
-    public static final int OTASP_FAILURE = 3;
-    // failed due to CDMA_OTA_PROVISION_STATUS_SPC_RETRIES_EXCEEDED
-    public static final int OTASP_FAILURE_SPC_RETRIES = 4;
-    // TODO: Distinguish between interactive and non-interactive success
-    // and failure.  Then, have the PendingIntent be sent after
-    // interactive OTASP as well (so the caller can find out definitively
-    // when interactive OTASP completes.)
-
-    private static final String OTASP_NUMBER = "*228";
-    private static final String OTASP_NUMBER_NON_INTERACTIVE = "*22899";
-
-    private Context mContext;
-    private PhoneGlobals mApplication;
-    private OtaWidgetData mOtaWidgetData;
-
-    private static boolean sIsWizardMode = true;
-
-    // How many times do we retry maybeDoOtaCall() if the LTE state is not known yet,
-    // and how long do we wait between retries
-    private static final int OTA_CALL_LTE_RETRIES_MAX = 5;
-    private static final int OTA_CALL_LTE_RETRY_PERIOD = 3000;
-    private static int sOtaCallLteRetries = 0;
-
-    // In "interactive mode", the OtaUtils object is tied to an
-    // InCallScreen instance, where we display a bunch of UI specific to
-    // the OTASP call.  But on devices that are not "voice capable", the
-    // OTASP call runs in a non-interactive mode, and we don't have
-    // an InCallScreen or CallCard or any OTASP UI elements at all.
-    private boolean mInteractive = true;
-
-    /**
-     * OtaWidgetData class represent all OTA UI elements
-     *
-     * TODO(OTASP): It's really ugly for the OtaUtils object to reach into the
-     *     InCallScreen like this and directly manipulate its widgets.
-     *
-     *     Instead, the model/view separation should be more clear: OtaUtils
-     *     should only know about a higher-level abstraction of the
-     *     OTASP-specific UI state (just like how the CallController uses the
-     *     InCallUiState object), and the InCallScreen itself should translate
-     *     that higher-level abstraction into actual onscreen views and widgets.
-     */
-    private class OtaWidgetData {
-        public Button otaEndButton;
-        public Button otaActivateButton;
-        public Button otaSkipButton;
-        public Button otaNextButton;
-        public ToggleButton otaSpeakerButton;
-        public ViewGroup otaUpperWidgets;
-        public View callCardOtaButtonsFailSuccess;
-        public ProgressBar otaTextProgressBar;
-        public TextView otaTextSuccessFail;
-        public View callCardOtaButtonsActivate;
-        public View callCardOtaButtonsListenProgress;
-        public TextView otaTextActivate;
-        public TextView otaTextListenProgress;
-        public AlertDialog spcErrorDialog;
-        public AlertDialog otaFailureDialog;
-        public AlertDialog otaSkipConfirmationDialog;
-        public TextView otaTitle;
-        public Button otaTryAgainButton;
-    }
-
-    /**
-     * OtaUtils constructor.
-     *
-     * @param context the Context of the calling Activity or Application
-     * @param interactive if true, use the InCallScreen to display the progress
-     *                    and result of the OTASP call.  In practice this is
-     *                    true IFF the current device is a voice-capable phone.
-     *
-     * Note if interactive is true, you must also call updateUiWidgets() as soon
-     * as the InCallScreen instance is ready.
-     */
-    public OtaUtils(Context context, boolean interactive) {
-        if (DBG) log("OtaUtils constructor...");
-        mApplication = PhoneGlobals.getInstance();
-        mContext = context;
-        mInteractive = interactive;
-    }
-
-    /**
-     * Starts the OTA provisioning call.  If the MIN isn't available yet, it returns false and adds
-     * an event to return the request to the calling app when it becomes available.
-     *
-     * @param context
-     * @param handler
-     * @param request
-     * @return true if we were able to launch Ota activity or it's not required; false otherwise
-     */
-    public static boolean maybeDoOtaCall(Context context, Handler handler, int request) {
-        PhoneGlobals app = PhoneGlobals.getInstance();
-        Phone phone = PhoneGlobals.getPhone();
-
-        if (ActivityManager.isRunningInTestHarness()) {
-            Log.i(LOG_TAG, "Don't run provisioning when in test harness");
-            return true;
-        }
-
-        if (!TelephonyCapabilities.supportsOtasp(phone)) {
-            // Presumably not a CDMA phone.
-            if (DBG) log("maybeDoOtaCall: OTASP not supported on this device");
-            return true;  // Nothing to do here.
-        }
-
-        if (!phone.isMinInfoReady()) {
-            if (DBG) log("MIN is not ready. Registering to receive notification.");
-            phone.registerForSubscriptionInfoReady(handler, request, null);
-            return false;
-        }
-        phone.unregisterForSubscriptionInfoReady(handler);
-
-        if (getLteOnCdmaMode(context) == PhoneConstants.LTE_ON_CDMA_UNKNOWN) {
-            if (sOtaCallLteRetries < OTA_CALL_LTE_RETRIES_MAX) {
-                if (DBG) log("maybeDoOtaCall: LTE state still unknown: retrying");
-                handler.sendEmptyMessageDelayed(request, OTA_CALL_LTE_RETRY_PERIOD);
-                sOtaCallLteRetries++;
-                return false;
-            } else {
-                Log.w(LOG_TAG, "maybeDoOtaCall: LTE state still unknown: giving up");
-                return true;
-            }
-        }
-
-        boolean phoneNeedsActivation = phone.needsOtaServiceProvisioning();
-        if (DBG) log("phoneNeedsActivation is set to " + phoneNeedsActivation);
-
-        int otaShowActivationScreen = context.getResources().getInteger(
-                R.integer.OtaShowActivationScreen);
-        if (DBG) log("otaShowActivationScreen: " + otaShowActivationScreen);
-
-        // Run the OTASP call in "interactive" mode only if
-        // this is a non-LTE "voice capable" device.
-        if (PhoneGlobals.sVoiceCapable && getLteOnCdmaMode(context) == PhoneConstants.LTE_ON_CDMA_FALSE) {
-            if (phoneNeedsActivation
-                    && (otaShowActivationScreen == OTA_SHOW_ACTIVATION_SCREEN_ON)) {
-                app.cdmaOtaProvisionData.isOtaCallIntentProcessed = false;
-                sIsWizardMode = false;
-
-                if (DBG) Log.d(LOG_TAG, "==> Starting interactive CDMA provisioning...");
-                OtaUtils.startInteractiveOtasp(context);
-
-                if (DBG) log("maybeDoOtaCall: voice capable; activation started.");
-            } else {
-                if (DBG) log("maybeDoOtaCall: voice capable; activation NOT started.");
-            }
-        } else {
-            if (phoneNeedsActivation) {
-                app.cdmaOtaProvisionData.isOtaCallIntentProcessed = false;
-                Intent newIntent = new Intent(ACTION_PERFORM_VOICELESS_CDMA_PROVISIONING);
-                newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                newIntent.putExtra(EXTRA_VOICELESS_PROVISIONING_OFFER_DONTSHOW, true);
-                try {
-                    context.startActivity(newIntent);
-                } catch (ActivityNotFoundException e) {
-                    loge("No activity Handling PERFORM_VOICELESS_CDMA_PROVISIONING!");
-                    return false;
-                }
-                if (DBG) log("maybeDoOtaCall: non-interactive; activation intent sent.");
-            } else {
-                if (DBG) log("maybeDoOtaCall: non-interactive, no need for OTASP.");
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Starts a normal "interactive" OTASP call (i.e. CDMA activation
-     * for regular voice-capable phone devices.)
-     *
-     * This method is called from the InCallScreenShowActivation activity when
-     * handling the ACTION_PERFORM_CDMA_PROVISIONING intent.
-     */
-    public static void startInteractiveOtasp(Context context) {
-        if (DBG) log("startInteractiveOtasp()...");
-        PhoneGlobals app = PhoneGlobals.getInstance();
-
-        // There are two ways to start OTASP on voice-capable devices:
-        //
-        // (1) via the PERFORM_CDMA_PROVISIONING intent
-        //     - this is triggered by the "Activate device" button in settings,
-        //       or can be launched automatically upon boot if the device
-        //       thinks it needs to be provisioned.
-        //     - the intent is handled by InCallScreenShowActivation.onCreate(),
-        //       which calls this method
-        //     - we prepare for OTASP by initializing the OtaUtils object
-        //     - we bring up the InCallScreen in the ready-to-activate state
-        //     - when the user presses the "Activate" button we launch the
-        //       call by calling CallController.placeCall() via the
-        //       otaPerformActivation() method.
-        //
-        // (2) by manually making an outgoing call to a special OTASP number
-        //     like "*228" or "*22899".
-        //     - That sequence does NOT involve this method (OtaUtils.startInteractiveOtasp()).
-        //       Instead, the outgoing call request goes straight to CallController.placeCall().
-        //     - CallController.placeCall() notices that it's an OTASP
-        //       call, and initializes the OtaUtils object.
-        //     - The InCallScreen is launched (as the last step of
-        //       CallController.placeCall()).  The InCallScreen notices that
-        //       OTASP is active and shows the correct UI.
-
-        // Here, we start sequence (1):
-        // Do NOT immediately start the call.  Instead, bring up the InCallScreen
-        // in the special "activate" state (see OtaUtils.otaShowActivateScreen()).
-        // We won't actually make the call until the user presses the "Activate"
-        // button.
-
-        Intent activationScreenIntent = new Intent().setClass(context, InCallScreen.class)
-                .setAction(ACTION_DISPLAY_ACTIVATION_SCREEN);
-
-        // Watch out: in the scenario where OTASP gets triggered from the
-        // BOOT_COMPLETED broadcast (see OtaStartupReceiver.java), we might be
-        // running in the PhoneApp's context right now.
-        // So the FLAG_ACTIVITY_NEW_TASK flag is required here.
-        activationScreenIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        // We're about to start the OTASP sequence, so create and initialize the
-        // OtaUtils instance.  (This needs to happen before bringing up the
-        // InCallScreen.)
-        OtaUtils.setupOtaspCall(activationScreenIntent);
-
-        // And bring up the InCallScreen...
-        Log.i(LOG_TAG, "startInteractiveOtasp: launching InCallScreen in 'activate' state: "
-              + activationScreenIntent);
-        context.startActivity(activationScreenIntent);
-    }
-
-    /**
-     * Starts the OTASP call *without* involving the InCallScreen or
-     * displaying any UI.
-     *
-     * This is used on data-only devices, which don't support any kind of
-     * in-call phone UI.
-     *
-     * @return PhoneUtils.CALL_STATUS_DIALED if we successfully
-     *         dialed the OTASP number, or one of the other
-     *         CALL_STATUS_* constants if there was a failure.
-     */
-    public static int startNonInteractiveOtasp(Context context) {
-        if (DBG) log("startNonInteractiveOtasp()...");
-        PhoneGlobals app = PhoneGlobals.getInstance();
-
-        if (app.otaUtils != null) {
-            // An OtaUtils instance already exists, presumably from a previous OTASP call.
-            Log.i(LOG_TAG, "startNonInteractiveOtasp: "
-                  + "OtaUtils already exists; nuking the old one and starting again...");
-        }
-
-        // Create the OtaUtils instance.
-        app.otaUtils = new OtaUtils(context, false /* non-interactive mode */);
-        if (DBG) log("- created OtaUtils: " + app.otaUtils);
-
-        // ... and kick off the OTASP call.
-        // TODO(InCallScreen redesign): This should probably go through
-        // the CallController, rather than directly calling
-        // PhoneUtils.placeCall().
-        Phone phone = PhoneGlobals.getPhone();
-        String number = OTASP_NUMBER_NON_INTERACTIVE;
-        Log.i(LOG_TAG, "startNonInteractiveOtasp: placing call to '" + number + "'...");
-        int callStatus = PhoneUtils.placeCall(context,
-                                              phone,
-                                              number,
-                                              null,   // contactRef
-                                              false); //isEmergencyCall
-
-        if (callStatus == PhoneUtils.CALL_STATUS_DIALED) {
-            if (DBG) log("  ==> successful return from placeCall(): callStatus = " + callStatus);
-        } else {
-            Log.w(LOG_TAG, "Failure from placeCall() for OTA number '"
-                  + number + "': code " + callStatus);
-            return callStatus;
-        }
-
-        // TODO: Any other special work to do here?
-        // Such as:
-        //
-        // - manually kick off progress updates, either using TelephonyRegistry
-        //   or else by sending PendingIntents directly to our caller?
-        //
-        // - manually silence the in-call audio?  (Probably unnecessary
-        //   if Stingray truly has no audio path from phone baseband
-        //   to the device's speakers.)
-        //
-
-        return callStatus;
-    }
-
-    /**
-     * @return true if the specified Intent is a CALL action that's an attempt
-     * to initate an OTASP call.
-     *
-     * OTASP is a CDMA-specific concept, so this method will always return false
-     * on GSM phones.
-     *
-     * This code was originally part of the InCallScreen.checkIsOtaCall() method.
-     */
-    public static boolean isOtaspCallIntent(Intent intent) {
-        if (DBG) log("isOtaspCallIntent(" + intent + ")...");
-        PhoneGlobals app = PhoneGlobals.getInstance();
-        Phone phone = app.mCM.getDefaultPhone();
-
-        if (intent == null) {
-            return false;
-        }
-        if (!TelephonyCapabilities.supportsOtasp(phone)) {
-            return false;
-        }
-
-        String action = intent.getAction();
-        if (action == null) {
-            return false;
-        }
-        if (!action.equals(Intent.ACTION_CALL)) {
-            if (DBG) log("isOtaspCallIntent: not a CALL action: '" + action + "' ==> not OTASP");
-            return false;
-        }
-
-        if ((app.cdmaOtaScreenState == null) || (app.cdmaOtaProvisionData == null)) {
-            // Uh oh -- something wrong with our internal OTASP state.
-            // (Since this is an OTASP-capable device, these objects
-            // *should* have already been created by PhoneApp.onCreate().)
-            throw new IllegalStateException("isOtaspCallIntent: "
-                                            + "app.cdmaOta* objects(s) not initialized");
-        }
-
-        // This is an OTASP call iff the number we're trying to dial is one of
-        // the magic OTASP numbers.
-        String number;
-        try {
-            number = PhoneUtils.getInitialNumber(intent);
-        } catch (PhoneUtils.VoiceMailNumberMissingException ex) {
-            // This was presumably a "voicemail:" intent, so it's
-            // obviously not an OTASP number.
-            if (DBG) log("isOtaspCallIntent: VoiceMailNumberMissingException => not OTASP");
-            return false;
-        }
-        if (phone.isOtaSpNumber(number)) {
-            if (DBG) log("isOtaSpNumber: ACTION_CALL to '" + number + "' ==> OTASP call!");
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Set up for an OTASP call.
-     *
-     * This method is called as part of the CallController placeCall() sequence
-     * before initiating an outgoing OTASP call.
-     *
-     * The purpose of this method is mainly to create and initialize the
-     * OtaUtils instance, along with some other misc pre-OTASP cleanup.
-     */
-    public static void setupOtaspCall(Intent intent) {
-        if (DBG) log("setupOtaspCall(): preparing for OTASP call to " + intent);
-        PhoneGlobals app = PhoneGlobals.getInstance();
-
-        if (app.otaUtils != null) {
-            // An OtaUtils instance already exists, presumably from a prior OTASP call.
-            // Nuke the old one and start this call with a fresh instance.
-            Log.i(LOG_TAG, "setupOtaspCall: "
-                  + "OtaUtils already exists; replacing with new instance...");
-        }
-
-        // Create the OtaUtils instance.
-        app.otaUtils = new OtaUtils(app.getApplicationContext(), true /* interactive */);
-        if (DBG) log("- created OtaUtils: " + app.otaUtils);
-
-        // NOTE we still need to call OtaUtils.updateUiWidgets() once the
-        // InCallScreen instance is ready; see InCallScreen.checkOtaspStateOnResume()
-
-        // Make sure the InCallScreen knows that it needs to switch into OTASP mode.
-        //
-        // NOTE in gingerbread and earlier, we used to do
-        //     setInCallScreenMode(InCallScreenMode.OTA_NORMAL);
-        // directly in the InCallScreen, back when this check happened inside the InCallScreen.
-        //
-        // But now, set the global CdmaOtaInCallScreenUiState object into
-        // NORMAL mode, which will then cause the InCallScreen (when it
-        // comes up) to realize that an OTA call is active.
-
-        app.otaUtils.setCdmaOtaInCallScreenUiState(
-            OtaUtils.CdmaOtaInCallScreenUiState.State.NORMAL);
-
-        // TODO(OTASP): note app.inCallUiState.inCallScreenMode and
-        // app.cdmaOtaInCallScreenUiState.state are mostly redundant.  Combine them.
-        // app.inCallUiState.inCallScreenMode = InCallUiState.InCallScreenMode.OTA_NORMAL;
-
-        // TODO(OTASP / bug 5092031): we ideally should call
-        // otaShowListeningScreen() here to make sure that the DTMF dialpad
-        // becomes visible at the start of the "*228" call:
-        //
-        //  // ...and get the OTASP-specific UI into the right state.
-        //  app.otaUtils.otaShowListeningScreen();
-        //  if (app.otaUtils.mInCallScreen != null) {
-        //      app.otaUtils.mInCallScreen.requestUpdateScreen();
-        //  }
-        //
-        // But this doesn't actually work; the call to otaShowListeningScreen()
-        // *doesn't* actually bring up the listening screen, since the
-        // cdmaOtaConfigData.otaShowListeningScreen config parameter hasn't been
-        // initialized (we haven't run readXmlSettings() yet at this point!)
-
-        // Also, since the OTA call is now just starting, clear out
-        // the "committed" flag in app.cdmaOtaProvisionData.
-        if (app.cdmaOtaProvisionData != null) {
-            app.cdmaOtaProvisionData.isOtaCallCommitted = false;
-        }
-    }
-
-    private void setSpeaker(boolean state) {
-        if (DBG) log("setSpeaker : " + state );
-
-        if (!mInteractive) {
-            if (DBG) log("non-interactive mode, ignoring setSpeaker.");
-            return;
-        }
-
-        if (state == PhoneUtils.isSpeakerOn(mContext)) {
-            if (DBG) log("no change. returning");
-            return;
-        }
-
-        PhoneUtils.turnOnSpeaker(mContext, state, true);
-    }
-
-    /**
-     * Handles OTA Provision events from the telephony layer.
-     * These events come in to this method whether or not
-     * the InCallScreen is visible.
-     *
-     * Possible events are:
-     * OTA Commit Event - OTA provisioning was successful
-     * SPC retries exceeded - SPC failure retries has exceeded, and Phone needs to
-     *    power down.
-     */
-    public void onOtaProvisionStatusChanged(AsyncResult r) {
-        int OtaStatus[] = (int[]) r.result;
-        if (DBG) log("Provision status event!");
-        if (DBG) log("onOtaProvisionStatusChanged(): status = "
-                     + OtaStatus[0] + " ==> " + otaProvisionStatusToString(OtaStatus[0]));
-
-        // In practice, in a normal successful OTASP call, events come in as follows:
-        //   - SPL_UNLOCKED within a couple of seconds after the call starts
-        //   - then a delay of around 45 seconds
-        //   - then PRL_DOWNLOADED and MDN_DOWNLOADED and COMMITTED within a span of 2 seconds
-
-        switch(OtaStatus[0]) {
-            case Phone.CDMA_OTA_PROVISION_STATUS_SPC_RETRIES_EXCEEDED:
-                if (DBG) log("onOtaProvisionStatusChanged(): RETRIES EXCEEDED");
-                updateOtaspProgress();
-                mApplication.cdmaOtaProvisionData.otaSpcUptime = SystemClock.elapsedRealtime();
-                if (mInteractive) {
-                    otaShowSpcErrorNotice(OTA_SPC_TIMEOUT);
-                } else {
-                    sendOtaspResult(OTASP_FAILURE_SPC_RETRIES);
-                }
-                // Power.shutdown();
-                break;
-
-            case Phone.CDMA_OTA_PROVISION_STATUS_COMMITTED:
-                if (DBG) {
-                    log("onOtaProvisionStatusChanged(): DONE, isOtaCallCommitted set to true");
-                }
-                mApplication.cdmaOtaProvisionData.isOtaCallCommitted = true;
-                if (mApplication.cdmaOtaScreenState.otaScreenState !=
-                    CdmaOtaScreenState.OtaScreenState.OTA_STATUS_UNDEFINED) {
-                    updateOtaspProgress();
-                }
-
-                break;
-
-            case Phone.CDMA_OTA_PROVISION_STATUS_SPL_UNLOCKED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_A_KEY_EXCHANGED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_SSD_UPDATED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_NAM_DOWNLOADED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_MDN_DOWNLOADED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_IMSI_DOWNLOADED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_PRL_DOWNLOADED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_STARTED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_STOPPED:
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_ABORTED:
-                // Only update progress when OTA call is in normal state
-                if (getCdmaOtaInCallScreenUiState() == CdmaOtaInCallScreenUiState.State.NORMAL) {
-                    if (DBG) log("onOtaProvisionStatusChanged(): change to ProgressScreen");
-                    updateOtaspProgress();
-                }
-                break;
-
-            default:
-                if (DBG) log("onOtaProvisionStatusChanged(): Ignoring OtaStatus " + OtaStatus[0]);
-                break;
-        }
-    }
-
-    /**
-     * Handle a disconnect event from the OTASP call.
-     */
-    public void onOtaspDisconnect() {
-        if (DBG) log("onOtaspDisconnect()...");
-        // We only handle this event explicitly in non-interactive mode.
-        // (In interactive mode, the InCallScreen does any post-disconnect
-        // cleanup.)
-        if (!mInteractive) {
-            // Send a success or failure indication back to our caller.
-            updateNonInteractiveOtaSuccessFailure();
-        }
-    }
-
-    private void otaShowHome() {
-        if (DBG) log("otaShowHome()...");
-        mApplication.cdmaOtaScreenState.otaScreenState =
-                CdmaOtaScreenState.OtaScreenState.OTA_STATUS_UNDEFINED;
-        // mInCallScreen.endInCallScreenSession();
-        Intent intent = new Intent(Intent.ACTION_MAIN);
-        intent.addCategory (Intent.CATEGORY_HOME);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mContext.startActivityAsUser(intent, UserHandle.CURRENT);
-        return;
-    }
-
-    private void otaSkipActivation() {
-        if (DBG) log("otaSkipActivation()...");
-
-        sendOtaspResult(OTASP_USER_SKIPPED);
-
-        // if (mInteractive) mInCallScreen.finish();
-        return;
-    }
-
-    /**
-     * Actually initiate the OTASP call.  This method is triggered by the
-     * onscreen "Activate" button, and is only used in interactive mode.
-     */
-    private void otaPerformActivation() {
-        if (DBG) log("otaPerformActivation()...");
-        if (!mInteractive) {
-            // We shouldn't ever get here in non-interactive mode!
-            Log.w(LOG_TAG, "otaPerformActivation: not interactive!");
-            return;
-        }
-
-        if (!mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            // Place an outgoing call to the special OTASP number:
-            Intent newIntent = new Intent(Intent.ACTION_CALL);
-            newIntent.setData(Uri.fromParts(PhoneAccount.SCHEME_TEL, OTASP_NUMBER, null));
-
-            // Initiate the outgoing call:
-            mApplication.callController.placeCall(newIntent);
-
-            // ...and get the OTASP-specific UI into the right state.
-            otaShowListeningScreen();
-            // mInCallScreen.requestUpdateScreen();
-        }
-        return;
-    }
-
-    /**
-     * Show Activation Screen when phone powers up and OTA provision is
-     * required. Also shown when activation fails and user needs
-     * to re-attempt it. Contains ACTIVATE and SKIP buttons
-     * which allow user to start OTA activation or skip the activation process.
-     */
-    public void otaShowActivateScreen() {
-        if (DBG) log("otaShowActivateScreen()...");
-        if (mApplication.cdmaOtaConfigData.otaShowActivationScreen
-                == OTA_SHOW_ACTIVATION_SCREEN_ON) {
-            if (DBG) log("otaShowActivateScreen(): show activation screen");
-            if (!isDialerOpened()) {
-                otaScreenInitialize();
-                mOtaWidgetData.otaSkipButton.setVisibility(sIsWizardMode ?
-                        View.VISIBLE : View.INVISIBLE);
-                mOtaWidgetData.otaTextActivate.setVisibility(View.VISIBLE);
-                mOtaWidgetData.callCardOtaButtonsActivate.setVisibility(View.VISIBLE);
-            }
-            mApplication.cdmaOtaScreenState.otaScreenState =
-                    CdmaOtaScreenState.OtaScreenState.OTA_STATUS_ACTIVATION;
-        } else {
-            if (DBG) log("otaShowActivateScreen(): show home screen");
-            otaShowHome();
-        }
-     }
-
-    /**
-     * Show "Listen for Instruction" screen during OTA call. Shown when OTA Call
-     * is initiated and user needs to listen for network instructions and press
-     * appropriate DTMF digits to proceed to the "Programming in Progress" phase.
-     */
-    private void otaShowListeningScreen() {
-        if (DBG) log("otaShowListeningScreen()...");
-        if (!mInteractive) {
-            // We shouldn't ever get here in non-interactive mode!
-            Log.w(LOG_TAG, "otaShowListeningScreen: not interactive!");
-            return;
-        }
-
-        if (mApplication.cdmaOtaConfigData.otaShowListeningScreen
-                == OTA_SHOW_LISTENING_SCREEN_ON) {
-            if (DBG) log("otaShowListeningScreen(): show listening screen");
-            if (!isDialerOpened()) {
-                otaScreenInitialize();
-                mOtaWidgetData.otaTextListenProgress.setVisibility(View.VISIBLE);
-                mOtaWidgetData.otaTextListenProgress.setText(R.string.ota_listen);
-                // mOtaWidgetData.otaDtmfDialerView.setVisibility(View.VISIBLE);
-                mOtaWidgetData.callCardOtaButtonsListenProgress.setVisibility(View.VISIBLE);
-                mOtaWidgetData.otaSpeakerButton.setVisibility(View.VISIBLE);
-                boolean speakerOn = PhoneUtils.isSpeakerOn(mContext);
-                mOtaWidgetData.otaSpeakerButton.setChecked(speakerOn);
-            }
-            mApplication.cdmaOtaScreenState.otaScreenState =
-                    CdmaOtaScreenState.OtaScreenState.OTA_STATUS_LISTENING;
-        } else {
-            if (DBG) log("otaShowListeningScreen(): show progress screen");
-            otaShowInProgressScreen();
-        }
-    }
-
-    /**
-     * Do any necessary updates (of onscreen UI, for example)
-     * based on the latest status of the OTASP call.
-     */
-    private void updateOtaspProgress() {
-        if (DBG) log("updateOtaspProgress()...  mInteractive = " + mInteractive);
-        if (mInteractive) {
-            // On regular phones we just call through to
-            // otaShowInProgressScreen(), which updates the
-            // InCallScreen's onscreen UI.
-            otaShowInProgressScreen();
-        } else {
-            // We're not using the InCallScreen to show OTA progress.
-
-            // For now, at least, there's nothing to do here.
-            // The overall "success" or "failure" indication we send back
-            // (to our caller) is triggered by the DISCONNECT event;
-            // see updateNonInteractiveOtaSuccessFailure().
-
-            // But if we ever need to send *intermediate* progress updates back
-            // to our caller, we'd do that here, possbily using the same
-            // PendingIntent that we already use to indicate success or failure.
-        }
-    }
-
-    /**
-     * When a non-interactive OTASP call completes, send a success or
-     * failure indication back to our caller.
-     *
-     * This is basically the non-interactive equivalent of
-     * otaShowSuccessFailure().
-     */
-    private void updateNonInteractiveOtaSuccessFailure() {
-        // This is basically the same logic as otaShowSuccessFailure(): we
-        // check the isOtaCallCommitted bit, and if that's true it means
-        // that activation was successful.
-
-        if (DBG) log("updateNonInteractiveOtaSuccessFailure(): isOtaCallCommitted = "
-                     + mApplication.cdmaOtaProvisionData.isOtaCallCommitted);
-        int resultCode =
-                mApplication.cdmaOtaProvisionData.isOtaCallCommitted
-                ? OTASP_SUCCESS : OTASP_FAILURE;
-        sendOtaspResult(resultCode);
-    }
-
-    /**
-     * Sends the specified OTASP result code back to our caller (presumably
-     * SetupWizard) via the PendingIntent that they originally sent along with
-     * the ACTION_PERFORM_CDMA_PROVISIONING intent.
-     */
-    private void sendOtaspResult(int resultCode) {
-        if (DBG) log("sendOtaspResult: resultCode = " + resultCode);
-
-        // Pass the success or failure indication back to our caller by
-        // adding an additional extra to the PendingIntent we already
-        // have.
-        // (NB: there's a PendingIntent send() method that takes a resultCode
-        // directly, but we can't use that here since that call is only
-        // meaningful for pending intents that are actually used as activity
-        // results.)
-
-        Intent extraStuff = new Intent();
-        extraStuff.putExtra(EXTRA_OTASP_RESULT_CODE, resultCode);
-        // When we call PendingIntent.send() below, the extras from this
-        // intent will get merged with any extras already present in
-        // cdmaOtaScreenState.otaspResultCodePendingIntent.
-
-        if (mApplication.cdmaOtaScreenState == null) {
-            Log.e(LOG_TAG, "updateNonInteractiveOtaSuccessFailure: no cdmaOtaScreenState object!");
-            return;
-        }
-        if (mApplication.cdmaOtaScreenState.otaspResultCodePendingIntent == null) {
-            Log.w(LOG_TAG, "updateNonInteractiveOtaSuccessFailure: "
-                  + "null otaspResultCodePendingIntent!");
-            return;
-        }
-
-        try {
-            if (DBG) log("- sendOtaspResult:  SENDING PENDING INTENT: " +
-                         mApplication.cdmaOtaScreenState.otaspResultCodePendingIntent);
-            mApplication.cdmaOtaScreenState.otaspResultCodePendingIntent.send(
-                    mContext,
-                    0, /* resultCode (unused) */
-                    extraStuff);
-        } catch (CanceledException e) {
-            // should never happen because no code cancels the pending intent right now,
-            Log.e(LOG_TAG, "PendingIntent send() failed: " + e);
-        }
-    }
-
-    /**
-     * Show "Programming In Progress" screen during OTA call. Shown when OTA
-     * provisioning is in progress after user has selected an option.
-     */
-    private void otaShowInProgressScreen() {
-        if (DBG) log("otaShowInProgressScreen()...");
-        if (!mInteractive) {
-            // We shouldn't ever get here in non-interactive mode!
-            Log.w(LOG_TAG, "otaShowInProgressScreen: not interactive!");
-            return;
-        }
-
-        mApplication.cdmaOtaScreenState.otaScreenState =
-            CdmaOtaScreenState.OtaScreenState.OTA_STATUS_PROGRESS;
-
-        if ((mOtaWidgetData == null) /* || (mInCallScreen == null) */) {
-            Log.w(LOG_TAG, "otaShowInProgressScreen: UI widgets not set up yet!");
-
-            // TODO(OTASP): our CdmaOtaScreenState is now correct; we just set
-            // it to OTA_STATUS_PROGRESS.  But we still need to make sure that
-            // when the InCallScreen eventually comes to the foreground, it
-            // notices that state and does all the same UI updating we do below.
-            return;
-        }
-
-        if (!isDialerOpened()) {
-            otaScreenInitialize();
-            mOtaWidgetData.otaTextListenProgress.setVisibility(View.VISIBLE);
-            mOtaWidgetData.otaTextListenProgress.setText(R.string.ota_progress);
-            mOtaWidgetData.otaTextProgressBar.setVisibility(View.VISIBLE);
-            mOtaWidgetData.callCardOtaButtonsListenProgress.setVisibility(View.VISIBLE);
-            mOtaWidgetData.otaSpeakerButton.setVisibility(View.VISIBLE);
-            boolean speakerOn = PhoneUtils.isSpeakerOn(mContext);
-            mOtaWidgetData.otaSpeakerButton.setChecked(speakerOn);
-        }
-    }
-
-    /**
-     * Show programming failure dialog when OTA provisioning fails.
-     * If OTA provisioning attempts fail more than 3 times, then unsuccessful
-     * dialog is shown. Otherwise a two-second notice is shown with unsuccessful
-     * information. When notice expires, phone returns to activation screen.
-     */
-    private void otaShowProgramFailure(int length) {
-        if (DBG) log("otaShowProgramFailure()...");
-        mApplication.cdmaOtaProvisionData.activationCount++;
-        if ((mApplication.cdmaOtaProvisionData.activationCount <
-                mApplication.cdmaOtaConfigData.otaShowActivateFailTimes)
-                && (mApplication.cdmaOtaConfigData.otaShowActivationScreen ==
-                OTA_SHOW_ACTIVATION_SCREEN_ON)) {
-            if (DBG) log("otaShowProgramFailure(): activationCount"
-                    + mApplication.cdmaOtaProvisionData.activationCount);
-            if (DBG) log("otaShowProgramFailure(): show failure notice");
-            otaShowProgramFailureNotice(length);
-        } else {
-            if (DBG) log("otaShowProgramFailure(): show failure dialog");
-            otaShowProgramFailureDialog();
-        }
-    }
-
-    /**
-     * Show either programming success dialog when OTA provisioning succeeds, or
-     * programming failure dialog when it fails. See {@link #otaShowProgramFailure}
-     * for more details.
-     */
-    public void otaShowSuccessFailure() {
-        if (DBG) log("otaShowSuccessFailure()...");
-        if (!mInteractive) {
-            // We shouldn't ever get here in non-interactive mode!
-            Log.w(LOG_TAG, "otaShowSuccessFailure: not interactive!");
-            return;
-        }
-
-        otaScreenInitialize();
-        if (DBG) log("otaShowSuccessFailure(): isOtaCallCommitted"
-                + mApplication.cdmaOtaProvisionData.isOtaCallCommitted);
-        if (mApplication.cdmaOtaProvisionData.isOtaCallCommitted) {
-            if (DBG) log("otaShowSuccessFailure(), show success dialog");
-            otaShowProgramSuccessDialog();
-        } else {
-            if (DBG) log("otaShowSuccessFailure(), show failure dialog");
-            otaShowProgramFailure(OTA_FAILURE_DIALOG_TIMEOUT);
-        }
-        return;
-    }
-
-    /**
-     * Show programming failure dialog when OTA provisioning fails more than 3
-     * times.
-     */
-    private void otaShowProgramFailureDialog() {
-        if (DBG) log("otaShowProgramFailureDialog()...");
-        mApplication.cdmaOtaScreenState.otaScreenState =
-                CdmaOtaScreenState.OtaScreenState.OTA_STATUS_SUCCESS_FAILURE_DLG;
-        mOtaWidgetData.otaTitle.setText(R.string.ota_title_problem_with_activation);
-        mOtaWidgetData.otaTextSuccessFail.setVisibility(View.VISIBLE);
-        mOtaWidgetData.otaTextSuccessFail.setText(R.string.ota_unsuccessful);
-        mOtaWidgetData.callCardOtaButtonsFailSuccess.setVisibility(View.VISIBLE);
-        mOtaWidgetData.otaTryAgainButton.setVisibility(View.VISIBLE);
-        //close the dialer if open
-        // if (isDialerOpened()) {
-        //     mOtaCallCardDtmfDialer.closeDialer(false);
-        // }
-    }
-
-    /**
-     * Show programming success dialog when OTA provisioning succeeds.
-     */
-    private void otaShowProgramSuccessDialog() {
-        if (DBG) log("otaShowProgramSuccessDialog()...");
-        mApplication.cdmaOtaScreenState.otaScreenState =
-                CdmaOtaScreenState.OtaScreenState.OTA_STATUS_SUCCESS_FAILURE_DLG;
-        mOtaWidgetData.otaTitle.setText(R.string.ota_title_activate_success);
-        mOtaWidgetData.otaTextSuccessFail.setVisibility(View.VISIBLE);
-        mOtaWidgetData.otaTextSuccessFail.setText(R.string.ota_successful);
-        mOtaWidgetData.callCardOtaButtonsFailSuccess.setVisibility(View.VISIBLE);
-        mOtaWidgetData.otaNextButton.setVisibility(View.VISIBLE);
-        //close the dialer if open
-        // if (isDialerOpened()) {
-        //     mOtaCallCardDtmfDialer.closeDialer(false);
-        // }
-    }
-
-    /**
-     * Show SPC failure notice when SPC attempts exceed 15 times.
-     * During OTA provisioning, if SPC code is incorrect OTA provisioning will
-     * fail. When SPC attempts are over 15, it shows SPC failure notice for one minute and
-     * then phone will power down.
-     */
-    private void otaShowSpcErrorNotice(int length) {
-        if (DBG) log("otaShowSpcErrorNotice()...");
-        if (mOtaWidgetData.spcErrorDialog == null) {
-            mApplication.cdmaOtaProvisionData.inOtaSpcState = true;
-            DialogInterface.OnKeyListener keyListener;
-            keyListener = new DialogInterface.OnKeyListener() {
-                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
-                    log("Ignoring key events...");
-                    return true;
-                }};
-            mOtaWidgetData.spcErrorDialog = new AlertDialog.Builder(null /* mInCallScreen */)
-                    .setMessage(R.string.ota_spc_failure)
-                    .setOnKeyListener(keyListener)
-                    .create();
-            mOtaWidgetData.spcErrorDialog.getWindow().addFlags(
-                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
-                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-            mOtaWidgetData.spcErrorDialog.show();
-            //close the dialer if open
-            // if (isDialerOpened()) {
-            //     mOtaCallCardDtmfDialer.closeDialer(false);
-            // }
-            long noticeTime = length*1000;
-            if (DBG) log("otaShowSpcErrorNotice(), remaining SPC noticeTime" + noticeTime);
-            // mInCallScreen.requestCloseSpcErrorNotice(noticeTime);
-        }
-    }
-
-    /**
-     * When SPC notice times out, force phone to power down.
-     */
-    public void onOtaCloseSpcNotice() {
-        if (DBG) log("onOtaCloseSpcNotice(), send shutdown intent");
-        Intent shutdown = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
-        shutdown.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
-        shutdown.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mContext.startActivity(shutdown);
-    }
-
-    /**
-     * Show two-second notice when OTA provisioning fails and number of failed attempts
-     * is less then 3.
-     */
-    private void otaShowProgramFailureNotice(int length) {
-        if (DBG) log("otaShowProgramFailureNotice()...");
-        if (mOtaWidgetData.otaFailureDialog == null) {
-            mOtaWidgetData.otaFailureDialog = new AlertDialog.Builder(null /* mInCallScreen */)
-                    .setMessage(R.string.ota_failure)
-                    .create();
-            mOtaWidgetData.otaFailureDialog.getWindow().addFlags(
-                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
-                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-            mOtaWidgetData.otaFailureDialog.show();
-
-            long noticeTime = length*1000;
-            // mInCallScreen.requestCloseOtaFailureNotice(noticeTime);
-        }
-    }
-
-    /**
-     * Handle OTA unsuccessful notice expiry. Dismisses the
-     * two-second notice and shows the activation screen.
-     */
-    public void onOtaCloseFailureNotice() {
-        if (DBG) log("onOtaCloseFailureNotice()...");
-        if (mOtaWidgetData.otaFailureDialog != null) {
-            mOtaWidgetData.otaFailureDialog.dismiss();
-            mOtaWidgetData.otaFailureDialog = null;
-        }
-        otaShowActivateScreen();
-    }
-
-    /**
-     * Initialize all OTA UI elements to be gone. Also set inCallPanel,
-     * callCard and the dialpad handle to be gone. This is called before any OTA screen
-     * gets drawn.
-     */
-    private void otaScreenInitialize() {
-        if (DBG) log("otaScreenInitialize()...");
-
-        if (!mInteractive) {
-            // We should never be doing anything with UI elements in
-            // non-interactive mode.
-            Log.w(LOG_TAG, "otaScreenInitialize: not interactive!");
-            return;
-        }
-
-        // if (mInCallTouchUi != null) mInCallTouchUi.setVisibility(View.GONE);
-        // if (mCallCard != null) {
-        //     mCallCard.setVisibility(View.GONE);
-        //     // TODO: try removing this.
-        //     mCallCard.hideCallCardElements();
-        // }
-
-        mOtaWidgetData.otaTitle.setText(R.string.ota_title_activate);
-        mOtaWidgetData.otaTextActivate.setVisibility(View.GONE);
-        mOtaWidgetData.otaTextListenProgress.setVisibility(View.GONE);
-        mOtaWidgetData.otaTextProgressBar.setVisibility(View.GONE);
-        mOtaWidgetData.otaTextSuccessFail.setVisibility(View.GONE);
-        mOtaWidgetData.callCardOtaButtonsActivate.setVisibility(View.GONE);
-        mOtaWidgetData.callCardOtaButtonsListenProgress.setVisibility(View.GONE);
-        mOtaWidgetData.callCardOtaButtonsFailSuccess.setVisibility(View.GONE);
-        // mOtaWidgetData.otaDtmfDialerView.setVisibility(View.GONE);
-        mOtaWidgetData.otaSpeakerButton.setVisibility(View.GONE);
-        mOtaWidgetData.otaTryAgainButton.setVisibility(View.GONE);
-        mOtaWidgetData.otaNextButton.setVisibility(View.GONE);
-        mOtaWidgetData.otaUpperWidgets.setVisibility(View.VISIBLE);
-        mOtaWidgetData.otaSkipButton.setVisibility(View.VISIBLE);
-    }
-
-    public void hideOtaScreen() {
-        if (DBG) log("hideOtaScreen()...");
-
-        mOtaWidgetData.callCardOtaButtonsActivate.setVisibility(View.GONE);
-        mOtaWidgetData.callCardOtaButtonsListenProgress.setVisibility(View.GONE);
-        mOtaWidgetData.callCardOtaButtonsFailSuccess.setVisibility(View.GONE);
-        mOtaWidgetData.otaUpperWidgets.setVisibility(View.GONE);
-    }
-
-    public boolean isDialerOpened() {
-        // boolean retval = (mOtaCallCardDtmfDialer != null && mOtaCallCardDtmfDialer.isOpened());
-        boolean retval = false;
-        if (DBG) log("- isDialerOpened() ==> " + retval);
-        return retval;
-    }
-
-    /**
-     * Show the appropriate OTA screen based on the current state of OTA call.
-     *
-     * This is called from the InCallScreen when the screen needs to be
-     * refreshed (and thus is only ever used in interactive mode.)
-     *
-     * Since this is called as part of the InCallScreen.updateScreen() sequence,
-     * this method does *not* post an mInCallScreen.requestUpdateScreen()
-     * request.
-     */
-    public void otaShowProperScreen() {
-        if (DBG) log("otaShowProperScreen()...");
-        if (!mInteractive) {
-            // We shouldn't ever get here in non-interactive mode!
-            Log.w(LOG_TAG, "otaShowProperScreen: not interactive!");
-            return;
-        }
-
-        // if ((mInCallScreen != null) && mInCallScreen.isForegroundActivity()) {
-        //     if (DBG) log("otaShowProperScreen(): InCallScreen in foreground, currentstate = "
-        //             + mApplication.cdmaOtaScreenState.otaScreenState);
-        //     if (mInCallTouchUi != null) {
-        //         mInCallTouchUi.setVisibility(View.GONE);
-        //     }
-        //     if (mCallCard != null) {
-        //         mCallCard.setVisibility(View.GONE);
-        //     }
-        //     if (mApplication.cdmaOtaScreenState.otaScreenState
-        //             == CdmaOtaScreenState.OtaScreenState.OTA_STATUS_ACTIVATION) {
-        //         otaShowActivateScreen();
-        //     } else if (mApplication.cdmaOtaScreenState.otaScreenState
-        //             == CdmaOtaScreenState.OtaScreenState.OTA_STATUS_LISTENING) {
-        //         otaShowListeningScreen();
-        //     } else if (mApplication.cdmaOtaScreenState.otaScreenState
-        //             == CdmaOtaScreenState.OtaScreenState.OTA_STATUS_PROGRESS) {
-        //         otaShowInProgressScreen();
-        //     }
-
-        //     if (mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-        //         otaShowSpcErrorNotice(getOtaSpcDisplayTime());
-        //     }
-        // }
-    }
-
-    /**
-     * Read configuration values for each OTA screen from config.xml.
-     * These configuration values control visibility of each screen.
-     */
-    private void readXmlSettings() {
-        if (DBG) log("readXmlSettings()...");
-        if (mApplication.cdmaOtaConfigData.configComplete) {
-            return;
-        }
-
-        mApplication.cdmaOtaConfigData.configComplete = true;
-        int tmpOtaShowActivationScreen =
-                mContext.getResources().getInteger(R.integer.OtaShowActivationScreen);
-        mApplication.cdmaOtaConfigData.otaShowActivationScreen = tmpOtaShowActivationScreen;
-        if (DBG) log("readXmlSettings(), otaShowActivationScreen = "
-                + mApplication.cdmaOtaConfigData.otaShowActivationScreen);
-
-        int tmpOtaShowListeningScreen =
-                mContext.getResources().getInteger(R.integer.OtaShowListeningScreen);
-        mApplication.cdmaOtaConfigData.otaShowListeningScreen = tmpOtaShowListeningScreen;
-        if (DBG) log("readXmlSettings(), otaShowListeningScreen = "
-                + mApplication.cdmaOtaConfigData.otaShowListeningScreen);
-
-        int tmpOtaShowActivateFailTimes =
-                mContext.getResources().getInteger(R.integer.OtaShowActivateFailTimes);
-        mApplication.cdmaOtaConfigData.otaShowActivateFailTimes = tmpOtaShowActivateFailTimes;
-        if (DBG) log("readXmlSettings(), otaShowActivateFailTimes = "
-                + mApplication.cdmaOtaConfigData.otaShowActivateFailTimes);
-
-        int tmpOtaPlaySuccessFailureTone =
-                mContext.getResources().getInteger(R.integer.OtaPlaySuccessFailureTone);
-        mApplication.cdmaOtaConfigData.otaPlaySuccessFailureTone = tmpOtaPlaySuccessFailureTone;
-        if (DBG) log("readXmlSettings(), otaPlaySuccessFailureTone = "
-                + mApplication.cdmaOtaConfigData.otaPlaySuccessFailureTone);
-    }
-
-    /**
-     * Handle the click events for OTA buttons.
-     */
-    public void onClickHandler(int id) {
-        switch (id) {
-            case R.id.otaEndButton:
-                onClickOtaEndButton();
-                break;
-
-            case R.id.otaSpeakerButton:
-                onClickOtaSpeakerButton();
-                break;
-
-            case R.id.otaActivateButton:
-                onClickOtaActivateButton();
-                break;
-
-            case R.id.otaSkipButton:
-                onClickOtaActivateSkipButton();
-                break;
-
-            case R.id.otaNextButton:
-                onClickOtaActivateNextButton();
-                break;
-
-            case R.id.otaTryAgainButton:
-                onClickOtaTryAgainButton();
-                break;
-
-            default:
-                if (DBG) log ("onClickHandler: received a click event for unrecognized id");
-                break;
-        }
-    }
-
-    private void onClickOtaTryAgainButton() {
-        if (DBG) log("Activation Try Again Clicked!");
-        if (!mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            otaShowActivateScreen();
-        }
-    }
-
-    private void onClickOtaEndButton() {
-        if (DBG) log("Activation End Call Button Clicked!");
-        if (!mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            if (PhoneUtils.hangup(mApplication.mCM) == false) {
-                // If something went wrong when placing the OTA call,
-                // the screen is not updated by the call disconnect
-                // handler and we have to do it here
-                setSpeaker(false);
-                // mInCallScreen.handleOtaCallEnd();
-            }
-        }
-    }
-
-    private void onClickOtaSpeakerButton() {
-        if (DBG) log("OTA Speaker button Clicked!");
-        if (!mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            boolean isChecked = !PhoneUtils.isSpeakerOn(mContext);
-            setSpeaker(isChecked);
-        }
-    }
-
-    private void onClickOtaActivateButton() {
-        if (DBG) log("Call Activation Clicked!");
-        otaPerformActivation();
-    }
-
-    private void onClickOtaActivateSkipButton() {
-        if (DBG) log("Activation Skip Clicked!");
-        DialogInterface.OnKeyListener keyListener;
-        keyListener = new DialogInterface.OnKeyListener() {
-            public boolean onKey(DialogInterface dialog, int keyCode,
-                    KeyEvent event) {
-                if (DBG) log("Ignoring key events...");
-                return true;
-            }
-        };
-        mOtaWidgetData.otaSkipConfirmationDialog = new AlertDialog.Builder(null /* mInCallScreen */)
-                .setTitle(R.string.ota_skip_activation_dialog_title)
-                .setMessage(R.string.ota_skip_activation_dialog_message)
-                .setPositiveButton(
-                    android.R.string.ok,
-                    // "OK" means "skip activation".
-                    new AlertDialog.OnClickListener() {
-                        public void onClick(DialogInterface dialog, int which) {
-                            otaSkipActivation();
-                        }
-                    })
-                .setNegativeButton(
-                    android.R.string.cancel,
-                    // "Cancel" means just dismiss the dialog.
-                    // Don't actually start an activation call.
-                    null)
-                .setOnKeyListener(keyListener)
-                .create();
-        mOtaWidgetData.otaSkipConfirmationDialog.show();
-    }
-
-    private void onClickOtaActivateNextButton() {
-        if (DBG) log("Dialog Next Clicked!");
-        if (!mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            mApplication.cdmaOtaScreenState.otaScreenState =
-                    CdmaOtaScreenState.OtaScreenState.OTA_STATUS_UNDEFINED;
-            otaShowHome();
-        }
-    }
-
-    public void dismissAllOtaDialogs() {
-        if (mOtaWidgetData != null) {
-            if (mOtaWidgetData.spcErrorDialog != null) {
-                if (DBG) log("- DISMISSING mSpcErrorDialog.");
-                mOtaWidgetData.spcErrorDialog.dismiss();
-                mOtaWidgetData.spcErrorDialog = null;
-            }
-            if (mOtaWidgetData.otaFailureDialog != null) {
-                if (DBG) log("- DISMISSING mOtaFailureDialog.");
-                mOtaWidgetData.otaFailureDialog.dismiss();
-                mOtaWidgetData.otaFailureDialog = null;
-            }
-        }
-    }
-
-    private int getOtaSpcDisplayTime() {
-        if (DBG) log("getOtaSpcDisplayTime()...");
-        int tmpSpcTime = 1;
-        if (mApplication.cdmaOtaProvisionData.inOtaSpcState) {
-            long tmpOtaSpcRunningTime = 0;
-            long tmpOtaSpcLeftTime = 0;
-            tmpOtaSpcRunningTime = SystemClock.elapsedRealtime();
-            tmpOtaSpcLeftTime =
-                tmpOtaSpcRunningTime - mApplication.cdmaOtaProvisionData.otaSpcUptime;
-            if (tmpOtaSpcLeftTime >= OTA_SPC_TIMEOUT*1000) {
-                tmpSpcTime = 1;
-            } else {
-                tmpSpcTime = OTA_SPC_TIMEOUT - (int)tmpOtaSpcLeftTime/1000;
-            }
-        }
-        if (DBG) log("getOtaSpcDisplayTime(), time for SPC error notice: " + tmpSpcTime);
-        return tmpSpcTime;
-    }
-
-    /**
-     * Initialize the OTA widgets for all OTA screens.
-     */
-    private void initOtaInCallScreen() {
-        if (DBG) log("initOtaInCallScreen()...");
-        // mOtaWidgetData.otaTitle = (TextView) mInCallScreen.findViewById(R.id.otaTitle);
-        // mOtaWidgetData.otaTextActivate = (TextView) mInCallScreen.findViewById(R.id.otaActivate);
-        mOtaWidgetData.otaTextActivate.setVisibility(View.GONE);
-        // mOtaWidgetData.otaTextListenProgress =
-        //         (TextView) mInCallScreen.findViewById(R.id.otaListenProgress);
-        // mOtaWidgetData.otaTextProgressBar =
-        //         (ProgressBar) mInCallScreen.findViewById(R.id.progress_large);
-        mOtaWidgetData.otaTextProgressBar.setIndeterminate(true);
-        // mOtaWidgetData.otaTextSuccessFail =
-        //         (TextView) mInCallScreen.findViewById(R.id.otaSuccessFailStatus);
-
-        // mOtaWidgetData.otaUpperWidgets =
-        //         (ViewGroup) mInCallScreen.findViewById(R.id.otaUpperWidgets);
-        // mOtaWidgetData.callCardOtaButtonsListenProgress =
-        //         (View) mInCallScreen.findViewById(R.id.callCardOtaListenProgress);
-        // mOtaWidgetData.callCardOtaButtonsActivate =
-        //         (View) mInCallScreen.findViewById(R.id.callCardOtaActivate);
-        // mOtaWidgetData.callCardOtaButtonsFailSuccess =
-        //         (View) mInCallScreen.findViewById(R.id.callCardOtaFailOrSuccessful);
-
-        // mOtaWidgetData.otaEndButton = (Button) mInCallScreen.findViewById(R.id.otaEndButton);
-        // mOtaWidgetData.otaEndButton.setOnClickListener(mInCallScreen);
-        // mOtaWidgetData.otaSpeakerButton =
-        //         (ToggleButton) mInCallScreen.findViewById(R.id.otaSpeakerButton);
-        // mOtaWidgetData.otaSpeakerButton.setOnClickListener(mInCallScreen);
-        // mOtaWidgetData.otaActivateButton =
-        //         (Button) mInCallScreen.findViewById(R.id.otaActivateButton);
-        // mOtaWidgetData.otaActivateButton.setOnClickListener(mInCallScreen);
-        // mOtaWidgetData.otaSkipButton = (Button) mInCallScreen.findViewById(R.id.otaSkipButton);
-        // mOtaWidgetData.otaSkipButton.setOnClickListener(mInCallScreen);
-        // mOtaWidgetData.otaNextButton = (Button) mInCallScreen.findViewById(R.id.otaNextButton);
-        // mOtaWidgetData.otaNextButton.setOnClickListener(mInCallScreen);
-        // mOtaWidgetData.otaTryAgainButton =
-        //         (Button) mInCallScreen.findViewById(R.id.otaTryAgainButton);
-        // mOtaWidgetData.otaTryAgainButton.setOnClickListener(mInCallScreen);
-
-        // mOtaWidgetData.otaDtmfDialerView =
-        //         (DTMFTwelveKeyDialerView) mInCallScreen.findViewById(R.id.otaDtmfDialerView);
-        // Sanity-check: the otaDtmfDialerView widget should *always* be present.
-        // if (mOtaWidgetData.otaDtmfDialerView == null) {
-        //     throw new IllegalStateException("initOtaInCallScreen: couldn't find otaDtmfDialerView");
-        // }
-
-        // Create a new DTMFTwelveKeyDialer instance purely for use by the
-        // DTMFTwelveKeyDialerView ("otaDtmfDialerView") that comes from
-        // otacall_card.xml.
-        // mOtaCallCardDtmfDialer = new DTMFTwelveKeyDialer(mInCallScreen,
-        //                                                  mOtaWidgetData.otaDtmfDialerView);
-
-        // Initialize the new DTMFTwelveKeyDialer instance.  This is
-        // needed to play local DTMF tones.
-        // mOtaCallCardDtmfDialer.startDialerSession();
-
-        // mOtaWidgetData.otaDtmfDialerView.setDialer(mOtaCallCardDtmfDialer);
-    }
-
-    /**
-     * Clear out all OTA UI widget elements. Needs to get called
-     * when OTA call ends or InCallScreen is destroyed.
-     * @param disableSpeaker parameter control whether Speaker should be turned off.
-     */
-    public void cleanOtaScreen(boolean disableSpeaker) {
-        if (DBG) log("OTA ends, cleanOtaScreen!");
-
-        mApplication.cdmaOtaScreenState.otaScreenState =
-                CdmaOtaScreenState.OtaScreenState.OTA_STATUS_UNDEFINED;
-        mApplication.cdmaOtaProvisionData.isOtaCallCommitted = false;
-        mApplication.cdmaOtaProvisionData.isOtaCallIntentProcessed = false;
-        mApplication.cdmaOtaProvisionData.inOtaSpcState = false;
-        mApplication.cdmaOtaProvisionData.activationCount = 0;
-        mApplication.cdmaOtaProvisionData.otaSpcUptime = 0;
-        mApplication.cdmaOtaInCallScreenUiState.state = State.UNDEFINED;
-
-        if (mInteractive && (mOtaWidgetData != null)) {
-            // if (mInCallTouchUi != null) mInCallTouchUi.setVisibility(View.VISIBLE);
-            // if (mCallCard != null) {
-            //     mCallCard.setVisibility(View.VISIBLE);
-            //     mCallCard.hideCallCardElements();
-            // }
-
-            // Free resources from the DTMFTwelveKeyDialer instance we created
-            // in initOtaInCallScreen().
-            // if (mOtaCallCardDtmfDialer != null) {
-            //     mOtaCallCardDtmfDialer.stopDialerSession();
-            // }
-
-            mOtaWidgetData.otaTextActivate.setVisibility(View.GONE);
-            mOtaWidgetData.otaTextListenProgress.setVisibility(View.GONE);
-            mOtaWidgetData.otaTextProgressBar.setVisibility(View.GONE);
-            mOtaWidgetData.otaTextSuccessFail.setVisibility(View.GONE);
-            mOtaWidgetData.callCardOtaButtonsActivate.setVisibility(View.GONE);
-            mOtaWidgetData.callCardOtaButtonsListenProgress.setVisibility(View.GONE);
-            mOtaWidgetData.callCardOtaButtonsFailSuccess.setVisibility(View.GONE);
-            mOtaWidgetData.otaUpperWidgets.setVisibility(View.GONE);
-            // mOtaWidgetData.otaDtmfDialerView.setVisibility(View.GONE);
-            mOtaWidgetData.otaNextButton.setVisibility(View.GONE);
-            mOtaWidgetData.otaTryAgainButton.setVisibility(View.GONE);
-        }
-
-        // turn off the speaker in case it was turned on
-        // but the OTA call could not be completed
-        if (disableSpeaker) {
-            setSpeaker(false);
-        }
-    }
-
-    /**
-     * Defines OTA information that needs to be maintained during
-     * an OTA call when display orientation changes.
-     */
-    public static class CdmaOtaProvisionData {
-        public boolean isOtaCallCommitted;
-        public boolean isOtaCallIntentProcessed;
-        public boolean inOtaSpcState;
-        public int activationCount;
-        public long otaSpcUptime;
-    }
-
-    /**
-     * Defines OTA screen configuration items read from config.xml
-     * and used to control OTA display.
-     */
-    public static class CdmaOtaConfigData {
-        public int otaShowActivationScreen;
-        public int otaShowListeningScreen;
-        public int otaShowActivateFailTimes;
-        public int otaPlaySuccessFailureTone;
-        public boolean configComplete;
-        public CdmaOtaConfigData() {
-            if (DBG) log("CdmaOtaConfigData constructor!");
-            otaShowActivationScreen = OTA_SHOW_ACTIVATION_SCREEN_OFF;
-            otaShowListeningScreen = OTA_SHOW_LISTENING_SCREEN_OFF;
-            otaShowActivateFailTimes = OTA_SHOW_ACTIVATE_FAIL_COUNT_OFF;
-            otaPlaySuccessFailureTone = OTA_PLAY_SUCCESS_FAILURE_TONE_OFF;
-        }
-    }
-
-    /**
-     * The state of the OTA InCallScreen UI.
-     */
-    public static class CdmaOtaInCallScreenUiState {
-        public enum State {
-            UNDEFINED,
-            NORMAL,
-            ENDED
-        }
-
-        public State state;
-
-        public CdmaOtaInCallScreenUiState() {
-            if (DBG) log("CdmaOtaInCallScreenState: constructor init to UNDEFINED");
-            state = CdmaOtaInCallScreenUiState.State.UNDEFINED;
-        }
-    }
-
-    /**
-     * Save the Ota InCallScreen UI state
-     */
-    public void setCdmaOtaInCallScreenUiState(CdmaOtaInCallScreenUiState.State state) {
-        if (DBG) log("setCdmaOtaInCallScreenState: " + state);
-        mApplication.cdmaOtaInCallScreenUiState.state = state;
-    }
-
-    /**
-     * Get the Ota InCallScreen UI state
-     */
-    public CdmaOtaInCallScreenUiState.State getCdmaOtaInCallScreenUiState() {
-        if (DBG) log("getCdmaOtaInCallScreenState: "
-                     + mApplication.cdmaOtaInCallScreenUiState.state);
-        return mApplication.cdmaOtaInCallScreenUiState.state;
-    }
-
-    /**
-     * The OTA screen state machine.
-     */
-    public static class CdmaOtaScreenState {
-        public enum OtaScreenState {
-            OTA_STATUS_UNDEFINED,
-            OTA_STATUS_ACTIVATION,
-            OTA_STATUS_LISTENING,
-            OTA_STATUS_PROGRESS,
-            OTA_STATUS_SUCCESS_FAILURE_DLG
-        }
-
-        public OtaScreenState otaScreenState;
-
-        public CdmaOtaScreenState() {
-            otaScreenState = OtaScreenState.OTA_STATUS_UNDEFINED;
-        }
-
-        /**
-         * {@link PendingIntent} used to report an OTASP result status code
-         * back to our caller. Can be null.
-         *
-         * Our caller (presumably SetupWizard) may create this PendingIntent,
-         * pointing back at itself, and passes it along as an extra with the
-         * ACTION_PERFORM_CDMA_PROVISIONING intent.  Then, when there's an
-         * OTASP result to report, we send that PendingIntent back, adding an
-         * extra called EXTRA_OTASP_RESULT_CODE to indicate the result.
-         *
-         * Possible result values are the OTASP_RESULT_* constants.
-         */
-        public PendingIntent otaspResultCodePendingIntent;
-    }
-
-    /** @see com.android.internal.telephony.Phone */
-    private static String otaProvisionStatusToString(int status) {
-        switch (status) {
-            case Phone.CDMA_OTA_PROVISION_STATUS_SPL_UNLOCKED:
-                return "SPL_UNLOCKED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_SPC_RETRIES_EXCEEDED:
-                return "SPC_RETRIES_EXCEEDED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_A_KEY_EXCHANGED:
-                return "A_KEY_EXCHANGED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_SSD_UPDATED:
-                return "SSD_UPDATED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_NAM_DOWNLOADED:
-                return "NAM_DOWNLOADED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_MDN_DOWNLOADED:
-                return "MDN_DOWNLOADED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_IMSI_DOWNLOADED:
-                return "IMSI_DOWNLOADED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_PRL_DOWNLOADED:
-                return "PRL_DOWNLOADED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_COMMITTED:
-                return "COMMITTED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_STARTED:
-                return "OTAPA_STARTED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_STOPPED:
-                return "OTAPA_STOPPED";
-            case Phone.CDMA_OTA_PROVISION_STATUS_OTAPA_ABORTED:
-                return "OTAPA_ABORTED";
-            default:
-                return "<unknown status" + status + ">";
-        }
-    }
-
-    private static int getLteOnCdmaMode(Context context) {
-        final TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
-                Context.TELEPHONY_SERVICE);
-        // If the telephony manager is not available yet, or if it doesn't know the answer yet,
-        // try falling back on the system property that may or may not be there
-        if (telephonyManager == null
-                || telephonyManager.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_UNKNOWN) {
-            return SystemProperties.getInt(TelephonyProperties.PROPERTY_LTE_ON_CDMA_DEVICE,
-                    PhoneConstants.LTE_ON_CDMA_UNKNOWN);
-        }
-        return telephonyManager.getLteOnCdmaMode();
-    }
-
-    private static void log(String msg) {
-        Log.d(LOG_TAG, msg);
-    }
-
-    private static void loge(String msg) {
-        Log.e(LOG_TAG, msg);
-    }
-}
diff --git a/src/com/android/phone/OutgoingCallBroadcaster.java b/src/com/android/phone/OutgoingCallBroadcaster.java
index 1a23bc4..6bb1388 100644
--- a/src/com/android/phone/OutgoingCallBroadcaster.java
+++ b/src/com/android/phone/OutgoingCallBroadcaster.java
@@ -18,7 +18,7 @@
 
 import android.Manifest;
 import android.app.Activity;
-import android.app.ActivityManagerNative;
+import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.app.AppOpsManager;
 import android.app.Dialog;
@@ -190,47 +190,6 @@
             final PhoneGlobals app = PhoneGlobals.getInstance();
             final Phone phone = PhoneGlobals.getPhone();
 
-            // OTASP-specific checks.
-            // TODO: This should probably all happen in
-            // OutgoingCallBroadcaster.onCreate(), since there's no reason to
-            // even bother with the NEW_OUTGOING_CALL broadcast if we're going
-            // to disallow the outgoing call anyway...
-            if (TelephonyCapabilities.supportsOtasp(phone)) {
-                boolean activateState = (app.cdmaOtaScreenState.otaScreenState
-                        == OtaUtils.CdmaOtaScreenState.OtaScreenState.OTA_STATUS_ACTIVATION);
-                boolean dialogState = (app.cdmaOtaScreenState.otaScreenState
-                        == OtaUtils.CdmaOtaScreenState.OtaScreenState
-                        .OTA_STATUS_SUCCESS_FAILURE_DLG);
-                boolean isOtaCallActive = false;
-
-                // TODO: Need cleaner way to check if OTA is active.
-                // Also, this check seems to be broken in one obscure case: if
-                // you interrupt an OTASP call by pressing Back then Skip,
-                // otaScreenState somehow gets left in either PROGRESS or
-                // LISTENING.
-                if ((app.cdmaOtaScreenState.otaScreenState
-                        == OtaUtils.CdmaOtaScreenState.OtaScreenState.OTA_STATUS_PROGRESS)
-                        || (app.cdmaOtaScreenState.otaScreenState
-                        == OtaUtils.CdmaOtaScreenState.OtaScreenState.OTA_STATUS_LISTENING)) {
-                    isOtaCallActive = true;
-                }
-
-                if (activateState || dialogState) {
-                    // The OTASP sequence is active, but either (1) the call
-                    // hasn't started yet, or (2) the call has ended and we're
-                    // showing the success/failure screen.  In either of these
-                    // cases it's OK to make a new outgoing call, but we need
-                    // to take down any OTASP-related UI first.
-                    if (dialogState) app.dismissOtaDialogs();
-                    app.clearOtaState();
-                } else if (isOtaCallActive) {
-                    // The actual OTASP call is active.  Don't allow new
-                    // outgoing calls at all from this state.
-                    Log.w(TAG, "OTASP call is active: disallowing a new outgoing call.");
-                    return false;
-                }
-            }
-
             if (number == null) {
                 if (DBG) Log.v(TAG, "CALL cancelled (null number), returning...");
                 return false;
@@ -429,9 +388,9 @@
         int launchedFromUid;
         String launchedFromPackage;
         try {
-            launchedFromUid = ActivityManagerNative.getDefault().getLaunchedFromUid(
+            launchedFromUid = ActivityManager.getService().getLaunchedFromUid(
                     getActivityToken());
-            launchedFromPackage = ActivityManagerNative.getDefault().getLaunchedFromPackage(
+            launchedFromPackage = ActivityManager.getService().getLaunchedFromPackage(
                     getActivityToken());
         } catch (RemoteException e) {
             launchedFromUid = -1;
@@ -635,7 +594,7 @@
         // timeout.
         mHandler.sendEmptyMessageDelayed(EVENT_OUTGOING_CALL_TIMEOUT,
                 OUTGOING_CALL_TIMEOUT_THRESHOLD);
-        sendOrderedBroadcastAsUser(broadcastIntent, UserHandle.OWNER,
+        sendOrderedBroadcastAsUser(broadcastIntent, UserHandle.SYSTEM,
                 android.Manifest.permission.PROCESS_OUTGOING_CALLS,
                 AppOpsManager.OP_PROCESS_OUTGOING_CALLS,
                 new OutgoingCallReceiver(),
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index c6081b1..15f9eba 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -18,68 +18,65 @@
 
 import android.app.Activity;
 import android.app.KeyguardManager;
-import android.app.PendingIntent;
 import android.app.ProgressDialog;
-import android.app.TaskStackBuilder;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.IBluetoothHeadsetPhone;
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.ServiceConnection;
 import android.media.AudioManager;
+import android.net.ConnectivityManager;
 import android.net.Uri;
+import android.net.sip.SipManager;
 import android.os.AsyncResult;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.IBinder;
-import android.os.IPowerManager;
 import android.os.Message;
 import android.os.PersistableBundle;
 import android.os.PowerManager;
-import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.SystemProperties;
 import android.os.UpdateLock;
-import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.PreferenceManager;
-import android.provider.Settings.System;
+import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
 import android.telephony.ServiceState;
-import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.util.LocalLog;
 import android.util.Log;
+import android.widget.Toast;
 
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallManager;
-import com.android.internal.telephony.IccCard;
 import com.android.internal.telephony.IccCardConstants;
 import com.android.internal.telephony.MmiCode;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
-import com.android.internal.telephony.SubscriptionController;
+import com.android.internal.telephony.SettingsObserver;
 import com.android.internal.telephony.TelephonyCapabilities;
 import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.telephony.dataconnection.DataConnectionReasons;
+import com.android.internal.telephony.dataconnection.DataConnectionReasons.DataDisallowedReasonType;
+import com.android.internal.util.IndentingPrintWriter;
 import com.android.phone.common.CallLogAsync;
 import com.android.phone.settings.SettingsConstants;
-import com.android.server.sip.SipService;
-import com.android.services.telephony.activation.SimActivationManager;
+import com.android.phone.vvm.CarrierVvmPackageInstalledReceiver;
+import com.android.services.telephony.sip.SipAccountRegistry;
+import com.android.services.telephony.sip.SipUtil;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
 
 /**
  * Global state for the telephony subsystem when running in the primary
  * phone process.
  */
 public class PhoneGlobals extends ContextWrapper {
-    public static final String LOG_TAG = "PhoneApp";
+    public static final String LOG_TAG = "PhoneGlobals";
 
     /**
      * Phone app-wide debug level:
@@ -109,7 +106,9 @@
     private static final int EVENT_DATA_ROAMING_DISCONNECTED = 10;
     private static final int EVENT_DATA_ROAMING_OK = 11;
     private static final int EVENT_UNSOL_CDMA_INFO_RECORD = 12;
-    private static final int EVENT_START_SIP_SERVICE = 13;
+    private static final int EVENT_RESTART_SIP = 13;
+    private static final int EVENT_DATA_ROAMING_SETTINGS_CHANGED = 14;
+    private static final int EVENT_MOBILE_DATA_SETTINGS_CHANGED = 15;
 
     // The MMI codes are also used by the InCallScreen.
     public static final int MMI_INITIATE = 51;
@@ -118,6 +117,9 @@
     // Don't use message codes larger than 99 here; those are reserved for
     // the individual Activities of the Phone UI.
 
+    public static final int AIRPLANE_ON = 1;
+    public static final int AIRPLANE_OFF = 0;
+
     /**
      * Allowable values for the wake lock code.
      *   SLEEP means the device can be put to sleep.
@@ -130,14 +132,6 @@
         FULL
     }
 
-    /**
-     * Intent Action used for hanging up the current call from Notification bar. This will
-     * choose first ringing call, first active call, or first background call (typically in
-     * HOLDING state).
-     */
-    public static final String ACTION_HANG_UP_ONGOING_CALL =
-            "com.android.phone.ACTION_HANG_UP_ONGOING_CALL";
-
     private static PhoneGlobals sMe;
 
     // A few important fields we expose to the rest of the package
@@ -148,11 +142,10 @@
     CallerInfoCache callerInfoCache;
     NotificationMgr notificationMgr;
     public PhoneInterfaceManager phoneMgr;
-    public SimActivationManager simActivationManager;
     CarrierConfigLoader configLoader;
 
     private CallGatewayManager callGatewayManager;
-    private CallStateMonitor callStateMonitor;
+    private Phone phoneInEcm;
 
     static boolean sVoiceCapable = true;
 
@@ -166,74 +159,35 @@
     private Activity mPUKEntryActivity;
     private ProgressDialog mPUKEntryProgressDialog;
 
-    private boolean mIsSimPinEnabled;
-    private String mCachedSimPin;
-
-    // True if we are beginning a call, but the phone state has not changed yet
-    private boolean mBeginningCall;
-    private boolean mDataDisconnectedDueToRoaming = false;
-
-    // Last phone state seen by updatePhoneState()
-    private PhoneConstants.State mLastPhoneState = PhoneConstants.State.IDLE;
+    private boolean mNoDataDueToRoaming = false;
 
     private WakeState mWakeState = WakeState.SLEEP;
 
     private PowerManager mPowerManager;
-    private IPowerManager mPowerManagerService;
     private PowerManager.WakeLock mWakeLock;
     private PowerManager.WakeLock mPartialWakeLock;
     private KeyguardManager mKeyguardManager;
 
     private UpdateLock mUpdateLock;
 
+    private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+    private final LocalLog mDataRoamingNotifLog = new LocalLog(50);
+
     // Broadcast receiver for various intent broadcasts (see onCreate())
     private final BroadcastReceiver mReceiver = new PhoneAppBroadcastReceiver();
+    // Broadcast receiver for SIP based intents (see onCreate())
+    private final SipReceiver mSipReceiver = new SipReceiver();
 
-    /** boolean indicating restoring mute state on InCallScreen.onResume() */
-    private boolean mShouldRestoreMuteOnInCallResume;
-
-    /**
-     * The singleton OtaUtils instance used for OTASP calls.
-     *
-     * The OtaUtils instance is created lazily the first time we need to
-     * make an OTASP call, regardless of whether it's an interactive or
-     * non-interactive OTASP call.
-     */
-    public OtaUtils otaUtils;
-
-    // Following are the CDMA OTA information Objects used during OTA Call.
-    // cdmaOtaProvisionData object store static OTA information that needs
-    // to be maintained even during Slider open/close scenarios.
-    // cdmaOtaConfigData object stores configuration info to control visiblity
-    // of each OTA Screens.
-    // cdmaOtaScreenState object store OTA Screen State information.
-    public OtaUtils.CdmaOtaProvisionData cdmaOtaProvisionData;
-    public OtaUtils.CdmaOtaConfigData cdmaOtaConfigData;
-    public OtaUtils.CdmaOtaScreenState cdmaOtaScreenState;
-    public OtaUtils.CdmaOtaInCallScreenUiState cdmaOtaInCallScreenUiState;
-
-    /**
-     * Set the restore mute state flag. Used when we are setting the mute state
-     * OUTSIDE of user interaction {@link PhoneUtils#startNewCall(Phone)}
-     */
-    /*package*/void setRestoreMuteOnInCallResume (boolean mode) {
-        mShouldRestoreMuteOnInCallResume = mode;
-    }
+    private final CarrierVvmPackageInstalledReceiver mCarrierVvmPackageInstalledReceiver =
+            new CarrierVvmPackageInstalledReceiver();
+    private final SettingsObserver mSettingsObserver;
 
     Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             PhoneConstants.State phoneState;
+            if (VDBG) Log.v(LOG_TAG, "event=" + msg.what);
             switch (msg.what) {
-                // Starts the SIP service. It's a no-op if SIP API is not supported
-                // on the deivce.
-                // TODO: Having the phone process host the SIP service is only
-                // temporary. Will move it to a persistent communication process
-                // later.
-                case EVENT_START_SIP_SERVICE:
-                    SipService.start(getApplicationContext());
-                    break;
-
                 // TODO: This event should be handled by the lock screen, just
                 // like the "SIM missing" and "Sim locked" cases (bug 1804111).
                 case EVENT_SIM_NETWORK_LOCKED:
@@ -289,6 +243,20 @@
                 case EVENT_UNSOL_CDMA_INFO_RECORD:
                     //TODO: handle message here;
                     break;
+                case EVENT_RESTART_SIP:
+                    // This should only run if the Phone process crashed and was restarted. We do
+                    // not want this running if the device is still in the FBE encrypted state.
+                    // This is the same procedure that is triggered in the SipIncomingCallReceiver
+                    // upon BOOT_COMPLETED.
+                    UserManager userManager = UserManager.get(sMe);
+                    if (userManager != null && userManager.isUserUnlocked()) {
+                        SipUtil.startSipService();
+                    }
+                    break;
+                case EVENT_DATA_ROAMING_SETTINGS_CHANGED:
+                case EVENT_MOBILE_DATA_SETTINGS_CHANGED:
+                    updateDataRoamingStatus();
+                    break;
             }
         }
     };
@@ -296,6 +264,7 @@
     public PhoneGlobals(Context context) {
         super(context);
         sMe = this;
+        mSettingsObserver = new SettingsObserver(context, mHandler);
     }
 
     public void onCreate() {
@@ -330,7 +299,8 @@
             // status bar icons and control other status bar behavior.
             notificationMgr = NotificationMgr.init(this);
 
-            mHandler.sendEmptyMessage(EVENT_START_SIP_SERVICE);
+            // If PhoneGlobals has crashed and is being restarted, then restart.
+            mHandler.sendEmptyMessage(EVENT_RESTART_SIP);
 
             // Create an instance of CdmaPhoneCallState and initialize it to IDLE
             cdmaPhoneCallState = new CdmaPhoneCallState();
@@ -345,11 +315,6 @@
 
             mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
 
-            // get a handle to the service so that we can use it later when we
-            // want to set the poke lock.
-            mPowerManagerService = IPowerManager.Stub.asInterface(
-                    ServiceManager.getService("power"));
-
             // Get UpdateLock to suppress system-update related events (e.g. dialog show-up)
             // during phone calls.
             mUpdateLock = new UpdateLock("phone");
@@ -371,18 +336,15 @@
             // The asynchronous caching will start just after this call.
             callerInfoCache = CallerInfoCache.init(this);
 
-            // Monitors call activity from the telephony layer
-            callStateMonitor = new CallStateMonitor(mCM);
-
             phoneMgr = PhoneInterfaceManager.init(this, PhoneFactory.getDefaultPhone());
 
             configLoader = CarrierConfigLoader.init(this);
 
-            // Create the CallNotifer singleton, which handles
+            // Create the CallNotifier singleton, which handles
             // asynchronous events from the telephony layer (like
             // launching the incoming-call UI when an incoming call comes
             // in.)
-            notifier = CallNotifier.init(this, callLogger, callStateMonitor);
+            notifier = CallNotifier.init(this);
 
             PhoneUtils.registerIccStatus(mHandler, EVENT_SIM_NETWORK_LOCKED);
 
@@ -395,15 +357,24 @@
             // Register for misc other intent broadcasts.
             IntentFilter intentFilter =
                     new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
-            intentFilter.addAction(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
             intentFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
             intentFilter.addAction(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
             intentFilter.addAction(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED);
             intentFilter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED);
+            intentFilter.addAction(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
+            intentFilter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
             registerReceiver(mReceiver, intentFilter);
 
+            IntentFilter sipIntentFilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
+            sipIntentFilter.addAction(SipManager.ACTION_SIP_SERVICE_UP);
+            sipIntentFilter.addAction(SipManager.ACTION_SIP_CALL_OPTION_CHANGED);
+            sipIntentFilter.addAction(SipManager.ACTION_SIP_REMOVE_PHONE);
+            registerReceiver(mSipReceiver, sipIntentFilter);
+
+            mCarrierVvmPackageInstalledReceiver.register(this);
+
             //set the default values for the preferences in the phone.
-            PreferenceManager.setDefaultValues(this, R.xml.network_setting, false);
+            PreferenceManager.setDefaultValues(this, R.xml.network_setting_fragment, false);
 
             PreferenceManager.setDefaultValues(this, R.xml.call_feature_setting, false);
 
@@ -413,19 +384,9 @@
             PhoneUtils.setAudioMode(mCM);
         }
 
-        cdmaOtaProvisionData = new OtaUtils.CdmaOtaProvisionData();
-        cdmaOtaConfigData = new OtaUtils.CdmaOtaConfigData();
-        cdmaOtaScreenState = new OtaUtils.CdmaOtaScreenState();
-        cdmaOtaInCallScreenUiState = new OtaUtils.CdmaOtaInCallScreenUiState();
-
-        simActivationManager = new SimActivationManager();
-
         // XXX pre-load the SimProvider so that it's ready
         resolver.getType(Uri.parse("content://icc/adn"));
 
-        // start with the default value to set the mute state.
-        mShouldRestoreMuteOnInCallResume = false;
-
         // TODO: Register for Cdma Information Records
         // phone.registerCdmaInformationRecord(mHandler, EVENT_UNSOL_CDMA_INFO_RECORD, null);
 
@@ -478,70 +439,32 @@
     }
 
     public PersistableBundle getCarrierConfig() {
-        return getCarrierConfigForSubId(SubscriptionManager.getDefaultSubId());
+        return getCarrierConfigForSubId(SubscriptionManager.getDefaultSubscriptionId());
     }
 
     public PersistableBundle getCarrierConfigForSubId(int subId) {
         return configLoader.getConfigForSubId(subId);
     }
 
-    /**
-     * Returns PendingIntent for hanging up ongoing phone call. This will typically be used from
-     * Notification context.
-     */
-    /* package */ static PendingIntent createHangUpOngoingCallPendingIntent(Context context) {
-        Intent intent = new Intent(PhoneGlobals.ACTION_HANG_UP_ONGOING_CALL, null,
-                context, NotificationBroadcastReceiver.class);
-        return PendingIntent.getBroadcast(context, 0, intent, 0);
-    }
-
-    boolean isSimPinEnabled() {
-        return mIsSimPinEnabled;
-    }
-
-    boolean authenticateAgainstCachedSimPin(String pin) {
-        return (mCachedSimPin != null && mCachedSimPin.equals(pin));
-    }
-
-    void setCachedSimPin(String pin) {
-        mCachedSimPin = pin;
-    }
-
-    /**
-     * Handles OTASP-related events from the telephony layer.
-     *
-     * While an OTASP call is active, the CallNotifier forwards
-     * OTASP-related telephony events to this method.
-     */
-    void handleOtaspEvent(Message msg) {
-        if (DBG) Log.d(LOG_TAG, "handleOtaspEvent(message " + msg + ")...");
-
-        if (otaUtils == null) {
-            // We shouldn't be getting OTASP events without ever
-            // having started the OTASP call in the first place!
-            Log.w(LOG_TAG, "handleOtaEvents: got an event but otaUtils is null! "
-                  + "message = " + msg);
-            return;
+    private void registerSettingsObserver() {
+        mSettingsObserver.unobserve();
+        String dataRoamingSetting = Settings.Global.DATA_ROAMING;
+        String mobileDataSetting = Settings.Global.MOBILE_DATA;
+        if (TelephonyManager.getDefault().getSimCount() > 1) {
+            int subId = mDefaultDataSubId;
+            if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                dataRoamingSetting += subId;
+                mobileDataSetting += subId;
+            }
         }
 
-        otaUtils.onOtaProvisionStatusChanged((AsyncResult) msg.obj);
-    }
+        // Listen for user data roaming setting changed event
+        mSettingsObserver.observe(Settings.Global.getUriFor(dataRoamingSetting),
+                EVENT_DATA_ROAMING_SETTINGS_CHANGED);
 
-    /**
-     * Similarly, handle the disconnect event of an OTASP call
-     * by forwarding it to the OtaUtils instance.
-     */
-    /* package */ void handleOtaspDisconnect() {
-        if (DBG) Log.d(LOG_TAG, "handleOtaspDisconnect()...");
-
-        if (otaUtils == null) {
-            // We shouldn't be getting OTASP events without ever
-            // having started the OTASP call in the first place!
-            Log.w(LOG_TAG, "handleOtaspDisconnect: otaUtils is null!");
-            return;
-        }
-
-        otaUtils.onOtaspDisconnect();
+        // Listen for mobile data setting changed event
+        mSettingsObserver.observe(Settings.Global.getUriFor(mobileDataSetting),
+                EVENT_MOBILE_DATA_SETTINGS_CHANGED);
     }
 
     /**
@@ -577,10 +500,6 @@
         mPUKEntryProgressDialog = dialog;
     }
 
-    ProgressDialog getPUKEntryProgressDialog() {
-        return mPUKEntryProgressDialog;
-    }
-
     /**
      * Controls whether or not the screen is allowed to sleep.
      *
@@ -686,51 +605,6 @@
         requestWakeState(keepScreenOn ? WakeState.FULL : WakeState.SLEEP);
     }
 
-    /**
-     * Manually pokes the PowerManager's userActivity method.  Since we
-     * set the {@link WindowManager.LayoutParams#INPUT_FEATURE_DISABLE_USER_ACTIVITY}
-     * flag while the InCallScreen is active when there is no proximity sensor,
-     * we need to do this for touch events that really do count as user activity
-     * (like pressing any onscreen UI elements.)
-     */
-    /* package */ void pokeUserActivity() {
-        if (VDBG) Log.d(LOG_TAG, "pokeUserActivity()...");
-        mPowerManager.userActivity(SystemClock.uptimeMillis(), false);
-    }
-
-    /**
-     * Notifies the phone app when the phone state changes.
-     *
-     * This method will updates various states inside Phone app (e.g. update-lock state, etc.)
-     */
-    /* package */ void updatePhoneState(PhoneConstants.State state) {
-        if (state != mLastPhoneState) {
-            mLastPhoneState = state;
-
-            // Try to acquire or release UpdateLock.
-            //
-            // Watch out: we don't release the lock here when the screen is still in foreground.
-            // At that time InCallScreen will release it on onPause().
-            if (state != PhoneConstants.State.IDLE) {
-                // UpdateLock is a recursive lock, while we may get "acquire" request twice and
-                // "release" request once for a single call (RINGING + OFFHOOK and IDLE).
-                // We need to manually ensure the lock is just acquired once for each (and this
-                // will prevent other possible buggy situations too).
-                if (!mUpdateLock.isHeld()) {
-                    mUpdateLock.acquire();
-                }
-            } else {
-                if (mUpdateLock.isHeld()) {
-                    mUpdateLock.release();
-                }
-            }
-        }
-    }
-
-    /* package */ PhoneConstants.State getPhoneState() {
-        return mLastPhoneState;
-    }
-
     KeyguardManager getKeyguardManager() {
         return mKeyguardManager;
     }
@@ -741,25 +615,79 @@
         PhoneUtils.displayMMIComplete(mmiCode.getPhone(), getInstance(), mmiCode, null, null);
     }
 
-    private void initForNewRadioTechnology(int phoneId) {
+    private void initForNewRadioTechnology() {
         if (DBG) Log.d(LOG_TAG, "initForNewRadioTechnology...");
-
-        final Phone phone = PhoneFactory.getPhone(phoneId);
-        if (phone == null || !TelephonyCapabilities.supportsOtasp(phone)) {
-            // Clean up OTA for non-CDMA since it is only valid for CDMA.
-            clearOtaState();
-        }
-
         notifier.updateCallNotifierRegistrationsAfterRadioTechnologyChange();
-        callStateMonitor.updateAfterRadioTechnologyChange();
+    }
 
-        // Update registration for ICC status after radio technology change
-        IccCard sim = phone == null ? null : phone.getIccCard();
-        if (sim != null) {
-            if (DBG) Log.d(LOG_TAG, "Update registration for ICC status...");
+    private void handleAirplaneModeChange(Context context, int newMode) {
+        int cellState = Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.CELL_ON, PhoneConstants.CELL_ON_FLAG);
+        boolean isAirplaneNewlyOn = (newMode == 1);
+        switch (cellState) {
+            case PhoneConstants.CELL_OFF_FLAG:
+                // Airplane mode does not affect the cell radio if user
+                // has turned it off.
+                break;
+            case PhoneConstants.CELL_ON_FLAG:
+                maybeTurnCellOff(context, isAirplaneNewlyOn);
+                break;
+            case PhoneConstants.CELL_OFF_DUE_TO_AIRPLANE_MODE_FLAG:
+                maybeTurnCellOn(context, isAirplaneNewlyOn);
+                break;
+        }
+    }
 
-            //Register all events new to the new active phone
-            sim.registerForNetworkLocked(mHandler, EVENT_SIM_NETWORK_LOCKED, null);
+    /*
+     * Returns true if the radio must be turned off when entering airplane mode.
+     */
+    private boolean isCellOffInAirplaneMode(Context context) {
+        String airplaneModeRadios = Settings.Global.getString(context.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_RADIOS);
+        return airplaneModeRadios == null
+                || airplaneModeRadios.contains(Settings.Global.RADIO_CELL);
+    }
+
+    private void setRadioPowerOff(Context context) {
+        Log.i(LOG_TAG, "Turning radio off - airplane");
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.CELL_ON,
+                 PhoneConstants.CELL_OFF_DUE_TO_AIRPLANE_MODE_FLAG);
+        SystemProperties.set("persist.radio.airplane_mode_on", "1");
+        Settings.Global.putInt(getContentResolver(), Settings.Global.ENABLE_CELLULAR_ON_BOOT, 0);
+        PhoneUtils.setRadioPower(false);
+    }
+
+    private void setRadioPowerOn(Context context) {
+        Log.i(LOG_TAG, "Turning radio on - airplane");
+        Settings.Global.putInt(context.getContentResolver(), Settings.Global.CELL_ON,
+                PhoneConstants.CELL_ON_FLAG);
+        Settings.Global.putInt(getContentResolver(), Settings.Global.ENABLE_CELLULAR_ON_BOOT,
+                1);
+        SystemProperties.set("persist.radio.airplane_mode_on", "0");
+        PhoneUtils.setRadioPower(true);
+    }
+
+    private void maybeTurnCellOff(Context context, boolean isAirplaneNewlyOn) {
+        if (isAirplaneNewlyOn) {
+            // If we are trying to turn off the radio, make sure there are no active
+            // emergency calls.  If there are, switch airplane mode back to off.
+            if (PhoneUtils.isInEmergencyCall(mCM)) {
+                // Switch airplane mode back to off.
+                ConnectivityManager.from(this).setAirplaneMode(false);
+                Toast.makeText(this, R.string.radio_off_during_emergency_call, Toast.LENGTH_LONG)
+                        .show();
+                Log.i(LOG_TAG, "Ignoring airplane mode: emergency call. Turning airplane off");
+            } else if (isCellOffInAirplaneMode(context)) {
+                setRadioPowerOff(context);
+            } else {
+                Log.i(LOG_TAG, "Ignoring airplane mode: settings prevent cell radio power off");
+            }
+        }
+    }
+
+    private void maybeTurnCellOn(Context context, boolean isAirplaneNewlyOn) {
+        if (!isAirplaneNewlyOn) {
+            setRadioPowerOn(context);
         }
     }
 
@@ -771,38 +699,13 @@
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
             if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
-                boolean enabled = System.getInt(getContentResolver(),
-                        System.AIRPLANE_MODE_ON, 0) == 0;
-                PhoneUtils.setRadioPower(enabled);
-            } else if (action.equals(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
-                int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
-                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-                int phoneId = SubscriptionManager.getPhoneId(subId);
-                String state = intent.getStringExtra(PhoneConstants.STATE_KEY);
-                if (VDBG) {
-                    Log.d(LOG_TAG, "mReceiver: ACTION_ANY_DATA_CONNECTION_STATE_CHANGED");
-                    Log.d(LOG_TAG, "- state: " + state);
-                    Log.d(LOG_TAG, "- reason: "
-                    + intent.getStringExtra(PhoneConstants.STATE_CHANGE_REASON_KEY));
-                    Log.d(LOG_TAG, "- subId: " + subId);
-                    Log.d(LOG_TAG, "- phoneId: " + phoneId);
+                int airplaneMode = Settings.Global.getInt(getContentResolver(),
+                        Settings.Global.AIRPLANE_MODE_ON, AIRPLANE_OFF);
+                // Treat any non-OFF values as ON.
+                if (airplaneMode != AIRPLANE_OFF) {
+                    airplaneMode = AIRPLANE_ON;
                 }
-                Phone phone = SubscriptionManager.isValidPhoneId(phoneId) ?
-                        PhoneFactory.getPhone(phoneId) : PhoneFactory.getDefaultPhone();
-
-                // The "data disconnected due to roaming" notification is shown
-                // if (a) you have the "data roaming" feature turned off, and
-                // (b) you just lost data connectivity because you're roaming.
-                boolean disconnectedDueToRoaming =
-                        !phone.getDataRoamingEnabled()
-                        && PhoneConstants.DataState.DISCONNECTED.equals(state)
-                        && Phone.REASON_ROAMING_ON.equals(
-                            intent.getStringExtra(PhoneConstants.STATE_CHANGE_REASON_KEY));
-                if (mDataDisconnectedDueToRoaming != disconnectedDueToRoaming) {
-                    mDataDisconnectedDueToRoaming = disconnectedDueToRoaming;
-                    mHandler.sendEmptyMessage(disconnectedDueToRoaming
-                            ? EVENT_DATA_ROAMING_DISCONNECTED : EVENT_DATA_ROAMING_OK);
-                }
+                handleAirplaneModeChange(context, airplaneMode);
             } else if ((action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) &&
                     (mPUKEntryActivity != null)) {
                 // if an attempt to un-PUK-lock the device was made, while we're
@@ -813,51 +716,72 @@
                         intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE)));
             } else if (action.equals(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
                 String newPhone = intent.getStringExtra(PhoneConstants.PHONE_NAME_KEY);
-                int phoneId = intent.getIntExtra(PhoneConstants.PHONE_KEY,
-                        SubscriptionManager.INVALID_PHONE_INDEX);
-                Log.d(LOG_TAG, "Radio technology switched. Now " + newPhone + " (" + phoneId
-                        + ") is active.");
-                initForNewRadioTechnology(phoneId);
+                Log.d(LOG_TAG, "Radio technology switched. Now " + newPhone + " is active.");
+                initForNewRadioTechnology();
             } else if (action.equals(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED)) {
                 handleServiceStateChanged(intent);
             } else if (action.equals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED)) {
-                if (TelephonyCapabilities.supportsEcm(mCM.getFgPhone())) {
-                    Log.d(LOG_TAG, "Emergency Callback Mode arrived in PhoneApp.");
-                    // Start Emergency Callback Mode service
-                    if (intent.getBooleanExtra("phoneinECMState", false)) {
-                        context.startService(new Intent(context,
-                                EmergencyCallbackModeService.class));
+                int phoneId = intent.getIntExtra(PhoneConstants.PHONE_KEY, 0);
+                phoneInEcm = PhoneFactory.getPhone(phoneId);
+                Log.d(LOG_TAG, "Emergency Callback Mode. phoneId:" + phoneId);
+                if (phoneInEcm != null) {
+                    if (TelephonyCapabilities.supportsEcm(phoneInEcm)) {
+                        Log.d(LOG_TAG, "Emergency Callback Mode arrived in PhoneApp.");
+                        // Start Emergency Callback Mode service
+                        if (intent.getBooleanExtra("phoneinECMState", false)) {
+                            context.startService(new Intent(context,
+                                    EmergencyCallbackModeService.class));
+                        } else {
+                            phoneInEcm = null;
+                        }
+                    } else {
+                        // It doesn't make sense to get ACTION_EMERGENCY_CALLBACK_MODE_CHANGED
+                        // on a device that doesn't support ECM in the first place.
+                        Log.e(LOG_TAG, "Got ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, but "
+                                + "ECM isn't supported for phone: " + phoneInEcm.getPhoneName());
+                        phoneInEcm = null;
                     }
                 } else {
-                    // It doesn't make sense to get ACTION_EMERGENCY_CALLBACK_MODE_CHANGED
-                    // on a device that doesn't support ECM in the first place.
-                    Log.e(LOG_TAG, "Got ACTION_EMERGENCY_CALLBACK_MODE_CHANGED, "
-                            + "but ECM isn't supported for phone: "
-                            + mCM.getFgPhone().getPhoneName());
+                    Log.w(LOG_TAG, "phoneInEcm is null.");
+                }
+            } else if (action.equals(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)) {
+                // Roaming status could be overridden by carrier config, so we need to update it.
+                if (VDBG) Log.v(LOG_TAG, "carrier config changed.");
+                updateDataRoamingStatus();
+            } else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
+                // We also need to pay attention when default data subscription changes.
+                if (VDBG) Log.v(LOG_TAG, "default data sub changed.");
+                mDefaultDataSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+                registerSettingsObserver();
+                Phone phone = getPhone(mDefaultDataSubId);
+                if (phone != null) {
+                    updateDataRoamingStatus();
                 }
             }
         }
     }
 
-    /**
-     * Accepts broadcast Intents which will be prepared by {@link NotificationMgr} and thus
-     * sent from framework's notification mechanism (which is outside Phone context).
-     * This should be visible from outside, but shouldn't be in "exported" state.
-     *
-     * TODO: If possible merge this into PhoneAppBroadcastReceiver.
-     */
-    public static class NotificationBroadcastReceiver extends BroadcastReceiver {
+    private class SipReceiver extends BroadcastReceiver {
+
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
-            // TODO: use "if (VDBG)" here.
-            Log.d(LOG_TAG, "Broadcast from Notification: " + action);
 
-            if (action.equals(ACTION_HANG_UP_ONGOING_CALL)) {
-                PhoneUtils.hangup(PhoneGlobals.getInstance().mCM);
+            SipAccountRegistry sipAccountRegistry = SipAccountRegistry.getInstance();
+            if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
+                SipUtil.startSipService();
+            } else if (action.equals(SipManager.ACTION_SIP_SERVICE_UP)
+                    || action.equals(SipManager.ACTION_SIP_CALL_OPTION_CHANGED)) {
+                sipAccountRegistry.setup(context);
+            } else if (action.equals(SipManager.ACTION_SIP_REMOVE_PHONE)) {
+                if (DBG) {
+                    Log.d(LOG_TAG, "SIP_REMOVE_PHONE "
+                            + intent.getStringExtra(SipManager.EXTRA_LOCAL_URI));
+                }
+                sipAccountRegistry.removeSipProfile(intent.getStringExtra(
+                        SipManager.EXTRA_LOCAL_URI));
             } else {
-                Log.w(LOG_TAG, "Received hang-up request from notification,"
-                        + " but there's no call the system can hang up.");
+                if (DBG) Log.d(LOG_TAG, "onReceive, action not processed: " + action);
             }
         }
     }
@@ -870,45 +794,66 @@
          * future.
          */
 
+        if (VDBG) Log.v(LOG_TAG, "handleServiceStateChanged");
         // If service just returned, start sending out the queued messages
         Bundle extras = intent.getExtras();
         if (extras != null) {
             ServiceState ss = ServiceState.newFromBundle(extras);
             if (ss != null) {
                 int state = ss.getState();
-                notificationMgr.updateNetworkSelection(state);
+                int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
+                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+                notificationMgr.updateNetworkSelection(state, subId);
+
+                if (VDBG) {
+                    Log.v(LOG_TAG, "subId=" + subId + ",mDefaultDataSubId="
+                            + mDefaultDataSubId + ",ss roaming=" + ss.getDataRoaming());
+                }
+                if (subId == mDefaultDataSubId) {
+                    updateDataRoamingStatus();
+                }
             }
         }
     }
 
-    public boolean isOtaCallInActiveState() {
-        boolean otaCallActive = false;
-        if (VDBG) Log.d(LOG_TAG, "- isOtaCallInActiveState " + otaCallActive);
-        return otaCallActive;
-    }
+    /**
+     * When roaming, if mobile data cannot be established due to data roaming not enabled, we need
+     * to notify the user so they can enable it through settings. Vise versa if the condition
+     * changes, we need to dismiss the notification.
+     */
+    private void updateDataRoamingStatus() {
+        if (VDBG) Log.v(LOG_TAG, "updateDataRoamingStatus");
+        Phone phone = getPhone(mDefaultDataSubId);
+        if (phone == null) {
+            Log.w(LOG_TAG, "Can't get phone with sub id = " + mDefaultDataSubId);
+            return;
+        }
 
-    public boolean isOtaCallInEndState() {
-        boolean otaCallEnded = false;
-        if (VDBG) Log.d(LOG_TAG, "- isOtaCallInEndState " + otaCallEnded);
-        return otaCallEnded;
-    }
-
-    // it is safe to call clearOtaState() even if the InCallScreen isn't active
-    public void clearOtaState() {
-        if (DBG) Log.d(LOG_TAG, "- clearOtaState ...");
-        if (otaUtils != null) {
-            otaUtils.cleanOtaScreen(true);
-            if (DBG) Log.d(LOG_TAG, "  - clearOtaState clears OTA screen");
+        DataConnectionReasons reasons = new DataConnectionReasons();
+        boolean dataAllowed = phone.isDataAllowed(reasons);
+        mDataRoamingNotifLog.log("dataAllowed=" + dataAllowed + ", reasons=" + reasons);
+        if (VDBG) Log.v(LOG_TAG, "dataAllowed=" + dataAllowed + ", reasons=" + reasons);
+        if (!mNoDataDueToRoaming
+                && !dataAllowed
+                && reasons.containsOnly(DataDisallowedReasonType.ROAMING_DISABLED)) {
+            // If the only reason of no data is data roaming disabled, then we notify the user
+            // so the user can turn on data roaming.
+            mNoDataDueToRoaming = true;
+            Log.d(LOG_TAG, "Show roaming disconnected notification");
+            mDataRoamingNotifLog.log("Show");
+            mHandler.sendEmptyMessage(EVENT_DATA_ROAMING_DISCONNECTED);
+        } else if (mNoDataDueToRoaming && (dataAllowed
+                || !reasons.containsOnly(DataDisallowedReasonType.ROAMING_DISABLED))) {
+            // Otherwise dismiss the notification we showed earlier.
+            mNoDataDueToRoaming = false;
+            Log.d(LOG_TAG, "Dismiss roaming disconnected notification");
+            mDataRoamingNotifLog.log("Hide. data allowed=" + dataAllowed + ", reasons=" + reasons);
+            mHandler.sendEmptyMessage(EVENT_DATA_ROAMING_OK);
         }
     }
 
-    // it is safe to call dismissOtaDialogs() even if the InCallScreen isn't active
-    public void dismissOtaDialogs() {
-        if (DBG) Log.d(LOG_TAG, "- dismissOtaDialogs ...");
-        if (otaUtils != null) {
-            otaUtils.dismissAllOtaDialogs();
-            if (DBG) Log.d(LOG_TAG, "  - dismissOtaDialogs clears OTA dialogs");
-        }
+    public Phone getPhoneInEcm() {
+        return phoneInEcm;
     }
 
     /**
@@ -926,24 +871,53 @@
      * @param subId the subscription id we should dismiss the notification for.
      */
     public void clearMwiIndicator(int subId) {
-        notificationMgr.updateMwi(subId, false);
+        // Setting voiceMessageCount to 0 will remove the current notification and clear the system
+        // cached value.
+        Phone phone = getPhone(subId);
+        if (phone == null) {
+            Log.w(LOG_TAG, "clearMwiIndicator on null phone, subId:" + subId);
+        } else {
+            phone.setVoiceMessageCount(0);
+        }
     }
 
     /**
-     * "Call origin" may be used by Contacts app to specify where the phone call comes from.
-     * Currently, the only permitted value for this extra is {@link #ALLOWED_EXTRA_CALL_ORIGIN}.
-     * Any other value will be ignored, to make sure that malicious apps can't trick the in-call
-     * UI into launching some random other app after a call ends.
+     * Enables or disables the visual voicemail check for message waiting indicator. Default value
+     * is true. MWI is the traditional voicemail notification which should be suppressed if visual
+     * voicemail is active. {@link NotificationMgr#updateMwi(int, boolean, boolean)} currently
+     * checks the {@link android.provider.VoicemailContract.Status#CONFIGURATION_STATE} to suppress
+     * the MWI, but there are several issues. b/31229016 is a bug that when the device boots the
+     * configuration state will be cleared and the MWI for voicemail that arrives when the device
+     * is offline will be cleared, even if the account cannot be activated. A full solution will be
+     * adding a setMwiEnabled() method and stop checking the configuration state, but that is too
+     * risky at this moment. This is a temporary workaround to shut down the configuration state
+     * check if visual voicemail cannot be activated.
+     * <p>TODO(twyen): implement the setMwiEnabled() mentioned above.
      *
-     * TODO: make this more generic. Note that we should let the "origin" specify its package
-     * while we are now assuming it is "com.android.contacts"
+     * @param subId the account to set the enabled state
      */
-    public static final String EXTRA_CALL_ORIGIN = "com.android.phone.CALL_ORIGIN";
-    private static final String DEFAULT_CALL_ORIGIN_PACKAGE = "com.android.dialer";
-    private static final String ALLOWED_EXTRA_CALL_ORIGIN =
-            "com.android.dialer.DialtactsActivity";
+    public void setShouldCheckVisualVoicemailConfigurationForMwi(int subId, boolean enabled) {
+        notificationMgr.setShouldCheckVisualVoicemailConfigurationForMwi(subId, enabled);
+    }
+
     /**
-     * Used to determine if the preserved call origin is fresh enough.
+     * Dump the state of the object, add calls to other objects as desired.
+     *
+     * @param fd File descriptor
+     * @param printWriter Print writer
+     * @param args Arguments
      */
-    private static final long CALL_ORIGIN_EXPIRATION_MILLIS = 30 * 1000;
+    public void dump(FileDescriptor fd, PrintWriter printWriter, String[] args) {
+        IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, "  ");
+        pw.println("------- PhoneGlobals -------");
+        pw.increaseIndent();
+        pw.println("mNoDataDueToRoaming=" + mNoDataDueToRoaming);
+        pw.println("mDefaultDataSubId=" + mDefaultDataSubId);
+        pw.println("mDataRoamingNotifLog:");
+        pw.increaseIndent();
+        mDataRoamingNotifLog.dump(fd, pw, args);
+        pw.decreaseIndent();
+        pw.decreaseIndent();
+        pw.println("------- End PhoneGlobals -------");
+    }
 }
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 4208b06..2c4ebee 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -16,76 +16,107 @@
 
 package com.android.phone;
 
+import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
+
+import android.Manifest.permission;
 import android.app.ActivityManager;
 import android.app.AppOpsManager;
+import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.net.NetworkStats;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
+import android.os.Messenger;
 import android.os.Process;
+import android.os.PersistableBundle;
+import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.WorkSource;
 import android.preference.PreferenceManager;
 import android.provider.Settings;
+import android.service.carrier.CarrierIdentifier;
 import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
 import android.telephony.CellInfo;
+import android.telephony.ClientRequestStats;
 import android.telephony.IccOpenLogicalChannelResponse;
+import android.telephony.ModemActivityInfo;
 import android.telephony.NeighboringCellInfo;
+import android.telephony.NetworkScanRequest;
 import android.telephony.RadioAccessFamily;
+import android.telephony.Rlog;
 import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.SmsManager;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyHistogram;
 import android.telephony.TelephonyManager;
-import android.telephony.ModemActivityInfo;
+import android.telephony.UssdResponse;
+import android.telephony.VisualVoicemailSmsFilterSettings;
 import android.text.TextUtils;
-import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
 import android.util.Pair;
 import android.util.Slog;
 
 import com.android.ims.ImsManager;
+import com.android.ims.internal.IImsServiceController;
+import com.android.ims.internal.IImsServiceFeatureListener;
 import com.android.internal.telephony.CallManager;
+import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.DefaultPhoneNotifier;
 import com.android.internal.telephony.ITelephony;
 import com.android.internal.telephony.IccCard;
 import com.android.internal.telephony.MccTable;
+import com.android.internal.telephony.NetworkScanRequestTracker;
 import com.android.internal.telephony.OperatorInfo;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstantConversions;
+import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.ProxyController;
-import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.RIL;
 import com.android.internal.telephony.RILConstants;
 import com.android.internal.telephony.SubscriptionController;
 import com.android.internal.telephony.uicc.IccIoResult;
 import com.android.internal.telephony.uicc.IccUtils;
+import com.android.internal.telephony.uicc.SIMRecords;
 import com.android.internal.telephony.uicc.UiccCard;
+import com.android.internal.telephony.uicc.UiccCardApplication;
 import com.android.internal.telephony.uicc.UiccController;
+import com.android.internal.telephony.util.VoicemailNotificationSettingsUtil;
 import com.android.internal.util.HexDump;
+import com.android.phone.vvm.PhoneAccountHandleConverter;
+import com.android.phone.vvm.RemoteVvmTaskManager;
+import com.android.phone.vvm.VisualVoicemailSettingsUtil;
+import com.android.phone.vvm.VisualVoicemailSmsFilterConfig;
 
-import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
-
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * Implementation of the ITelephony interface.
@@ -138,6 +169,13 @@
     private static final int EVENT_PERFORM_NETWORK_SCAN_DONE = 40;
     private static final int CMD_SET_NETWORK_SELECTION_MODE_MANUAL = 41;
     private static final int EVENT_SET_NETWORK_SELECTION_MODE_MANUAL_DONE = 42;
+    private static final int CMD_SET_ALLOWED_CARRIERS = 43;
+    private static final int EVENT_SET_ALLOWED_CARRIERS_DONE = 44;
+    private static final int CMD_GET_ALLOWED_CARRIERS = 45;
+    private static final int EVENT_GET_ALLOWED_CARRIERS_DONE = 46;
+    private static final int CMD_HANDLE_USSD_REQUEST = 47;
+    private static final int CMD_GET_FORBIDDEN_PLMNS = 48;
+    private static final int EVENT_GET_FORBIDDEN_PLMNS_DONE = 49;
 
     /** The singleton instance. */
     private static PhoneInterfaceManager sInstance;
@@ -154,7 +192,8 @@
     private static final String PREF_CARRIERS_ALPHATAG_PREFIX = "carrier_alphtag_";
     private static final String PREF_CARRIERS_NUMBER_PREFIX = "carrier_number_";
     private static final String PREF_CARRIERS_SUBSCRIBER_PREFIX = "carrier_subscriber_";
-    private static final String PREF_ENABLE_VIDEO_CALLING = "enable_video_calling";
+
+    private NetworkScanRequestTracker mNetworkScanRequestTracker;
 
     /**
      * A request object to use for transmitting data to an ICC.
@@ -197,8 +236,9 @@
         public Object argument;
         /** The result of the request that is run on the main thread */
         public Object result;
-        /** The subscriber id that this request applies to. Null if default. */
-        public Integer subId;
+        // The subscriber id that this request applies to. Defaults to
+        // SubscriptionManager.INVALID_SUBSCRIPTION_ID
+        public Integer subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
 
         public MainThreadRequest(Object argument) {
             this.argument = argument;
@@ -206,7 +246,9 @@
 
         public MainThreadRequest(Object argument, Integer subId) {
             this.argument = argument;
-            this.subId = subId;
+            if (subId != null) {
+                this.subId = subId;
+            }
         }
     }
 
@@ -241,10 +283,46 @@
             MainThreadRequest request;
             Message onCompleted;
             AsyncResult ar;
-            UiccCard uiccCard = UiccController.getInstance().getUiccCard(mPhone.getPhoneId());
+            UiccCard uiccCard;
             IccAPDUArgument iccArgument;
 
             switch (msg.what) {
+                 case CMD_HANDLE_USSD_REQUEST: {
+                     request = (MainThreadRequest) msg.obj;
+                     final Phone phone = getPhoneFromRequest(request);
+                     Pair<String, ResultReceiver> ussdObject = (Pair) request.argument;
+                     String ussdRequest =  ussdObject.first;
+                     ResultReceiver wrappedCallback = ussdObject.second;
+
+                     if (!isUssdApiAllowed(request.subId)) {
+                         // Carrier does not support use of this API, return failure.
+                         Rlog.w(LOG_TAG, "handleUssdRequest: carrier does not support USSD apis.");
+                         UssdResponse response = new UssdResponse(ussdRequest, null);
+                         Bundle returnData = new Bundle();
+                         returnData.putParcelable(TelephonyManager.USSD_RESPONSE, response);
+                         wrappedCallback.send(TelephonyManager.USSD_RETURN_FAILURE, returnData);
+
+                         request.result = true;
+                         synchronized (request) {
+                             request.notifyAll();
+                         }
+                         return;
+                     }
+
+                     try {
+                         request.result = phone != null ?
+                                 phone.handleUssdRequest(ussdRequest, wrappedCallback)
+                                 : false;
+                     } catch (CallStateException cse) {
+                         request.result = false;
+                     }
+                     // Wake up the requesting thread
+                     synchronized (request) {
+                         request.notifyAll();
+                     }
+                     break;
+                }
+
                 case CMD_HANDLE_PIN_MMI: {
                     request = (MainThreadRequest) msg.obj;
                     final Phone phone = getPhoneFromRequest(request);
@@ -262,7 +340,7 @@
                     request = (MainThreadRequest) msg.obj;
                     onCompleted = obtainMessage(EVENT_NEIGHBORING_CELL_DONE,
                             request);
-                    mPhone.getNeighboringCids(onCompleted);
+                    mPhone.getNeighboringCids(onCompleted, (WorkSource)request.argument);
                     break;
 
                 case EVENT_NEIGHBORING_CELL_DONE:
@@ -317,6 +395,7 @@
                 case CMD_TRANSMIT_APDU_LOGICAL_CHANNEL:
                     request = (MainThreadRequest) msg.obj;
                     iccArgument = (IccAPDUArgument) request.argument;
+                    uiccCard = getUiccCardFromRequest(request);
                     if (uiccCard == null) {
                         loge("iccTransmitApduLogicalChannel: No UICC");
                         request.result = new IccIoResult(0x6F, 0, (byte[])null);
@@ -357,6 +436,7 @@
                 case CMD_TRANSMIT_APDU_BASIC_CHANNEL:
                     request = (MainThreadRequest) msg.obj;
                     iccArgument = (IccAPDUArgument) request.argument;
+                    uiccCard = getUiccCardFromRequest(request);
                     if (uiccCard == null) {
                         loge("iccTransmitApduBasicChannel: No UICC");
                         request.result = new IccIoResult(0x6F, 0, (byte[])null);
@@ -396,6 +476,7 @@
                 case CMD_EXCHANGE_SIM_IO:
                     request = (MainThreadRequest) msg.obj;
                     iccArgument = (IccAPDUArgument) request.argument;
+                    uiccCard = getUiccCardFromRequest(request);
                     if (uiccCard == null) {
                         loge("iccExchangeSimIO: No UICC");
                         request.result = new IccIoResult(0x6F, 0, (byte[])null);
@@ -426,6 +507,7 @@
 
                 case CMD_SEND_ENVELOPE:
                     request = (MainThreadRequest) msg.obj;
+                    uiccCard = getUiccCardFromRequest(request);
                     if (uiccCard == null) {
                         loge("sendEnvelopeWithStatus: No UICC");
                         request.result = new IccIoResult(0x6F, 0, (byte[])null);
@@ -461,15 +543,19 @@
 
                 case CMD_OPEN_CHANNEL:
                     request = (MainThreadRequest) msg.obj;
+                    uiccCard = getUiccCardFromRequest(request);
+                    Pair<String, Integer> openChannelArgs = (Pair<String, Integer>) request.argument;
                     if (uiccCard == null) {
                         loge("iccOpenLogicalChannel: No UICC");
-                        request.result = new IccIoResult(0x6F, 0, (byte[])null);
+                        request.result = new IccOpenLogicalChannelResponse(-1,
+                            IccOpenLogicalChannelResponse.STATUS_MISSING_RESOURCE, null);
                         synchronized (request) {
                             request.notifyAll();
                         }
                     } else {
                         onCompleted = obtainMessage(EVENT_OPEN_CHANNEL_DONE, request);
-                        uiccCard.iccOpenLogicalChannel((String)request.argument, onCompleted);
+                        uiccCard.iccOpenLogicalChannel(openChannelArgs.first,
+                                openChannelArgs.second, onCompleted);
                     }
                     break;
 
@@ -518,6 +604,7 @@
 
                 case CMD_CLOSE_CHANNEL:
                     request = (MainThreadRequest) msg.obj;
+                    uiccCard = getUiccCardFromRequest(request);
                     if (uiccCard == null) {
                         loge("iccCloseLogicalChannel: No UICC");
                         request.result = new IccIoResult(0x6F, 0, (byte[])null);
@@ -742,11 +829,127 @@
                             loge("queryModemActivityInfo: Unknown exception");
                         }
                     }
+                    // Result cannot be null. Return ModemActivityInfo with all fields set to 0.
+                    if (request.result == null) {
+                        request.result = new ModemActivityInfo(0, 0, 0, null, 0, 0);
+                    }
                     synchronized (request) {
                         request.notifyAll();
                     }
                     break;
 
+                case CMD_SET_ALLOWED_CARRIERS:
+                    request = (MainThreadRequest) msg.obj;
+                    onCompleted = obtainMessage(EVENT_SET_ALLOWED_CARRIERS_DONE, request);
+                    mPhone.setAllowedCarriers(
+                            (List<CarrierIdentifier>) request.argument,
+                            onCompleted);
+                    break;
+
+                case EVENT_SET_ALLOWED_CARRIERS_DONE:
+                    ar = (AsyncResult) msg.obj;
+                    request = (MainThreadRequest) ar.userObj;
+                    if (ar.exception == null && ar.result != null) {
+                        request.result = ar.result;
+                    } else {
+                        if (ar.result == null) {
+                            loge("setAllowedCarriers: Empty response");
+                        } else if (ar.exception instanceof CommandException) {
+                            loge("setAllowedCarriers: CommandException: " +
+                                    ar.exception);
+                        } else {
+                            loge("setAllowedCarriers: Unknown exception");
+                        }
+                    }
+                    // Result cannot be null. Return -1 on error.
+                    if (request.result == null) {
+                        request.result = new int[]{-1};
+                    }
+                    synchronized (request) {
+                        request.notifyAll();
+                    }
+                    break;
+
+                case CMD_GET_ALLOWED_CARRIERS:
+                    request = (MainThreadRequest) msg.obj;
+                    onCompleted = obtainMessage(EVENT_GET_ALLOWED_CARRIERS_DONE, request);
+                    mPhone.getAllowedCarriers(onCompleted);
+                    break;
+
+                case EVENT_GET_ALLOWED_CARRIERS_DONE:
+                    ar = (AsyncResult) msg.obj;
+                    request = (MainThreadRequest) ar.userObj;
+                    if (ar.exception == null && ar.result != null) {
+                        request.result = ar.result;
+                    } else {
+                        if (ar.result == null) {
+                            loge("getAllowedCarriers: Empty response");
+                        } else if (ar.exception instanceof CommandException) {
+                            loge("getAllowedCarriers: CommandException: " +
+                                    ar.exception);
+                        } else {
+                            loge("getAllowedCarriers: Unknown exception");
+                        }
+                    }
+                    // Result cannot be null. Return empty list of CarrierIdentifier.
+                    if (request.result == null) {
+                        request.result = new ArrayList<CarrierIdentifier>(0);
+                    }
+                    synchronized (request) {
+                        request.notifyAll();
+                    }
+                    break;
+
+                case EVENT_GET_FORBIDDEN_PLMNS_DONE:
+                    ar = (AsyncResult) msg.obj;
+                    request = (MainThreadRequest) ar.userObj;
+                    if (ar.exception == null && ar.result != null) {
+                        request.result = ar.result;
+                    } else {
+                        request.result = new IllegalArgumentException(
+                                "Failed to retrieve Forbidden Plmns");
+                        if (ar.result == null) {
+                            loge("getForbiddenPlmns: Empty response");
+                        } else {
+                            loge("getForbiddenPlmns: Unknown exception");
+                        }
+                    }
+                    synchronized (request) {
+                        request.notifyAll();
+                    }
+                    break;
+
+                case CMD_GET_FORBIDDEN_PLMNS:
+                    request = (MainThreadRequest) msg.obj;
+                    uiccCard = getUiccCardFromRequest(request);
+                    if (uiccCard == null) {
+                        loge("getForbiddenPlmns() UiccCard is null");
+                        request.result = new IllegalArgumentException(
+                                "getForbiddenPlmns() UiccCard is null");
+                        synchronized (request) {
+                            request.notifyAll();
+                        }
+                        break;
+                    }
+                    Integer appType = (Integer) request.argument;
+                    UiccCardApplication uiccApp = uiccCard.getApplicationByType(appType);
+                    if (uiccApp == null) {
+                        loge("getForbiddenPlmns() no app with specified type -- "
+                                + appType);
+                        request.result = new IllegalArgumentException("Failed to get UICC App");
+                        synchronized (request) {
+                            request.notifyAll();
+                        }
+                        break;
+                    } else {
+                        if (DBG) logv("getForbiddenPlmns() found app " + uiccApp.getAid()
+                                + " specified type -- " + appType);
+                    }
+                    onCompleted = obtainMessage(EVENT_GET_FORBIDDEN_PLMNS_DONE, request);
+                    ((SIMRecords) uiccApp.getIccRecords()).getForbiddenPlmns(
+                              onCompleted);
+                    break;
+
                 default:
                     Log.w(LOG_TAG, "MainThreadHandler: unexpected message code: " + msg.what);
                     break;
@@ -778,7 +981,7 @@
      * @see #sendRequestAsync
      */
     private Object sendRequest(int command, Object argument) {
-        return sendRequest(command, argument, null);
+        return sendRequest(command, argument, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
     }
 
     /**
@@ -854,6 +1057,7 @@
         mTelephonySharedPreferences =
                 PreferenceManager.getDefaultSharedPreferences(mPhone.getContext());
         mSubscriptionController = SubscriptionController.getInstance();
+        mNetworkScanRequestTracker = new NetworkScanRequestTracker();
 
         publish();
     }
@@ -865,7 +1069,14 @@
     }
 
     private Phone getPhoneFromRequest(MainThreadRequest request) {
-        return (request.subId == null) ? mPhone : getPhone(request.subId);
+        return (request.subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID)
+                ? mPhone : getPhone(request.subId);
+    }
+
+    private UiccCard getUiccCardFromRequest(MainThreadRequest request) {
+        Phone phone = getPhoneFromRequest(request);
+        return phone == null ? null :
+                UiccController.getInstance().getUiccCard(phone.getPhoneId());
     }
 
     // returns phone associated with the subId.
@@ -1074,14 +1285,6 @@
         }
     }
 
-    public boolean isSimPinEnabled(String callingPackage) {
-        if (!canReadPhoneState(callingPackage, "isSimPinEnabled")) {
-            return false;
-        }
-
-        return (PhoneGlobals.getInstance().isSimPinEnabled());
-    }
-
     public boolean supplyPin(String pin) {
         return supplyPinForSubscriber(getDefaultSubscription(), pin);
     }
@@ -1319,7 +1522,15 @@
     }
 
     public boolean setRadioPower(boolean turnOn) {
-        return setRadioPowerForSubscriber(getDefaultSubscription(), turnOn);
+        enforceModifyPermission();
+        final Phone defaultPhone = PhoneFactory.getDefaultPhone();
+        if (defaultPhone != null) {
+            defaultPhone.setRadioPower(turnOn);
+            return true;
+        } else {
+            loge("There's no default phone.");
+            return false;
+        }
     }
 
     public boolean setRadioPowerForSubscriber(int subId, boolean turnOn) {
@@ -1361,13 +1572,11 @@
         }
     }
 
-    // FIXME: subId version needed
     @Override
-    public boolean isDataConnectivityPossible() {
-        int subId = mSubscriptionController.getDefaultDataSubId();
+    public boolean isDataConnectivityPossible(int subId) {
         final Phone phone = getPhone(subId);
         if (phone != null) {
-            return phone.isDataConnectivityPossible();
+            return phone.isDataAllowed();
         } else {
             return false;
         }
@@ -1377,6 +1586,15 @@
         return handlePinMmiForSubscriber(getDefaultSubscription(), dialString);
     }
 
+    public void handleUssdRequest(int subId, String ussdRequest, ResultReceiver wrappedCallback) {
+      enforceCallPermission();
+      if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+          return;
+      }
+      Pair<String, ResultReceiver> ussdObject = new Pair(ussdRequest, wrappedCallback);
+      sendRequest(CMD_HANDLE_USSD_REQUEST, ussdObject, subId);
+    };
+
     public boolean handlePinMmiForSubscriber(int subId, String dialString) {
         enforceModifyPermission();
         if (!SubscriptionManager.isValidSubscriptionId(subId)) {
@@ -1386,20 +1604,22 @@
     }
 
     public int getCallState() {
-        return getCallStateForSubscriber(getDefaultSubscription());
+        return getCallStateForSlot(getSlotForDefaultSubscription());
     }
 
-    public int getCallStateForSubscriber(int subId) {
-        return DefaultPhoneNotifier.convertCallState(getPhone(subId).getState());
+    public int getCallStateForSlot(int slotIndex) {
+        Phone phone = PhoneFactory.getPhone(slotIndex);
+        return phone == null ? TelephonyManager.CALL_STATE_IDLE :
+            PhoneConstantConversions.convertCallState(phone.getState());
     }
 
     @Override
     public int getDataState() {
         Phone phone = getPhone(mSubscriptionController.getDefaultDataSubId());
         if (phone != null) {
-            return DefaultPhoneNotifier.convertDataState(phone.getDataConnectionState());
+            return PhoneConstantConversions.convertDataState(phone.getDataConnectionState());
         } else {
-            return DefaultPhoneNotifier.convertDataState(PhoneConstants.DataState.DISCONNECTED);
+            return PhoneConstantConversions.convertDataState(PhoneConstants.DataState.DISCONNECTED);
         }
     }
 
@@ -1424,14 +1644,17 @@
             return null;
         }
 
-        if (checkIfCallerIsSelfOrForegroundUser()) {
+        if (checkIfCallerIsSelfOrForegroundUser() ||
+                checkCallerInteractAcrossUsersFull()) {
             if (DBG_LOC) log("getCellLocation: is active user");
             Bundle data = new Bundle();
             Phone phone = getPhone(mSubscriptionController.getDefaultDataSubId());
             if (phone == null) {
                 return null;
             }
-            phone.getCellLocation().fillInNotifierBundle(data);
+
+            WorkSource workSource = getWorkSource(null, Binder.getCallingUid());
+            phone.getCellLocation(workSource).fillInNotifierBundle(data);
             return data;
         } else {
             log("getCellLocation: suppress non-active user");
@@ -1499,14 +1722,17 @@
             return null;
         }
 
-        if (checkIfCallerIsSelfOrForegroundUser()) {
+        if (checkIfCallerIsSelfOrForegroundUser() ||
+                checkCallerInteractAcrossUsersFull()) {
             if (DBG_LOC) log("getNeighboringCellInfo: is active user");
 
             ArrayList<NeighboringCellInfo> cells = null;
 
+            WorkSource workSource = getWorkSource(null, Binder.getCallingUid());
             try {
                 cells = (ArrayList<NeighboringCellInfo>) sendRequest(
-                        CMD_HANDLE_NEIGHBORING_CELL, null, null);
+                        CMD_HANDLE_NEIGHBORING_CELL, workSource,
+                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
             } catch (RuntimeException e) {
                 Log.e(LOG_TAG, "getNeighboringCellInfo " + e);
             }
@@ -1528,12 +1754,14 @@
             return null;
         }
 
-        if (checkIfCallerIsSelfOrForegroundUser()) {
+        if (checkIfCallerIsSelfOrForegroundUser() ||
+                checkCallerInteractAcrossUsersFull()) {
             if (DBG_LOC) log("getAllCellInfo: is active user");
+            WorkSource workSource = getWorkSource(null, Binder.getCallingUid());
             List<CellInfo> cellInfos = new ArrayList<CellInfo>();
             for (Phone phone : PhoneFactory.getPhones()) {
-                final List<CellInfo> info = phone.getAllCellInfo();
-                if (info != null) cellInfos.addAll(phone.getAllCellInfo());
+                final List<CellInfo> info = phone.getAllCellInfo(workSource);
+                if (info != null) cellInfos.addAll(info);
             }
             return cellInfos;
         } else {
@@ -1544,13 +1772,51 @@
 
     @Override
     public void setCellInfoListRate(int rateInMillis) {
-        mPhone.setCellInfoListRate(rateInMillis);
+        enforceModifyPermission();
+        WorkSource workSource = getWorkSource(null, Binder.getCallingUid());
+        mPhone.setCellInfoListRate(rateInMillis, workSource);
+    }
+
+    @Override
+    public String getImeiForSlot(int slotIndex, String callingPackage) {
+      if (!canReadPhoneState(callingPackage, "getImeiForSlot")) {
+          return null;
+      }
+      Phone phone = PhoneFactory.getPhone(slotIndex);
+      return phone == null ? null : phone.getImei();
+    }
+
+    @Override
+    public String getMeidForSlot(int slotIndex, String callingPackage) {
+        if (!canReadPhoneState(callingPackage, "getMeidForSlot")) {
+            return null;
+        }
+        Phone phone = PhoneFactory.getPhone(slotIndex);
+        return phone == null ? null : phone.getMeid();
+    }
+
+    @Override
+    public String getDeviceSoftwareVersionForSlot(int slotIndex, String callingPackage) {
+      if (!canReadPhoneState(callingPackage, "getDeviceSoftwareVersionForSlot")) {
+          return null;
+      }
+      Phone phone = PhoneFactory.getPhone(slotIndex);
+      return phone == null ? null : phone.getDeviceSvn();
     }
 
     //
     // Internal helper methods.
     //
 
+    /**
+     * Returns true if the caller holds INTERACT_ACROSS_USERS_FULL.
+     */
+    private boolean checkCallerInteractAcrossUsersFull() {
+        return mPhone.getContext().checkCallingOrSelfPermission(
+                android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
+                == PackageManager.PERMISSION_GRANTED;
+    }
+
     private static boolean checkIfCallerIsSelfOrForegroundUser() {
         boolean ok;
 
@@ -1597,7 +1863,7 @@
      *
      * @throws SecurityException if the caller does not have the required permission/privilege
      */
-    private void enforceModifyPermissionOrCarrierPrivilege() {
+    private void enforceModifyPermissionOrCarrierPrivilege(int subId) {
         int permission = mApp.checkCallingOrSelfPermission(
                 android.Manifest.permission.MODIFY_PHONE_STATE);
         if (permission == PackageManager.PERMISSION_GRANTED) {
@@ -1605,10 +1871,7 @@
         }
 
         log("No modify permission, check carrier privilege next.");
-        if (getCarrierPrivilegeStatus() != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
-            loge("No Carrier Privilege.");
-            throw new SecurityException("No modify permission or carrier privilege.");
-        }
+        enforceCarrierPrivilege(subId);
     }
 
     /**
@@ -1616,8 +1879,9 @@
      *
      * @throws SecurityException if the caller does not have the required permission
      */
-    private void enforceCarrierPrivilege() {
-        if (getCarrierPrivilegeStatus() != TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+    private void enforceCarrierPrivilege(int subId) {
+        if (getCarrierPrivilegeStatus(subId) !=
+                    TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
             loge("No Carrier Privilege.");
             throw new SecurityException("No Carrier Privilege.");
         }
@@ -1660,16 +1924,16 @@
 
     @Override
     public int getActivePhoneType() {
-        return getActivePhoneTypeForSubscriber(getDefaultSubscription());
+        return getActivePhoneTypeForSlot(getSlotForDefaultSubscription());
     }
 
     @Override
-    public int getActivePhoneTypeForSubscriber(int subId) {
-        final Phone phone = getPhone(subId);
+    public int getActivePhoneTypeForSlot(int slotIndex) {
+        final Phone phone = PhoneFactory.getPhone(slotIndex);
         if (phone == null) {
             return PhoneConstants.PHONE_TYPE_NONE;
         } else {
-            return getPhone(subId).getPhoneType();
+            return phone.getPhoneType();
         }
     }
 
@@ -1743,7 +2007,7 @@
      */
     @Override
     public String getCdmaMdn(int subId) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         final Phone phone = getPhone(subId);
         if (mPhone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA && phone != null) {
             return phone.getLine1Number();
@@ -1757,7 +2021,7 @@
      */
     @Override
     public String getCdmaMin(int subId) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         final Phone phone = getPhone(subId);
         if (phone != null && phone.getPhoneType() == PhoneConstants.PHONE_TYPE_CDMA) {
             return phone.getCdmaMin();
@@ -1778,12 +2042,148 @@
      */
     @Override
     public boolean setVoiceMailNumber(int subId, String alphaTag, String number) {
-        enforceCarrierPrivilege();
+        enforceCarrierPrivilege(subId);
         Boolean success = (Boolean) sendRequest(CMD_SET_VOICEMAIL_NUMBER,
                 new Pair<String, String>(alphaTag, number), new Integer(subId));
         return success;
     }
 
+    @Override
+    public Bundle getVisualVoicemailSettings(String callingPackage, int subId) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        String systemDialer = TelecomManager.from(mPhone.getContext()).getSystemDialerPackage();
+        if (!TextUtils.equals(callingPackage, systemDialer)) {
+            throw new SecurityException("caller must be system dialer");
+        }
+        PhoneAccountHandle phoneAccountHandle = PhoneAccountHandleConverter.fromSubId(subId);
+        if (phoneAccountHandle == null){
+            return null;
+        }
+        return VisualVoicemailSettingsUtil.dump(mPhone.getContext(), phoneAccountHandle);
+    }
+
+    @Override
+    public String getVisualVoicemailPackageName(String callingPackage, int subId) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        if (!canReadPhoneState(callingPackage, "getVisualVoicemailPackageName")) {
+            return null;
+        }
+        return RemoteVvmTaskManager.getRemotePackage(mPhone.getContext(), subId).getPackageName();
+    }
+
+    @Override
+    public void enableVisualVoicemailSmsFilter(String callingPackage, int subId,
+            VisualVoicemailSmsFilterSettings settings) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        VisualVoicemailSmsFilterConfig
+                .enableVisualVoicemailSmsFilter(mPhone.getContext(), callingPackage, subId,
+                        settings);
+    }
+
+    @Override
+    public void disableVisualVoicemailSmsFilter(String callingPackage, int subId) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        VisualVoicemailSmsFilterConfig
+                .disableVisualVoicemailSmsFilter(mPhone.getContext(), callingPackage, subId);
+    }
+
+    @Override
+    public VisualVoicemailSmsFilterSettings getVisualVoicemailSmsFilterSettings(
+            String callingPackage, int subId) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        return VisualVoicemailSmsFilterConfig
+                .getVisualVoicemailSmsFilterSettings(mPhone.getContext(), callingPackage, subId);
+    }
+
+    @Override
+    public VisualVoicemailSmsFilterSettings getActiveVisualVoicemailSmsFilterSettings(int subId) {
+        enforceReadPrivilegedPermission();
+        return VisualVoicemailSmsFilterConfig
+                .getActiveVisualVoicemailSmsFilterSettings(mPhone.getContext(), subId);
+    }
+
+    @Override
+    public void sendVisualVoicemailSmsForSubscriber(String callingPackage, int subId,
+            String number, int port, String text, PendingIntent sentIntent) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        enforceVisualVoicemailPackage(callingPackage, subId);
+        enforceSendSmsPermission();
+        // Make the calls as the phone process.
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
+            if (port == 0) {
+                smsManager.sendTextMessageWithSelfPermissions(number, null, text,
+                        sentIntent, null, false);
+            } else {
+                byte[] data = text.getBytes(StandardCharsets.UTF_8);
+                smsManager.sendDataMessageWithSelfPermissions(number, null,
+                        (short) port, data, sentIntent, null);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+    /**
+     * Sets the voice activation state of a given subId.
+     */
+    @Override
+    public void setVoiceActivationState(int subId, int activationState) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
+        final Phone phone = getPhone(subId);
+        if (phone != null) {
+            phone.setVoiceActivationState(activationState);
+        } else {
+            loge("setVoiceActivationState fails with invalid subId: " + subId);
+        }
+    }
+
+    /**
+     * Sets the data activation state of a given subId.
+     */
+    @Override
+    public void setDataActivationState(int subId, int activationState) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
+        final Phone phone = getPhone(subId);
+        if (phone != null) {
+            phone.setDataActivationState(activationState);
+        } else {
+            loge("setVoiceActivationState fails with invalid subId: " + subId);
+        }
+    }
+
+    /**
+     * Returns the voice activation state of a given subId.
+     */
+    @Override
+    public int getVoiceActivationState(int subId, String callingPackage) {
+        if (!canReadPhoneState(callingPackage, "getVoiceActivationStateForSubscriber")) {
+            return TelephonyManager.SIM_ACTIVATION_STATE_UNKNOWN;
+        }
+        final Phone phone = getPhone(subId);
+        if (phone != null) {
+            return phone.getVoiceActivationState();
+        } else {
+            return TelephonyManager.SIM_ACTIVATION_STATE_UNKNOWN;
+        }
+    }
+
+    /**
+     * Returns the data activation state of a given subId.
+     */
+    @Override
+    public int getDataActivationState(int subId, String callingPackage) {
+        if (!canReadPhoneState(callingPackage, "getDataActivationStateForSubscriber")) {
+            return TelephonyManager.SIM_ACTIVATION_STATE_UNKNOWN;
+        }
+        final Phone phone = getPhone(subId);
+        if (phone != null) {
+            return phone.getDataActivationState();
+        } else {
+            return TelephonyManager.SIM_ACTIVATION_STATE_UNKNOWN;
+        }
+    }
+
     /**
      * Returns the unread count of voicemails
      */
@@ -1805,6 +2205,31 @@
     }
 
     /**
+      * returns true, if the device is in a state where both voice and data
+      * are supported simultaneously. This can change based on location or network condition.
+     */
+    @Override
+    public boolean isConcurrentVoiceAndDataAllowed(int subId) {
+        final Phone phone = getPhone(subId);
+        return (phone == null ? false : phone.isConcurrentVoiceAndDataAllowed());
+    }
+
+    /**
+     * Send the dialer code if called from the current default dialer or the caller has
+     * carrier privilege.
+     * @param inputCode The dialer code to send
+     */
+    @Override
+    public void sendDialerSpecialCode(String callingPackage, String inputCode) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        String defaultDialer = TelecomManager.from(mPhone.getContext()).getDefaultDialerPackage();
+        if (!TextUtils.equals(callingPackage, defaultDialer)) {
+            enforceCarrierPrivilege(getDefaultSubscription());
+        }
+        mPhone.sendDialerSpecialCode(inputCode);
+    }
+
+    /**
      * Returns the data network type.
      * Legacy call, permission-free.
      *
@@ -1884,17 +2309,17 @@
      */
     public boolean hasIccCard() {
         // FIXME Make changes to pass defaultSimId of type int
-        return hasIccCardUsingSlotId(mSubscriptionController.getSlotId(getDefaultSubscription()));
+        return hasIccCardUsingSlotIndex(mSubscriptionController.getSlotIndex(
+                getDefaultSubscription()));
     }
 
     /**
-     * @return true if a ICC card is present for a slotId
+     * @return true if a ICC card is present for a slotIndex
      */
     @Override
-    public boolean hasIccCardUsingSlotId(int slotId) {
-        int subId[] = mSubscriptionController.getSubIdUsingSlotId(slotId);
-        final Phone phone = getPhone(subId[0]);
-        if (subId != null && phone != null) {
+    public boolean hasIccCardUsingSlotIndex(int slotIndex) {
+        final Phone phone = PhoneFactory.getPhone(slotIndex);
+        if (phone != null) {
             return phone.getIccCard().hasIccCard();
         } else {
             return false;
@@ -1941,6 +2366,10 @@
         return mSubscriptionController.getDefaultSubId();
     }
 
+    private int getSlotForDefaultSubscription() {
+        return mSubscriptionController.getPhoneId(getDefaultSubscription());
+    }
+
     private int getPreferredVoiceSubscription() {
         return mSubscriptionController.getDefaultVoiceSubId();
     }
@@ -1968,37 +2397,37 @@
     }
 
     @Override
-    public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID) {
-        enforceModifyPermissionOrCarrierPrivilege();
+    public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID, int p2) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
 
-        if (DBG) log("iccOpenLogicalChannel: " + AID);
+        if (DBG) log("iccOpenLogicalChannel: subId=" + subId + " aid=" + AID + " p2=" + p2);
         IccOpenLogicalChannelResponse response = (IccOpenLogicalChannelResponse)sendRequest(
-            CMD_OPEN_CHANNEL, AID);
+            CMD_OPEN_CHANNEL, new Pair<String, Integer>(AID, p2), subId);
         if (DBG) log("iccOpenLogicalChannel: " + response);
         return response;
     }
 
     @Override
-    public boolean iccCloseLogicalChannel(int channel) {
-        enforceModifyPermissionOrCarrierPrivilege();
+    public boolean iccCloseLogicalChannel(int subId, int channel) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
 
-        if (DBG) log("iccCloseLogicalChannel: " + channel);
+        if (DBG) log("iccCloseLogicalChannel: subId=" + subId + " chnl=" + channel);
         if (channel < 0) {
           return false;
         }
-        Boolean success = (Boolean)sendRequest(CMD_CLOSE_CHANNEL, channel);
+        Boolean success = (Boolean)sendRequest(CMD_CLOSE_CHANNEL, channel, subId);
         if (DBG) log("iccCloseLogicalChannel: " + success);
         return success;
     }
 
     @Override
-    public String iccTransmitApduLogicalChannel(int channel, int cla,
+    public String iccTransmitApduLogicalChannel(int subId, int channel, int cla,
             int command, int p1, int p2, int p3, String data) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
 
         if (DBG) {
-            log("iccTransmitApduLogicalChannel: chnl=" + channel + " cla=" + cla +
-                    " cmd=" + command + " p1=" + p1 + " p2=" + p2 + " p3=" + p3 +
+            log("iccTransmitApduLogicalChannel: subId=" + subId + " chnl=" + channel +
+                    " cla=" + cla + " cmd=" + command + " p1=" + p1 + " p2=" + p2 + " p3=" + p3 +
                     " data=" + data);
         }
 
@@ -2007,7 +2436,7 @@
         }
 
         IccIoResult response = (IccIoResult)sendRequest(CMD_TRANSMIT_APDU_LOGICAL_CHANNEL,
-                new IccAPDUArgument(channel, cla, command, p1, p2, p3, data));
+                new IccAPDUArgument(channel, cla, command, p1, p2, p3, data), subId);
         if (DBG) log("iccTransmitApduLogicalChannel: " + response);
 
         // Append the returned status code to the end of the response payload.
@@ -2020,17 +2449,17 @@
     }
 
     @Override
-    public String iccTransmitApduBasicChannel(int cla, int command, int p1, int p2,
+    public String iccTransmitApduBasicChannel(int subId, int cla, int command, int p1, int p2,
                 int p3, String data) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
 
         if (DBG) {
-            log("iccTransmitApduBasicChannel: cla=" + cla + " cmd=" + command + " p1="
-                    + p1 + " p2=" + p2 + " p3=" + p3 + " data=" + data);
+            log("iccTransmitApduBasicChannel: subId=" + subId + " cla=" + cla + " cmd=" + command
+                    + " p1=" + p1 + " p2=" + p2 + " p3=" + p3 + " data=" + data);
         }
 
         IccIoResult response = (IccIoResult)sendRequest(CMD_TRANSMIT_APDU_BASIC_CHANNEL,
-                new IccAPDUArgument(0, cla, command, p1, p2, p3, data));
+                new IccAPDUArgument(0, cla, command, p1, p2, p3, data), subId);
         if (DBG) log("iccTransmitApduBasicChannel: " + response);
 
         // Append the returned status code to the end of the response payload.
@@ -2043,18 +2472,19 @@
     }
 
     @Override
-    public byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3,
+    public byte[] iccExchangeSimIO(int subId, int fileID, int command, int p1, int p2, int p3,
             String filePath) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
 
         if (DBG) {
-            log("Exchange SIM_IO " + fileID + ":" + command + " " +
+            log("Exchange SIM_IO " + subId + ":" + fileID + ":" + command + " " +
                 p1 + " " + p2 + " " + p3 + ":" + filePath);
         }
 
         IccIoResult response =
             (IccIoResult)sendRequest(CMD_EXCHANGE_SIM_IO,
-                    new IccAPDUArgument(-1, fileID, command, p1, p2, p3, filePath));
+                    new IccAPDUArgument(-1, fileID, command, p1, p2, p3, filePath),
+                    subId);
 
         if (DBG) {
           log("Exchange SIM_IO [R]" + response);
@@ -2075,11 +2505,31 @@
         return result;
     }
 
-    @Override
-    public String sendEnvelopeWithStatus(String content) {
-        enforceModifyPermissionOrCarrierPrivilege();
+    /**
+     * Get the forbidden PLMN List from the given app type (ex APPTYPE_USIM)
+     * on a particular subscription
+     */
+    public String[] getForbiddenPlmns(int subId, int appType) {
+        mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_STATE,
+                "Requires READ_PHONE_STATE");
+        if (appType != TelephonyManager.APPTYPE_USIM && appType != TelephonyManager.APPTYPE_SIM) {
+            loge("getForbiddenPlmnList(): App Type must be USIM or SIM");
+            return null;
+        }
+        Object response = sendRequest(
+            CMD_GET_FORBIDDEN_PLMNS, new Integer(appType), subId);
+        if (response instanceof String[]) {
+            return (String[]) response;
+        }
+        // Response is an Exception of some kind, which is signalled to the user as a NULL retval
+        return null;
+    }
 
-        IccIoResult response = (IccIoResult)sendRequest(CMD_SEND_ENVELOPE, content);
+    @Override
+    public String sendEnvelopeWithStatus(int subId, String content) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
+
+        IccIoResult response = (IccIoResult)sendRequest(CMD_SEND_ENVELOPE, content, subId);
         if (response.payload == null) {
           return "";
         }
@@ -2100,7 +2550,7 @@
      */
     @Override
     public String nvReadItem(int itemID) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(getDefaultSubscription());
         if (DBG) log("nvReadItem: item " + itemID);
         String value = (String) sendRequest(CMD_NV_READ_ITEM, itemID);
         if (DBG) log("nvReadItem: item " + itemID + " is \"" + value + '"');
@@ -2117,7 +2567,7 @@
      */
     @Override
     public boolean nvWriteItem(int itemID, String itemValue) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(getDefaultSubscription());
         if (DBG) log("nvWriteItem: item " + itemID + " value \"" + itemValue + '"');
         Boolean success = (Boolean) sendRequest(CMD_NV_WRITE_ITEM,
                 new Pair<Integer, String>(itemID, itemValue));
@@ -2134,7 +2584,7 @@
      */
     @Override
     public boolean nvWriteCdmaPrl(byte[] preferredRoamingList) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(getDefaultSubscription());
         if (DBG) log("nvWriteCdmaPrl: value: " + HexDump.toHexString(preferredRoamingList));
         Boolean success = (Boolean) sendRequest(CMD_NV_WRITE_CDMA_PRL, preferredRoamingList);
         if (DBG) log("nvWriteCdmaPrl: " + (success ? "ok" : "fail"));
@@ -2150,7 +2600,7 @@
      */
     @Override
     public boolean nvResetConfig(int resetType) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(getDefaultSubscription());
         if (DBG) log("nvResetConfig: type " + resetType);
         Boolean success = (Boolean) sendRequest(CMD_NV_RESET_CONFIG, resetType);
         if (DBG) log("nvResetConfig: type " + resetType + ' ' + (success ? "ok" : "fail"));
@@ -2175,6 +2625,19 @@
         return mPhone.getPcscfAddress(apnType);
     }
 
+    /**
+     * Returns the {@link IImsServiceController} that corresponds to the given slot Id and IMS
+     * feature or {@link null} if the service is not available. If an ImsServiceController is
+     * available, the {@link IImsServiceFeatureListener} callback is registered as a listener for
+     * feature updates.
+     */
+    public IImsServiceController getImsServiceControllerAndListen(int slotIndex, int feature,
+            IImsServiceFeatureListener callback) {
+        enforceModifyPermission();
+        return PhoneFactory.getImsResolver().getImsServiceControllerAndListen(slotIndex, feature,
+                callback);
+    }
+
     public void setImsRegistrationState(boolean registered) {
         enforceModifyPermission();
         mPhone.setImsRegistrationState(registered);
@@ -2186,7 +2649,7 @@
      */
     @Override
     public void setNetworkSelectionModeAutomatic(int subId) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         if (DBG) log("setNetworkSelectionModeAutomatic: subId " + subId);
         sendRequest(CMD_SET_NETWORK_SELECTION_MODE_AUTOMATIC, null, subId);
     }
@@ -2197,7 +2660,7 @@
     @Override
     public boolean setNetworkSelectionModeManual(int subId, OperatorInfo operator,
             boolean persistSelection) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         if (DBG) log("setNetworkSelectionModeManual: subId:" + subId + " operator:" + operator);
         ManualNetworkSelectionArgument arg = new ManualNetworkSelectionArgument(operator,
                 persistSelection);
@@ -2209,7 +2672,7 @@
      */
     @Override
     public CellNetworkScanResult getCellNetworkScanResults(int subId) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         if (DBG) log("getCellNetworkScanResults: subId " + subId);
         CellNetworkScanResult result = (CellNetworkScanResult) sendRequest(
                 CMD_PERFORM_NETWORK_SCAN, null, subId);
@@ -2217,6 +2680,35 @@
     }
 
     /**
+     * Starts a new network scan and returns the id of this scan.
+     *
+     * @param subId id of the subscription
+     * @param request contains the radio access networks with bands/channels to scan
+     * @param messenger callback messenger for scan results or errors
+     * @param binder for the purpose of auto clean when the user thread crashes
+     * @return the id of the requested scan which can be used to stop the scan.
+     */
+    @Override
+    public int requestNetworkScan(int subId, NetworkScanRequest request, Messenger messenger,
+            IBinder binder) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
+        return mNetworkScanRequestTracker.startNetworkScan(
+                request, messenger, binder, getPhone(subId));
+    }
+
+    /**
+     * Stops an existing network scan with the given scanId.
+     *
+     * @param subId id of the subscription
+     * @param scanId id of the scan that needs to be stopped
+     */
+    @Override
+    public void stopNetworkScan(int subId, int scanId) {
+        enforceModifyPermissionOrCarrierPrivilege(subId);
+        mNetworkScanRequestTracker.stopNetworkScan(scanId);
+    }
+
+    /**
      * Get the calculated preferred network type.
      * Used for debugging incorrect network type.
      *
@@ -2239,7 +2731,7 @@
      */
     @Override
     public int getPreferredNetworkType(int subId) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         if (DBG) log("getPreferredNetworkType");
         int[] result = (int[]) sendRequest(CMD_GET_PREFERRED_NETWORK_TYPE, null, subId);
         int networkType = (result != null ? result[0] : -1);
@@ -2256,7 +2748,7 @@
      */
     @Override
     public boolean setPreferredNetworkType(int subId, int networkType) {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         if (DBG) log("setPreferredNetworkType: subId " + subId + " type " + networkType);
         Boolean success = (Boolean) sendRequest(CMD_SET_PREFERRED_NETWORK_TYPE, networkType, subId);
         if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
@@ -2277,7 +2769,7 @@
      */
     @Override
     public int getTetherApnRequired() {
-        enforceModifyPermissionOrCarrierPrivilege();
+        enforceModifyPermission();
         int dunRequired = Settings.Global.getInt(mPhone.getContext().getContentResolver(),
                 Settings.Global.TETHER_DUN_REQUIRED, 2);
         // If not set, check net.tethering.noprovisioning, TETHER_DUN_APN setting and
@@ -2296,12 +2788,12 @@
      */
     @Override
     public void setDataEnabled(int subId, boolean enable) {
-        enforceModifyPermission();
+        enforceModifyPermissionOrCarrierPrivilege(subId);
         int phoneId = mSubscriptionController.getPhoneId(subId);
-        log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);
+        if (DBG) log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);
         Phone phone = PhoneFactory.getPhone(phoneId);
         if (phone != null) {
-            log("setDataEnabled: subId=" + subId + " enable=" + enable);
+            if (DBG) log("setDataEnabled: subId=" + subId + " enable=" + enable);
             phone.setDataEnabled(enable);
         } else {
             loge("setDataEnabled: no phone for subId=" + subId);
@@ -2311,9 +2803,7 @@
     /**
      * Get whether mobile data is enabled.
      *
-     * Note that this used to be available from ConnectivityService, gated by
-     * ACCESS_NETWORK_STATE permission, so this will accept either that or
-     * our MODIFY_PHONE_STATE.
+     * Accepts either ACCESS_NETWORK_STATE, MODIFY_PHONE_STATE or carrier privileges.
      *
      * @return {@code true} if data is enabled else {@code false}
      */
@@ -2323,35 +2813,41 @@
             mApp.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NETWORK_STATE,
                     null);
         } catch (Exception e) {
-            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
-                    null);
+            enforceModifyPermissionOrCarrierPrivilege(subId);
         }
         int phoneId = mSubscriptionController.getPhoneId(subId);
-        log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);
+        if (DBG) log("getDataEnabled: subId=" + subId + " phoneId=" + phoneId);
         Phone phone = PhoneFactory.getPhone(phoneId);
         if (phone != null) {
             boolean retVal = phone.getDataEnabled();
-            log("getDataEnabled: subId=" + subId + " retVal=" + retVal);
+            if (DBG) log("getDataEnabled: subId=" + subId + " retVal=" + retVal);
             return retVal;
         } else {
-            loge("getDataEnabled: no phone subId=" + subId + " retVal=false");
+            if (DBG) loge("getDataEnabled: no phone subId=" + subId + " retVal=false");
             return false;
         }
     }
 
     @Override
-    public int getCarrierPrivilegeStatus() {
-        UiccCard card = UiccController.getInstance().getUiccCard(mPhone.getPhoneId());
+    public int getCarrierPrivilegeStatus(int subId) {
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            loge("getCarrierPrivilegeStatus: Invalid subId");
+            return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
+        }
+        UiccCard card = UiccController.getInstance().getUiccCard(phone.getPhoneId());
         if (card == null) {
             loge("getCarrierPrivilegeStatus: No UICC");
             return TelephonyManager.CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED;
         }
         return card.getCarrierPrivilegeStatusForCurrentTransaction(
-                mPhone.getContext().getPackageManager());
+                phone.getContext().getPackageManager());
     }
 
     @Override
     public int checkCarrierPrivilegesForPackage(String pkgName) {
+        if (TextUtils.isEmpty(pkgName))
+            return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
         UiccCard card = UiccController.getInstance().getUiccCard(mPhone.getPhoneId());
         if (card == null) {
             loge("checkCarrierPrivilegesForPackage: No UICC");
@@ -2362,6 +2858,8 @@
 
     @Override
     public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
+        if (TextUtils.isEmpty(pkgName))
+            return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
         int result = TelephonyManager.CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED;
         for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
             UiccCard card = UiccController.getInstance().getUiccCard(i);
@@ -2395,6 +2893,38 @@
                 mPhone.getContext().getPackageManager(), intent);
     }
 
+    @Override
+    public List<String> getPackagesWithCarrierPrivileges() {
+        PackageManager pm = mPhone.getContext().getPackageManager();
+        List<String> privilegedPackages = new ArrayList<>();
+        List<PackageInfo> packages = null;
+        for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
+            UiccCard card = UiccController.getInstance().getUiccCard(i);
+            if (card == null) {
+                // No UICC in that slot.
+                continue;
+            }
+            if (card.hasCarrierPrivilegeRules()) {
+                if (packages == null) {
+                    // Only check packages in user 0 for now
+                    packages = pm.getInstalledPackagesAsUser(
+                            PackageManager.MATCH_DISABLED_COMPONENTS
+                            | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+                            | PackageManager.GET_SIGNATURES, UserHandle.USER_SYSTEM);
+                }
+                for (int p = packages.size() - 1; p >= 0; p--) {
+                    PackageInfo pkgInfo = packages.get(p);
+                    if (pkgInfo != null && pkgInfo.packageName != null
+                            && card.getCarrierPrivilegeStatus(pkgInfo)
+                                == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+                        privilegedPackages.add(pkgInfo.packageName);
+                    }
+                }
+            }
+        }
+        return privilegedPackages;
+    }
+
     private String getIccId(int subId) {
         final Phone phone = getPhone(subId);
         UiccCard card = phone == null ? null : phone.getUiccCard();
@@ -2413,7 +2943,7 @@
     @Override
     public boolean setLine1NumberForDisplayForSubscriber(int subId, String alphaTag,
             String number) {
-        enforceCarrierPrivilege();
+        enforceCarrierPrivilege(subId);
 
         final String iccId = getIccId(subId);
         final Phone phone = getPhone(subId);
@@ -2460,14 +2990,20 @@
     public String getLine1NumberForDisplay(int subId, String callingPackage) {
         // This is open to apps with WRITE_SMS.
         if (!canReadPhoneNumber(callingPackage, "getLine1NumberForDisplay")) {
+            if (DBG_MERGE) log("getLine1NumberForDisplay returning null due to permission");
             return null;
         }
 
         String iccId = getIccId(subId);
         if (iccId != null) {
             String numberPrefKey = PREF_CARRIERS_NUMBER_PREFIX + iccId;
+            if (DBG_MERGE) {
+                log("getLine1NumberForDisplay returning " +
+                        mTelephonySharedPreferences.getString(numberPrefKey, null));
+            }
             return mTelephonySharedPreferences.getString(numberPrefKey, null);
         }
+        if (DBG_MERGE) log("getLine1NumberForDisplay returning null as iccId is null");
         return null;
     }
 
@@ -2559,21 +3095,27 @@
     }
 
     @Override
-    public boolean setOperatorBrandOverride(String brand) {
-        enforceCarrierPrivilege();
-        return mPhone.setOperatorBrandOverride(brand);
+    public boolean setOperatorBrandOverride(int subId, String brand) {
+        enforceCarrierPrivilege(subId);
+        final Phone phone = getPhone(subId);
+        return phone == null ? false : phone.setOperatorBrandOverride(brand);
     }
 
     @Override
-    public boolean setRoamingOverride(List<String> gsmRoamingList,
+    public boolean setRoamingOverride(int subId, List<String> gsmRoamingList,
             List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
             List<String> cdmaNonRoamingList) {
-        enforceCarrierPrivilege();
-        return mPhone.setRoamingOverride(gsmRoamingList, gsmNonRoamingList, cdmaRoamingList,
+        enforceCarrierPrivilege(subId);
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            return false;
+        }
+        return phone.setRoamingOverride(gsmRoamingList, gsmNonRoamingList, cdmaRoamingList,
                 cdmaNonRoamingList);
     }
 
     @Override
+    @Deprecated
     public int invokeOemRilRequestRaw(byte[] oemReq, byte[] oemResp) {
         enforceModifyPermission();
 
@@ -2626,9 +3168,7 @@
     @Override
     public void enableVideoCalling(boolean enable) {
         enforceModifyPermission();
-        SharedPreferences.Editor editor = mTelephonySharedPreferences.edit();
-        editor.putBoolean(PREF_ENABLE_VIDEO_CALLING, enable);
-        editor.commit();
+        ImsManager.setVtSetting(mPhone.getContext(), enable);
     }
 
     @Override
@@ -2643,7 +3183,7 @@
         // which can support video calling.
         return ImsManager.isVtEnabledByPlatform(mPhone.getContext())
                 && ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
-                && mTelephonySharedPreferences.getBoolean(PREF_ENABLE_VIDEO_CALLING, true);
+                && ImsManager.isVtEnabledByUser(mPhone.getContext());
     }
 
     @Override
@@ -2661,7 +3201,7 @@
         TelecomManager telecomManager = TelecomManager.from(mPhone.getContext());
         TelephonyManager telephonyManager =
                 (TelephonyManager) mPhone.getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        return !telephonyManager.isMultiSimEnabled() && telecomManager.isTtySupported();
+        return telecomManager.isTtySupported();
     }
 
     @Override
@@ -2763,7 +3303,7 @@
     }
 
     /**
-     * Besides READ_PHONE_STATE, WRITE_SMS also allows apps to get phone numbers.
+     * Besides READ_PHONE_STATE, WRITE_SMS and READ_SMS also allow apps to get phone numbers.
      */
     private boolean canReadPhoneNumber(String callingPackage, String message) {
         // Default SMS app can always read it.
@@ -2771,14 +3311,41 @@
                 Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED) {
             return true;
         }
+
         try {
             return canReadPhoneState(callingPackage, message);
-        } catch (SecurityException e) {
-            // Can be read with READ_SMS too.
-            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_SMS, message);
-            return mAppOps.noteOp(AppOpsManager.OP_READ_SMS,
-                    Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
+        } catch (SecurityException readPhoneStateSecurityException) {
         }
+        // Can be read with READ_SMS too.
+        try {
+            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_SMS, message);
+            int opCode = mAppOps.permissionToOpCode(android.Manifest.permission.READ_SMS);
+            if (opCode != AppOpsManager.OP_NONE) {
+                return mAppOps.noteOp(opCode, Binder.getCallingUid(), callingPackage)
+                        == AppOpsManager.MODE_ALLOWED;
+            } else {
+                return true;
+            }
+        } catch (SecurityException readSmsSecurityException) {
+        }
+        // Can be read with READ_PHONE_NUMBERS too.
+        try {
+            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_NUMBERS,
+                    message);
+            int opCode = mAppOps.permissionToOpCode(android.Manifest.permission.READ_PHONE_NUMBERS);
+            if (opCode != AppOpsManager.OP_NONE) {
+                return mAppOps.noteOp(opCode, Binder.getCallingUid(), callingPackage)
+                        == AppOpsManager.MODE_ALLOWED;
+            } else {
+                return true;
+            }
+        } catch (SecurityException readPhoneNumberSecurityException) {
+        }
+
+        throw new SecurityException(message + ": Neither user " + Binder.getCallingUid() +
+                " nor current process has" + android.Manifest.permission.READ_PHONE_STATE +
+                ", " + android.Manifest.permission.READ_SMS + ", or " +
+                android.Manifest.permission.READ_PHONE_NUMBERS);
     }
 
     @Override
@@ -2799,7 +3366,7 @@
                 // Set preferred mobile network type to the best available
                 setPreferredNetworkType(subId, Phone.PREFERRED_NT_MODE);
                 // Turn off roaming
-                SubscriptionManager.from(mApp).setDataRoaming(0, subId);
+                mPhone.setDataRoamingEnabled(false);
             }
         } finally {
             Binder.restoreCallingIdentity(identity);
@@ -2888,11 +3455,472 @@
     }
 
     /**
-     * {@hide}
-     * Returns the modem stats
+     * Responds to the ResultReceiver with the {@link android.telephony.ModemActivityInfo} object
+     * representing the state of the modem.
+     *
+     * NOTE: This clears the modem state, so there should only every be one caller.
+     * @hide
      */
     @Override
-    public ModemActivityInfo getModemActivityInfo() {
-        return (ModemActivityInfo) sendRequest(CMD_GET_MODEM_ACTIVITY_INFO, null);
+    public void requestModemActivityInfo(ResultReceiver result) {
+        enforceModifyPermission();
+
+        ModemActivityInfo info = (ModemActivityInfo) sendRequest(CMD_GET_MODEM_ACTIVITY_INFO, null);
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(TelephonyManager.MODEM_ACTIVITY_RESULT_KEY, info);
+        result.send(0, bundle);
+    }
+
+    /**
+     * {@hide}
+     * Returns the service state information on specified subscription.
+     */
+    @Override
+    public ServiceState getServiceStateForSubscriber(int subId, String callingPackage) {
+
+        if (!canReadPhoneState(callingPackage, "getServiceStateForSubscriber")) {
+            return null;
+        }
+
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            return null;
+        }
+
+        return phone.getServiceState();
+    }
+
+    /**
+     * Returns the URI for the per-account voicemail ringtone set in Phone settings.
+     *
+     * @param accountHandle The handle for the {@link PhoneAccount} for which to retrieve the
+     * voicemail ringtone.
+     * @return The URI for the ringtone to play when receiving a voicemail from a specific
+     * PhoneAccount.
+     */
+    @Override
+    public Uri getVoicemailRingtoneUri(PhoneAccountHandle accountHandle) {
+        Phone phone = PhoneUtils.getPhoneForPhoneAccountHandle(accountHandle);
+        if (phone == null) {
+            phone = mPhone;
+        }
+
+        return VoicemailNotificationSettingsUtil.getRingtoneUri(phone.getContext());
+    }
+
+    /**
+     * Sets the per-account voicemail ringtone.
+     *
+     * <p>Requires that the calling app is the default dialer, or has carrier privileges, or
+     * has permission {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
+     *
+     * @param phoneAccountHandle The handle for the {@link PhoneAccount} for which to set the
+     * voicemail ringtone.
+     * @param uri The URI for the ringtone to play when receiving a voicemail from a specific
+     * PhoneAccount.
+     */
+    @Override
+    public void setVoicemailRingtoneUri(String callingPackage,
+            PhoneAccountHandle phoneAccountHandle, Uri uri) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        if (!TextUtils.equals(callingPackage,
+                TelecomManager.from(mPhone.getContext()).getDefaultDialerPackage())) {
+            enforceModifyPermissionOrCarrierPrivilege(
+                    PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccountHandle));
+        }
+        Phone phone = PhoneUtils.getPhoneForPhoneAccountHandle(phoneAccountHandle);
+        if (phone == null){
+           phone = mPhone;
+        }
+        VoicemailNotificationSettingsUtil.setRingtoneUri(phone.getContext(), uri);
+    }
+
+    /**
+     * Returns whether vibration is set for voicemail notification in Phone settings.
+     *
+     * @param accountHandle The handle for the {@link PhoneAccount} for which to retrieve the
+     * voicemail vibration setting.
+     * @return {@code true} if the vibration is set for this PhoneAccount, {@code false} otherwise.
+     */
+    @Override
+    public boolean isVoicemailVibrationEnabled(PhoneAccountHandle accountHandle) {
+        Phone phone = PhoneUtils.getPhoneForPhoneAccountHandle(accountHandle);
+        if (phone == null) {
+            phone = mPhone;
+        }
+
+        return VoicemailNotificationSettingsUtil.isVibrationEnabled(phone.getContext());
+    }
+
+    /**
+     * Sets the per-account voicemail vibration.
+     *
+     * <p>Requires that the calling app is the default dialer, or has carrier privileges, or
+     * has permission {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.
+     *
+     * @param phoneAccountHandle The handle for the {@link PhoneAccount} for which to set the
+     * voicemail vibration setting.
+     * @param enabled Whether to enable or disable vibration for voicemail notifications from a
+     * specific PhoneAccount.
+     */
+    @Override
+    public void setVoicemailVibrationEnabled(String callingPackage,
+            PhoneAccountHandle phoneAccountHandle, boolean enabled) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        if (!TextUtils.equals(callingPackage,
+                TelecomManager.from(mPhone.getContext()).getDefaultDialerPackage())) {
+            enforceModifyPermissionOrCarrierPrivilege(
+                    PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccountHandle));
+        }
+
+        Phone phone = PhoneUtils.getPhoneForPhoneAccountHandle(phoneAccountHandle);
+        if (phone == null){
+            phone = mPhone;
+        }
+        VoicemailNotificationSettingsUtil.setVibrationEnabled(phone.getContext(), enabled);
+    }
+
+    /**
+     * Make sure either called from same process as self (phone) or IPC caller has read privilege.
+     *
+     * @throws SecurityException if the caller does not have the required permission
+     */
+    private void enforceReadPrivilegedPermission() {
+        mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+                null);
+    }
+
+    /**
+     * Make sure either called from same process as self (phone) or IPC caller has send SMS
+     * permission.
+     *
+     * @throws SecurityException if the caller does not have the required permission
+     */
+    private void enforceSendSmsPermission() {
+        mApp.enforceCallingOrSelfPermission(permission.SEND_SMS, null);
+    }
+
+    /**
+     * Make sure called from the package in charge of visual voicemail.
+     *
+     * @throws SecurityException if the caller is not the visual voicemail package.
+     */
+    private void enforceVisualVoicemailPackage(String callingPackage, int subId) {
+        ComponentName componentName =
+                RemoteVvmTaskManager.getRemotePackage(mPhone.getContext(), subId);
+        if(componentName == null) {
+            throw new SecurityException("Caller not current active visual voicemail package[null]");
+        }
+        String vvmPackage = componentName.getPackageName();
+        if (!callingPackage.equals(vvmPackage)) {
+            throw new SecurityException("Caller not current active visual voicemail package[" +
+                    vvmPackage + "]");
+        }
+    }
+
+    /**
+     * Return the application ID for the app type.
+     *
+     * @param subId the subscription ID that this request applies to.
+     * @param appType the uicc app type.
+     * @return Application ID for specificied app type, or null if no uicc.
+     */
+    @Override
+    public String getAidForAppType(int subId, int appType) {
+        enforceReadPrivilegedPermission();
+        Phone phone = getPhone(subId);
+        if (phone == null) {
+            return null;
+        }
+        String aid = null;
+        try {
+            aid = UiccController.getInstance().getUiccCard(phone.getPhoneId())
+                    .getApplicationByType(appType).getAid();
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Not getting aid. Exception ex=" + e);
+        }
+        return aid;
+    }
+
+    /**
+     * Return the Electronic Serial Number.
+     *
+     * @param subId the subscription ID that this request applies to.
+     * @return ESN or null if error.
+     */
+    @Override
+    public String getEsn(int subId) {
+        enforceReadPrivilegedPermission();
+        Phone phone = getPhone(subId);
+        if (phone == null) {
+            return null;
+        }
+        String esn = null;
+        try {
+            esn = phone.getEsn();
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Not getting ESN. Exception ex=" + e);
+        }
+        return esn;
+    }
+
+    /**
+     * Return the Preferred Roaming List Version.
+     *
+     * @param subId the subscription ID that this request applies to.
+     * @return PRLVersion or null if error.
+     */
+    @Override
+    public String getCdmaPrlVersion(int subId) {
+        enforceReadPrivilegedPermission();
+        Phone phone = getPhone(subId);
+        if (phone == null) {
+            return null;
+        }
+        String cdmaPrlVersion = null;
+        try {
+            cdmaPrlVersion = phone.getCdmaPrlVersion();
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Not getting PRLVersion", e);
+        }
+        return cdmaPrlVersion;
+    }
+
+    /**
+     * Get snapshot of Telephony histograms
+     * @return List of Telephony histograms
+     * @hide
+     */
+    @Override
+    public List<TelephonyHistogram> getTelephonyHistograms() {
+        enforceModifyPermissionOrCarrierPrivilege(getDefaultSubscription());
+        return RIL.getTelephonyRILTimingHistograms();
+    }
+
+    /**
+     * {@hide}
+     * Set the allowed carrier list for slotIndex
+     * Require system privileges. In the future we may add this to carrier APIs.
+     *
+     * @return The number of carriers set successfully, should match length of carriers
+     */
+    @Override
+    public int setAllowedCarriers(int slotIndex, List<CarrierIdentifier> carriers) {
+        enforceModifyPermission();
+
+        if (carriers == null) {
+            throw new NullPointerException("carriers cannot be null");
+        }
+
+        int subId = SubscriptionManager.getSubId(slotIndex)[0];
+        int[] retVal = (int[]) sendRequest(CMD_SET_ALLOWED_CARRIERS, carriers, subId);
+        return retVal[0];
+    }
+
+    /**
+     * {@hide}
+     * Get the allowed carrier list for slotIndex.
+     * Require system privileges. In the future we may add this to carrier APIs.
+     *
+     * @return List of {@link android.service.telephony.CarrierIdentifier}; empty list
+     * means all carriers are allowed.
+     */
+    @Override
+    public List<CarrierIdentifier> getAllowedCarriers(int slotIndex) {
+        enforceReadPrivilegedPermission();
+        int subId = SubscriptionManager.getSubId(slotIndex)[0];
+        return (List<CarrierIdentifier>) sendRequest(CMD_GET_ALLOWED_CARRIERS, null, subId);
+    }
+
+    /**
+     * Action set from carrier signalling broadcast receivers to enable/disable metered apns
+     * @param subId the subscription ID that this action applies to.
+     * @param enabled control enable or disable metered apns.
+     * {@hide}
+     */
+    @Override
+    public void carrierActionSetMeteredApnsEnabled(int subId, boolean enabled) {
+        enforceModifyPermission();
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            loge("carrierAction: SetMeteredApnsEnabled fails with invalid subId: " + subId);
+            return;
+        }
+        try {
+            phone.carrierActionSetMeteredApnsEnabled(enabled);
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "carrierAction: SetMeteredApnsEnabled fails. Exception ex=" + e);
+        }
+    }
+
+    /**
+     * Action set from carrier signalling broadcast receivers to enable/disable radio
+     * @param subId the subscription ID that this action applies to.
+     * @param enabled control enable or disable radio.
+     * {@hide}
+     */
+    @Override
+    public void carrierActionSetRadioEnabled(int subId, boolean enabled) {
+        enforceModifyPermission();
+        final Phone phone = getPhone(subId);
+        if (phone == null) {
+            loge("carrierAction: SetRadioEnabled fails with invalid sibId: " + subId);
+            return;
+        }
+        try {
+            phone.carrierActionSetRadioEnabled(enabled);
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "carrierAction: SetRadioEnabled fails. Exception ex=" + e);
+        }
+    }
+
+    /**
+     * Called when "adb shell dumpsys phone" is invoked. Dump is also automatically invoked when a
+     * bug report is being generated.
+     */
+    @Override
+    protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
+        if (mPhone.getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+                != PackageManager.PERMISSION_GRANTED) {
+            writer.println("Permission Denial: can't dump Phone from pid="
+                    + Binder.getCallingPid()
+                    + ", uid=" + Binder.getCallingUid()
+                    + "without permission "
+                    + android.Manifest.permission.DUMP);
+            return;
+        }
+        DumpsysHandler.dump(mPhone.getContext(), fd, writer, args);
+    }
+
+    /**
+     * Get aggregated video call data usage since boot.
+     *
+     * @param perUidStats True if requesting data usage per uid, otherwise overall usage.
+     * @return Snapshot of video call data usage
+     * {@hide}
+     */
+    @Override
+    public NetworkStats getVtDataUsage(int subId, boolean perUidStats) {
+        mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_NETWORK_USAGE_HISTORY,
+                null);
+
+        // NetworkStatsService keeps tracking the active network interface and identity. It
+        // records the delta with the corresponding network identity. We just return the total video
+        // call data usage snapshot since boot.
+        Phone phone = getPhone(subId);
+        if (phone != null) {
+            return phone.getVtDataUsage(perUidStats);
+        }
+        return null;
+    }
+
+    /**
+     * Policy control of data connection. Usually used when data limit is passed.
+     * @param enabled True if enabling the data, otherwise disabling.
+     * @param subId Subscription index
+     * {@hide}
+     */
+    @Override
+    public void setPolicyDataEnabled(boolean enabled, int subId) {
+        enforceModifyPermission();
+        Phone phone = getPhone(subId);
+        if (phone != null) {
+            phone.setPolicyDataEnabled(enabled);
+        }
+    }
+
+    /**
+     * Get Client request stats
+     * @return List of Client Request Stats
+     * @hide
+     */
+    @Override
+    public List<ClientRequestStats> getClientRequestStats(String callingPackage, int subId) {
+        if (!canReadPhoneState(callingPackage, "getClientRequestStats")) {
+            return null;
+        }
+
+        Phone phone = getPhone(subId);
+        if (phone != null) {
+            return phone.getClientRequestStats();
+        }
+
+        return null;
+    }
+
+    private WorkSource getWorkSource(WorkSource workSource, int uid) {
+        if (workSource != null) {
+            return workSource;
+        }
+
+        String packageName = mPhone.getContext().getPackageManager().getNameForUid(uid);
+        workSource = new WorkSource(uid, packageName);
+        return workSource;
+    }
+
+    /**
+     * Set SIM card power state.
+     *
+     * @param slotIndex SIM slot id.
+     * @param state  State of SIM (power down, power up, pass through)
+     * - {@link android.telephony.TelephonyManager#CARD_POWER_DOWN}
+     * - {@link android.telephony.TelephonyManager#CARD_POWER_UP}
+     * - {@link android.telephony.TelephonyManager#CARD_POWER_UP_PASS_THROUGH}
+     *
+     **/
+    @Override
+    public void setSimPowerStateForSlot(int slotIndex, int state) {
+        enforceModifyPermission();
+        Phone phone = PhoneFactory.getPhone(slotIndex);
+
+        if (phone != null) {
+            phone.setSimPowerState(state);
+        }
+    }
+
+    private boolean isUssdApiAllowed(int subId) {
+        CarrierConfigManager configManager =
+                (CarrierConfigManager) mPhone.getContext().getSystemService(
+                        Context.CARRIER_CONFIG_SERVICE);
+        if (configManager == null) {
+            return false;
+        }
+        PersistableBundle pb = configManager.getConfigForSubId(subId);
+        if (pb == null) {
+            return false;
+        }
+        return pb.getBoolean(
+                CarrierConfigManager.KEY_ALLOW_USSD_REQUESTS_VIA_TELEPHONY_MANAGER_BOOL);
+    }
+
+    /**
+     * Check if phone is in emergency callback mode
+     * @return true if phone is in emergency callback mode
+     * @param subId sub id
+     */
+    public boolean getEmergencyCallbackMode(int subId) {
+        final Phone phone = getPhone(subId);
+        if (phone != null) {
+            return phone.isInEcm();
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Get the current signal strength information for the given subscription.
+     * Because this information is not updated when the device is in a low power state
+     * it should not be relied-upon to be current.
+     * @param subId Subscription index
+     * @return the most recent cached signal strength info from the modem
+     */
+    @Override
+    public SignalStrength getSignalStrength(int subId) {
+        Phone p = getPhone(subId);
+        if (p == null) {
+            return null;
+        }
+
+        return p.getSignalStrength();
     }
 }
diff --git a/src/com/android/phone/PhoneSearchIndexablesProvider.java b/src/com/android/phone/PhoneSearchIndexablesProvider.java
index f1dacd9..171f74f 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -16,11 +16,14 @@
 
 package com.android.phone;
 
+import android.content.Context;
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.os.UserManager;
 import android.provider.SearchIndexableResource;
 import android.provider.SearchIndexablesProvider;
 
+import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RANK;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_RESID;
 import static android.provider.SearchIndexablesContract.COLUMN_INDEX_XML_RES_CLASS_NAME;
@@ -37,7 +40,7 @@
     private static final String TAG = "PhoneSearchIndexablesProvider";
 
     private static SearchIndexableResource[] INDEXABLE_RES = new SearchIndexableResource[] {
-            new SearchIndexableResource(1, R.xml.network_setting,
+            new SearchIndexableResource(1, R.xml.network_setting_fragment,
                     MobileNetworkSettings.class.getName(),
                     R.mipmap.ic_launcher_phone),
     };
@@ -70,9 +73,23 @@
         MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
         return cursor;
     }
+
     @Override
     public Cursor queryNonIndexableKeys(String[] projection) {
         MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
+        final UserManager userManager = (UserManager) getContext().getSystemService(
+                Context.USER_SERVICE);
+        if (!userManager.isAdminUser()) {
+            final String[] values = new String[]{"preferred_network_mode_key", "button_roaming_key",
+                    "cdma_lte_data_service_key", "enabled_networks_key", "enhanced_4g_lte",
+                    "button_apn_key", "button_carrier_sel_key", "carrier_settings_key",
+                    "cdma_system_select_key", "carrier_settings_euicc_key"};
+            for (String nik : values) {
+                final Object[] ref = new Object[NON_INDEXABLES_KEYS_COLUMNS.length];
+                ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = nik;
+                cursor.addRow(ref);
+            }
+        }
         return cursor;
     }
 }
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index 0ab0cd2..50e7f0a 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -64,7 +64,6 @@
 import com.android.internal.telephony.TelephonyProperties;
 import com.android.internal.telephony.sip.SipPhone;
 import com.android.phone.CallGatewayManager.RawGatewayInfo;
-import com.android.services.telephony.TelephonyConnectionService;
 
 import java.util.Arrays;
 import java.util.List;
@@ -73,6 +72,7 @@
  * Misc utilities for the Phone app.
  */
 public class PhoneUtils {
+    public static final String EMERGENCY_ACCOUNT_HANDLE_ID = "E";
     private static final String LOG_TAG = "PhoneUtils";
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
@@ -86,9 +86,9 @@
     static final String ADD_CALL_MODE_KEY = "add_call_mode";
 
     // Return codes from placeCall()
-    static final int CALL_STATUS_DIALED = 0;  // The number was successfully dialed
-    static final int CALL_STATUS_DIALED_MMI = 1;  // The specified number was an MMI code
-    static final int CALL_STATUS_FAILED = 2;  // The call failed
+    public static final int CALL_STATUS_DIALED = 0;  // The number was successfully dialed
+    public static final int CALL_STATUS_DIALED_MMI = 1;  // The specified number was an MMI code
+    public static final int CALL_STATUS_FAILED = 2;  // The call failed
 
     // State of the Phone's audio modes
     // Each state can move to the other states, but within the state only certain
@@ -145,6 +145,10 @@
     private static AlertDialog sUssdDialog = null;
     private static StringBuilder sUssdMsg = new StringBuilder();
 
+    private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT =
+            new ComponentName("com.android.phone",
+                    "com.android.services.telephony.TelephonyConnectionService");
+
     /**
      * Handler that tracks the connections and updates the value of the
      * Mute settings for each connection as needed.
@@ -783,7 +787,7 @@
                                           MmiCode mmiCode,
                                           Message buttonCallbackMessage,
                                           Dialog previousAlert) {
-        if (DBG) log("displayMMIInitiate: " + mmiCode);
+        log("displayMMIInitiate: " + android.telecom.Log.pii(mmiCode.toString()));
         if (previousAlert != null) {
             previousAlert.dismiss();
         }
@@ -820,13 +824,13 @@
         boolean isCancelable = (mmiCode != null) && mmiCode.isCancelable();
 
         if (!isCancelable) {
-            if (DBG) log("not a USSD code, displaying status toast.");
+            log("displayMMIInitiate: not a USSD code, displaying status toast.");
             CharSequence text = context.getText(R.string.mmiStarted);
             Toast.makeText(context, text, Toast.LENGTH_SHORT)
                 .show();
             return null;
         } else {
-            if (DBG) log("running USSD code, displaying indeterminate progress.");
+            log("displayMMIInitiate: running USSD code, displaying intermediate progress.");
 
             // create the indeterminate progress dialog and display it.
             ProgressDialog pd = new ProgressDialog(context, THEME);
@@ -858,13 +862,13 @@
         int title = 0;  // title for the progress dialog, if needed.
         MmiCode.State state = mmiCode.getState();
 
-        if (DBG) log("displayMMIComplete: state=" + state);
+        log("displayMMIComplete: state=" + state);
 
         switch (state) {
             case PENDING:
                 // USSD code asking for feedback from user.
                 text = mmiCode.getMessage();
-                if (DBG) log("- using text from PENDING MMI message: '" + text + "'");
+                log("displayMMIComplete: using text from PENDING MMI message: '" + text + "'");
                 break;
             case CANCELLED:
                 text = null;
@@ -883,7 +887,7 @@
 
             case FAILED:
                 text = mmiCode.getMessage();
-                if (DBG) log("- using text from MMI message: '" + text + "'");
+                log("displayMMIComplete (failed): using text from MMI message: '" + text + "'");
                 break;
             default:
                 throw new IllegalStateException("Unexpected MmiCode state: " + state);
@@ -925,9 +929,9 @@
             // A USSD in a pending state means that it is still
             // interacting with the user.
             if (state != MmiCode.State.PENDING) {
-                if (DBG) log("MMI code has finished running.");
+                log("displayMMIComplete: MMI code has finished running.");
 
-                if (DBG) log("Extended NW displayMMIInitiate (" + text + ")");
+                log("displayMMIComplete: Extended NW displayMMIInitiate (" + text + ")");
                 if (text == null || text.length() == 0)
                     return;
 
@@ -948,7 +952,7 @@
                             .create();
 
                     sUssdDialog.getWindow().setType(
-                            WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
+                            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
                     sUssdDialog.getWindow().addFlags(
                             WindowManager.LayoutParams.FLAG_DIM_BEHIND);
                 }
@@ -962,7 +966,8 @@
                 sUssdDialog.setMessage(sUssdMsg.toString());
                 sUssdDialog.show();
             } else {
-                if (DBG) log("USSD code has requested user input. Constructing input dialog.");
+                log("displayMMIComplete: USSD code has requested user input. Constructing input "
+                        + "dialog.");
 
                 // USSD MMI code that is interacting with the user.  The
                 // basic set of steps is this:
@@ -1848,10 +1853,14 @@
     }
 
     static boolean isInEmergencyCall(CallManager cm) {
-        for (Connection cn : cm.getActiveFgCall().getConnections()) {
-            if (PhoneNumberUtils.isLocalEmergencyNumber(PhoneGlobals.getInstance(),
-                    cn.getAddress())) {
-                return true;
+        Call fgCall = cm.getActiveFgCall();
+        // isIdle includes checks for the DISCONNECTING/DISCONNECTED state.
+        if(!fgCall.isIdle()) {
+            for (Connection cn : fgCall.getConnections()) {
+                if (PhoneNumberUtils.isLocalEmergencyNumber(PhoneGlobals.getInstance(),
+                        cn.getAddress())) {
+                    return true;
+                }
             }
         }
         return false;
@@ -1893,7 +1902,7 @@
      *
      * @return true if we find a connection that is disconnected, and
      * pending removal via
-     * {@link com.android.internal.telephony.gsm.GsmCall#clearDisconnected()}.
+     * {@link com.android.internal.telephony.Call#clearDisconnected()}.
      */
     private static final boolean hasDisconnectedConnections(Call call) {
         // look through all connections for non-active ones.
@@ -2167,16 +2176,7 @@
      */
     /* package */ static boolean isPhoneInEcm(Phone phone) {
         if ((phone != null) && TelephonyCapabilities.supportsEcm(phone)) {
-            // For phones that support ECM, return true iff PROPERTY_INECM_MODE == "true".
-            // TODO: There ought to be a better API for this than just
-            // exposing a system property all the way up to the app layer,
-            // probably a method like "inEcm()" provided by the telephony
-            // layer.
-            String ecmMode =
-                    SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE);
-            if (ecmMode != null) {
-                return ecmMode.equals("true");
-            }
+            return phone.isInEcm();
         }
         return false;
     }
@@ -2406,7 +2406,8 @@
             Phone phone, String prefix, boolean isEmergency) {
         // TODO: Should use some sort of special hidden flag to decorate this account as
         // an emergency-only account
-        String id = isEmergency ? "E" : prefix + String.valueOf(phone.getIccSerialNumber());
+        String id = isEmergency ? EMERGENCY_ACCOUNT_HANDLE_ID : prefix +
+                String.valueOf(phone.getFullIccSerialNumber());
         return makePstnPhoneAccountHandleWithPrefix(id, prefix, isEmergency);
     }
 
@@ -2425,15 +2426,21 @@
     }
 
     public static int getSubIdForPhoneAccountHandle(PhoneAccountHandle handle) {
-        if (handle != null && handle.getComponentName().equals(getPstnConnectionServiceName())) {
-            Phone phone = getPhoneFromIccId(handle.getId());
-            if (phone != null) {
-                return phone.getSubId();
-            }
+        Phone phone = getPhoneForPhoneAccountHandle(handle);
+        if (phone != null) {
+            return phone.getSubId();
         }
         return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     }
 
+    public static Phone getPhoneForPhoneAccountHandle(PhoneAccountHandle handle) {
+        if (handle != null && handle.getComponentName().equals(getPstnConnectionServiceName())) {
+            return getPhoneFromIccId(handle.getId());
+        }
+        return null;
+    }
+
+
     /**
      * Determine if a given phone account corresponds to an active SIM
      *
@@ -2448,13 +2455,13 @@
     }
 
     private static ComponentName getPstnConnectionServiceName() {
-        return new ComponentName(PhoneGlobals.getInstance(), TelephonyConnectionService.class);
+        return PSTN_CONNECTION_SERVICE_COMPONENT;
     }
 
     private static Phone getPhoneFromIccId(String iccId) {
         if (!TextUtils.isEmpty(iccId)) {
             for (Phone phone : PhoneFactory.getPhones()) {
-                String phoneIccId = phone.getIccSerialNumber();
+                String phoneIccId = phone.getFullIccSerialNumber();
                 if (iccId.equals(phoneIccId)) {
                     return phone;
                 }
diff --git a/src/com/android/phone/RestrictedSwitchPreference.java b/src/com/android/phone/RestrictedSwitchPreference.java
new file mode 100644
index 0000000..ba6b65e
--- /dev/null
+++ b/src/com/android/phone/RestrictedSwitchPreference.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.phone;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
+public class RestrictedSwitchPreference extends SwitchPreference {
+    private final Context mContext;
+    private boolean mDisabledByAdmin;
+    private final int mSwitchWidgetResId;
+
+    public RestrictedSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        mSwitchWidgetResId = getWidgetLayoutResource();
+        mContext = context;
+    }
+
+    public RestrictedSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public RestrictedSwitchPreference(Context context, AttributeSet attrs) {
+        this(context, attrs, com.android.internal.R.attr.switchPreferenceStyle);
+    }
+
+    public RestrictedSwitchPreference(Context context) {
+        this(context, null);
+    }
+
+    @Override
+    public void onBindView(View view) {
+        super.onBindView(view);
+        if (mDisabledByAdmin) {
+            view.setEnabled(true);
+        }
+        final TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
+        if (summaryView != null && mDisabledByAdmin) {
+            summaryView.setText(
+                    isChecked() ? R.string.enabled_by_admin : R.string.disabled_by_admin);
+            summaryView.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void checkRestrictionAndSetDisabled(String userRestriction) {
+        UserManager um = UserManager.get(mContext);
+        UserHandle user = UserHandle.of(um.getUserHandle());
+        boolean disabledByAdmin = um.hasUserRestriction(userRestriction, user)
+                && !um.hasBaseUserRestriction(userRestriction, user);
+        setDisabledByAdmin(disabledByAdmin);
+    }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        if (enabled && mDisabledByAdmin) {
+            setDisabledByAdmin(false);
+        } else {
+            super.setEnabled(enabled);
+        }
+    }
+
+    public void setDisabledByAdmin(boolean disabled) {
+        if (mDisabledByAdmin != disabled) {
+            mDisabledByAdmin = disabled;
+            setWidgetLayoutResource(disabled ? R.layout.restricted_icon : mSwitchWidgetResId);
+            setEnabled(!disabled);
+        }
+    }
+
+    @Override
+    public void performClick(PreferenceScreen preferenceScreen) {
+        if (mDisabledByAdmin) {
+            RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext,
+                    new EnforcedAdmin());
+        } else {
+            super.performClick(preferenceScreen);
+        }
+    }
+}
diff --git a/src/com/android/phone/RoamingDialogFragment.java b/src/com/android/phone/RoamingDialogFragment.java
new file mode 100644
index 0000000..21c6946
--- /dev/null
+++ b/src/com/android/phone/RoamingDialogFragment.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.phone;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.Bundle;
+
+/**
+ * A dialog fragment that asks the user if they are sure they want to turn on data roaming
+ * to avoid accidental charges.
+ */
+public class RoamingDialogFragment extends DialogFragment implements OnClickListener {
+
+    /**
+     * The interface we expect a host activity to implement.
+     */
+    public interface RoamingDialogListener {
+        void onPositiveButtonClick(DialogFragment dialog);
+    }
+
+    // the host activity which implements the listening interface
+    private RoamingDialogListener mListener;
+
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        // Verify host activity implemented callback interface
+        FragmentManager fragmentManager = getFragmentManager();
+        Fragment fragment = fragmentManager.findFragmentById(R.id.network_setting_content);
+        try {
+            mListener = (RoamingDialogListener) fragment;
+        } catch (ClassCastException e) {
+            throw new ClassCastException(fragment.toString() +
+                    "must implement RoamingDialogListener");
+        }
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        builder.setMessage(getResources().getString(R.string.roaming_warning))
+                .setTitle(R.string.roaming_alert_title)
+                .setIconAttribute(android.R.attr.alertDialogIcon)
+                .setPositiveButton(android.R.string.yes, this)
+                .setNegativeButton(android.R.string.no, this);
+        return builder.create();
+    }
+
+    @Override
+    public void onClick(DialogInterface dialog, int which) {
+        // let the host know that the positive button has been clicked
+        if (which == dialog.BUTTON_POSITIVE) {
+            mListener.onPositiveButtonClick(this);
+        }
+    }
+}
diff --git a/src/com/android/phone/SimContacts.java b/src/com/android/phone/SimContacts.java
index 9f7f868..f668917 100644
--- a/src/com/android/phone/SimContacts.java
+++ b/src/com/android/phone/SimContacts.java
@@ -20,8 +20,10 @@
 import android.app.ActionBar;
 import android.app.ProgressDialog;
 import android.content.ContentProviderOperation;
+import android.content.ContentProviderResult;
 import android.content.ContentResolver;
 import android.content.ContentValues;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.DialogInterface.OnClickListener;
@@ -52,6 +54,7 @@
 import android.widget.ListView;
 import android.widget.SimpleCursorAdapter;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import java.util.ArrayList;
 
@@ -132,7 +135,7 @@
         }
     }
 
-    private static void actuallyImportOneSimContact(
+    private static boolean actuallyImportOneSimContact(
             final Cursor cursor, final ContentResolver resolver, Account account) {
         final NamePhoneTypePair namePhoneTypePair =
             new NamePhoneTypePair(cursor.getString(NAME_COLUMN));
@@ -194,20 +197,32 @@
         }
 
         try {
-            resolver.applyBatch(ContactsContract.AUTHORITY, operationList);
+            final ContentProviderResult[] results = resolver.applyBatch(ContactsContract.AUTHORITY,
+                    operationList);
+            return results.length > 0; // Batch operations either all succeed or all fail.
         } catch (RemoteException e) {
             Log.e(LOG_TAG, String.format("%s: %s", e.toString(), e.getMessage()));
         } catch (OperationApplicationException e) {
             Log.e(LOG_TAG, String.format("%s: %s", e.toString(), e.getMessage()));
         }
+        return false;
     }
 
     private void importOneSimContact(int position) {
         final ContentResolver resolver = getContentResolver();
+        final Context context = getApplicationContext();
         if (mCursor.moveToPosition(position)) {
-            actuallyImportOneSimContact(mCursor, resolver, mAccount);
+            if (actuallyImportOneSimContact(mCursor, resolver, mAccount)){
+                Toast.makeText(context, R.string.singleContactImportedMsg, Toast.LENGTH_SHORT)
+                        .show();
+            } else {
+                Toast.makeText(context, R.string.failedToImportSingleContactMsg, Toast.LENGTH_SHORT)
+                        .show();
+            }
         } else {
             Log.e(LOG_TAG, "Failed to move the cursor to the position \"" + position + "\"");
+            Toast.makeText(context, R.string.failedToImportSingleContactMsg, Toast.LENGTH_SHORT)
+                    .show();
         }
     }
 
diff --git a/src/com/android/phone/SpecialCharSequenceMgr.java b/src/com/android/phone/SpecialCharSequenceMgr.java
index 4e2120e..3c02a30 100644
--- a/src/com/android/phone/SpecialCharSequenceMgr.java
+++ b/src/com/android/phone/SpecialCharSequenceMgr.java
@@ -108,7 +108,7 @@
             || handleRegulatoryInfoDisplay(context, dialString)
             || handlePinEntry(context, dialString, pukInputActivity)
             || handleAdnEntry(context, dialString)
-            || handleSecretCode(context, dialString)) {
+            || handleSecretCode(dialString)) {
             return true;
         }
 
@@ -143,24 +143,21 @@
     }
 
     /**
-     * Handles secret codes to launch arbitrary activities in the form of *#*#<code>#*#*.
-     * If a secret code is encountered an Intent is started with the android_secret_code://<code>
-     * URI.
+     * Handles secret codes to launch arbitrary receivers in the form of *#*#<code>#*#*.
+     * If a secret code is encountered, an broadcast intent is sent with the
+     * android_secret_code://<code> URI.
      *
-     * @param context the context to use
      * @param input the text to check for a secret code in
-     * @return true if a secret code was encountered
+     * @return true if a secret code was encountered and intent is sent out
      */
-    static private boolean handleSecretCode(Context context, String input) {
+    static private boolean handleSecretCode(String input) {
         // Secret codes are in the form *#*#<code>#*#*
         int len = input.length();
         if (len > 8 && input.startsWith("*#*#") && input.endsWith("#*#*")) {
-            Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,
-                    Uri.parse("android_secret_code://" + input.substring(4, len - 4)));
-            context.sendBroadcast(intent);
+            final Phone phone = PhoneGlobals.getPhone();
+            phone.sendDialerSpecialCode(input.substring(4, len - 4));
             return true;
         }
-
         return false;
     }
 
diff --git a/src/com/android/phone/TelephonyDebugService.java b/src/com/android/phone/TelephonyDebugService.java
index fdfe8f5..fe17633 100644
--- a/src/com/android/phone/TelephonyDebugService.java
+++ b/src/com/android/phone/TelephonyDebugService.java
@@ -17,6 +17,7 @@
 package com.android.phone;
 
 import com.android.internal.telephony.DebugService;
+
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
@@ -30,11 +31,12 @@
  */
 public class TelephonyDebugService extends Service {
     private static String TAG = "TelephonyDebugService";
+    private static final boolean DBG = true;
     private DebugService mDebugService = new DebugService();
 
     /** Constructor */
     public TelephonyDebugService() {
-        Log.d(TAG, "TelephonyDebugService()");
+        if (DBG) Log.d(TAG, "TelephonyDebugService()");
     }
 
     /**
@@ -50,4 +52,3 @@
         mDebugService.dump(fd, pw, args);
     }
 }
-
diff --git a/src/com/android/phone/common/mail/Address.java b/src/com/android/phone/common/mail/Address.java
deleted file mode 100644
index 5928b63..0000000
--- a/src/com/android/phone/common/mail/Address.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.text.Html;
-import android.text.TextUtils;
-import android.text.util.Rfc822Token;
-import android.text.util.Rfc822Tokenizer;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.phone.common.mail.utils.LogUtils;
-
-import org.apache.james.mime4j.codec.EncoderUtil;
-import org.apache.james.mime4j.decoder.DecoderUtil;
-
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-
-/**
- * This class represent email address.
- *
- * RFC822 email address may have following format.
- *   "name" <address> (comment)
- *   "name" <address>
- *   name <address>
- *   address
- * Name and comment part should be MIME/base64 encoded in header if necessary.
- *
- */
-public class Address implements Parcelable {
-    public static final String ADDRESS_DELIMETER = ",";
-    /**
-     *  Address part, in the form local_part@domain_part. No surrounding angle brackets.
-     */
-    private String mAddress;
-
-    /**
-     * Name part. No surrounding double quote, and no MIME/base64 encoding.
-     * This must be null if Address has no name part.
-     */
-    private String mPersonal;
-
-    /**
-     * When personal is set, it will return the first token of the personal
-     * string. Otherwise, it will return the e-mail address up to the '@' sign.
-     */
-    private String mSimplifiedName;
-
-    // Regex that matches address surrounded by '<>' optionally. '^<?([^>]+)>?$'
-    private static final Pattern REMOVE_OPTIONAL_BRACKET = Pattern.compile("^<?([^>]+)>?$");
-    // Regex that matches personal name surrounded by '""' optionally. '^"?([^"]+)"?$'
-    private static final Pattern REMOVE_OPTIONAL_DQUOTE = Pattern.compile("^\"?([^\"]*)\"?$");
-    // Regex that matches escaped character '\\([\\"])'
-    private static final Pattern UNQUOTE = Pattern.compile("\\\\([\\\\\"])");
-
-    // TODO: LOCAL_PART and DOMAIN_PART_PART are too permissive and can be improved.
-    // TODO: Fix this to better constrain comments.
-    /** Regex for the local part of an email address. */
-    private static final String LOCAL_PART = "[^@]+";
-    /** Regex for each part of the domain part, i.e. the thing between the dots. */
-    private static final String DOMAIN_PART_PART = "[[\\w][\\d]\\-\\(\\)\\[\\]]+";
-    /** Regex for the domain part, which is two or more {@link #DOMAIN_PART_PART} separated by . */
-    private static final String DOMAIN_PART =
-            "(" + DOMAIN_PART_PART + "\\.)+" + DOMAIN_PART_PART;
-
-    /** Pattern to check if an email address is valid. */
-    private static final Pattern EMAIL_ADDRESS =
-            Pattern.compile("\\A" + LOCAL_PART + "@" + DOMAIN_PART + "\\z");
-
-    private static final Address[] EMPTY_ADDRESS_ARRAY = new Address[0];
-
-    // delimiters are chars that do not appear in an email address, used by fromHeader
-    private static final char LIST_DELIMITER_EMAIL = '\1';
-    private static final char LIST_DELIMITER_PERSONAL = '\2';
-
-    private static final String LOG_TAG = "Email Address";
-
-    @VisibleForTesting
-    public Address(String address) {
-        setAddress(address);
-    }
-
-    public Address(String address, String personal) {
-        setPersonal(personal);
-        setAddress(address);
-    }
-
-    /**
-     * Returns a simplified string for this e-mail address.
-     * When a name is known, it will return the first token of that name. Otherwise, it will
-     * return the e-mail address up to the '@' sign.
-     */
-    public String getSimplifiedName() {
-        if (mSimplifiedName == null) {
-            if (TextUtils.isEmpty(mPersonal) && !TextUtils.isEmpty(mAddress)) {
-                int atSign = mAddress.indexOf('@');
-                mSimplifiedName = (atSign != -1) ? mAddress.substring(0, atSign) : "";
-            } else if (!TextUtils.isEmpty(mPersonal)) {
-
-                // TODO: use Contacts' NameSplitter for more reliable first-name extraction
-
-                int end = mPersonal.indexOf(' ');
-                while (end > 0 && mPersonal.charAt(end - 1) == ',') {
-                    end--;
-                }
-                mSimplifiedName = (end < 1) ? mPersonal : mPersonal.substring(0, end);
-
-            } else {
-                LogUtils.w(LOG_TAG, "Unable to get a simplified name");
-                mSimplifiedName = "";
-            }
-        }
-        return mSimplifiedName;
-    }
-
-    public static synchronized Address getEmailAddress(String rawAddress) {
-        if (TextUtils.isEmpty(rawAddress)) {
-            return null;
-        }
-        String name, address;
-        final Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(rawAddress);
-        if (tokens.length > 0) {
-            final String tokenizedName = tokens[0].getName();
-            name = tokenizedName != null ? Html.fromHtml(tokenizedName.trim()).toString()
-                    : "";
-            address = Html.fromHtml(tokens[0].getAddress()).toString();
-        } else {
-            name = "";
-            address = rawAddress == null ?
-                    "" : Html.fromHtml(rawAddress).toString();
-        }
-        return new Address(address, name);
-    }
-
-    public String getAddress() {
-        return mAddress;
-    }
-
-    public void setAddress(String address) {
-        mAddress = REMOVE_OPTIONAL_BRACKET.matcher(address).replaceAll("$1");
-    }
-
-    /**
-     * Get name part as UTF-16 string. No surrounding double quote, and no MIME/base64 encoding.
-     *
-     * @return Name part of email address. Returns null if it is omitted.
-     */
-    public String getPersonal() {
-        return mPersonal;
-    }
-
-    /**
-     * Set personal part from UTF-16 string. Optional surrounding double quote will be removed.
-     * It will be also unquoted and MIME/base64 decoded.
-     *
-     * @param personal name part of email address as UTF-16 string. Null is acceptable.
-     */
-    public void setPersonal(String personal) {
-        mPersonal = decodeAddressPersonal(personal);
-    }
-
-    /**
-     * Decodes name from UTF-16 string. Optional surrounding double quote will be removed.
-     * It will be also unquoted and MIME/base64 decoded.
-     *
-     * @param personal name part of email address as UTF-16 string. Null is acceptable.
-     */
-    public static String decodeAddressPersonal(String personal) {
-        if (personal != null) {
-            personal = REMOVE_OPTIONAL_DQUOTE.matcher(personal).replaceAll("$1");
-            personal = UNQUOTE.matcher(personal).replaceAll("$1");
-            personal = DecoderUtil.decodeEncodedWords(personal);
-            if (personal.length() == 0) {
-                personal = null;
-            }
-        }
-        return personal;
-    }
-
-    /**
-     * This method is used to check that all the addresses that the user
-     * entered in a list (e.g. To:) are valid, so that none is dropped.
-     */
-    @VisibleForTesting
-    public static boolean isAllValid(String addressList) {
-        // This code mimics the parse() method below.
-        // I don't know how to better avoid the code-duplication.
-        if (addressList != null && addressList.length() > 0) {
-            Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
-            for (int i = 0, length = tokens.length; i < length; ++i) {
-                Rfc822Token token = tokens[i];
-                String address = token.getAddress();
-                if (!TextUtils.isEmpty(address) && !isValidAddress(address)) {
-                    return false;
-                }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Parse a comma-delimited list of addresses in RFC822 format and return an
-     * array of Address objects.
-     *
-     * @param addressList Address list in comma-delimited string.
-     * @return An array of 0 or more Addresses.
-     */
-    public static Address[] parse(String addressList) {
-        if (addressList == null || addressList.length() == 0) {
-            return EMPTY_ADDRESS_ARRAY;
-        }
-        Rfc822Token[] tokens = Rfc822Tokenizer.tokenize(addressList);
-        ArrayList<Address> addresses = new ArrayList<Address>();
-        for (int i = 0, length = tokens.length; i < length; ++i) {
-            Rfc822Token token = tokens[i];
-            String address = token.getAddress();
-            if (!TextUtils.isEmpty(address)) {
-                if (isValidAddress(address)) {
-                    String name = token.getName();
-                    if (TextUtils.isEmpty(name)) {
-                        name = null;
-                    }
-                    addresses.add(new Address(address, name));
-                }
-            }
-        }
-        return addresses.toArray(new Address[addresses.size()]);
-    }
-
-    /**
-     * Checks whether a string email address is valid.
-     * E.g. name@domain.com is valid.
-     */
-    @VisibleForTesting
-    static boolean isValidAddress(final String address) {
-        return EMAIL_ADDRESS.matcher(address).find();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o instanceof Address) {
-            // It seems that the spec says that the "user" part is case-sensitive,
-            // while the domain part in case-insesitive.
-            // So foo@yahoo.com and Foo@yahoo.com are different.
-            // This may seem non-intuitive from the user POV, so we
-            // may re-consider it if it creates UI trouble.
-            // A problem case is "replyAll" sending to both
-            // a@b.c and to A@b.c, which turn out to be the same on the server.
-            // Leave unchanged for now (i.e. case-sensitive).
-            return getAddress().equals(((Address) o).getAddress());
-        }
-        return super.equals(o);
-    }
-
-    @Override
-    public int hashCode() {
-        return getAddress().hashCode();
-    }
-
-    /**
-     * Get human readable address string.
-     * Do not use this for email header.
-     *
-     * @return Human readable address string.  Not quoted and not encoded.
-     */
-    @Override
-    public String toString() {
-        if (mPersonal != null && !mPersonal.equals(mAddress)) {
-            if (mPersonal.matches(".*[\\(\\)<>@,;:\\\\\".\\[\\]].*")) {
-                return ensureQuotedString(mPersonal) + " <" + mAddress + ">";
-            } else {
-                return mPersonal + " <" + mAddress + ">";
-            }
-        } else {
-            return mAddress;
-        }
-    }
-
-    /**
-     * Ensures that the given string starts and ends with the double quote character. The string is
-     * not modified in any way except to add the double quote character to start and end if it's not
-     * already there.
-     *
-     * sample -> "sample"
-     * "sample" -> "sample"
-     * ""sample"" -> "sample"
-     * "sample"" -> "sample"
-     * sa"mp"le -> "sa"mp"le"
-     * "sa"mp"le" -> "sa"mp"le"
-     * (empty string) -> ""
-     * " -> ""
-     */
-    private static String ensureQuotedString(String s) {
-        if (s == null) {
-            return null;
-        }
-        if (!s.matches("^\".*\"$")) {
-            return "\"" + s + "\"";
-        } else {
-            return s;
-        }
-    }
-
-    /**
-     * Get human readable comma-delimited address string.
-     *
-     * @param addresses Address array
-     * @return Human readable comma-delimited address string.
-     */
-    @VisibleForTesting
-    public static String toString(Address[] addresses) {
-        return toString(addresses, ADDRESS_DELIMETER);
-    }
-
-    /**
-     * Get human readable address strings joined with the specified separator.
-     *
-     * @param addresses Address array
-     * @param separator Separator
-     * @return Human readable comma-delimited address string.
-     */
-    public static String toString(Address[] addresses, String separator) {
-        if (addresses == null || addresses.length == 0) {
-            return null;
-        }
-        if (addresses.length == 1) {
-            return addresses[0].toString();
-        }
-        StringBuilder sb = new StringBuilder(addresses[0].toString());
-        for (int i = 1; i < addresses.length; i++) {
-            sb.append(separator);
-            // TODO: investigate why this .trim() is needed.
-            sb.append(addresses[i].toString().trim());
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Get RFC822/MIME compatible address string.
-     *
-     * @return RFC822/MIME compatible address string.
-     * It may be surrounded by double quote or quoted and MIME/base64 encoded if necessary.
-     */
-    public String toHeader() {
-        if (mPersonal != null) {
-            return EncoderUtil.encodeAddressDisplayName(mPersonal) + " <" + mAddress + ">";
-        } else {
-            return mAddress;
-        }
-    }
-
-    /**
-     * Get RFC822/MIME compatible comma-delimited address string.
-     *
-     * @param addresses Address array
-     * @return RFC822/MIME compatible comma-delimited address string.
-     * it may be surrounded by double quoted or quoted and MIME/base64 encoded if necessary.
-     */
-    public static String toHeader(Address[] addresses) {
-        if (addresses == null || addresses.length == 0) {
-            return null;
-        }
-        if (addresses.length == 1) {
-            return addresses[0].toHeader();
-        }
-        StringBuilder sb = new StringBuilder(addresses[0].toHeader());
-        for (int i = 1; i < addresses.length; i++) {
-            // We need space character to be able to fold line.
-            sb.append(", ");
-            sb.append(addresses[i].toHeader());
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Get Human friendly address string.
-     *
-     * @return the personal part of this Address, or the address part if the
-     * personal part is not available
-     */
-    @VisibleForTesting
-    public String toFriendly() {
-        if (mPersonal != null && mPersonal.length() > 0) {
-            return mPersonal;
-        } else {
-            return mAddress;
-        }
-    }
-
-    /**
-     * Creates a comma-delimited list of addresses in the "friendly" format (see toFriendly() for
-     * details on the per-address conversion).
-     *
-     * @param addresses Array of Address[] values
-     * @return A comma-delimited string listing all of the addresses supplied.  Null if source
-     * was null or empty.
-     */
-    @VisibleForTesting
-    public static String toFriendly(Address[] addresses) {
-        if (addresses == null || addresses.length == 0) {
-            return null;
-        }
-        if (addresses.length == 1) {
-            return addresses[0].toFriendly();
-        }
-        StringBuilder sb = new StringBuilder(addresses[0].toFriendly());
-        for (int i = 1; i < addresses.length; i++) {
-            sb.append(", ");
-            sb.append(addresses[i].toFriendly());
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Returns exactly the same result as Address.toString(Address.fromHeader(addressList)).
-     */
-    @VisibleForTesting
-    public static String fromHeaderToString(String addressList) {
-        return toString(fromHeader(addressList));
-    }
-
-    /**
-     * Returns exactly the same result as Address.toHeader(Address.parse(addressList)).
-     */
-    @VisibleForTesting
-    public static String parseToHeader(String addressList) {
-        return Address.toHeader(Address.parse(addressList));
-    }
-
-    /**
-     * Returns null if the addressList has 0 addresses, otherwise returns the first address.
-     * The same as Address.fromHeader(addressList)[0] for non-empty list.
-     * This is an utility method that offers some performance optimization opportunities.
-     */
-    @VisibleForTesting
-    public static Address firstAddress(String addressList) {
-        Address[] array = fromHeader(addressList);
-        return array.length > 0 ? array[0] : null;
-    }
-
-    /**
-     * This method exists to convert an address list formatted in a deprecated legacy format to the
-     * standard RFC822 header format. {@link #fromHeader(String)} is capable of reading the legacy
-     * format and the RFC822 format. {@link #toHeader()} always produces the RFC822 format.
-     *
-     * This implementation is brute-force, and could be replaced with a more efficient version
-     * if desired.
-     */
-    public static String reformatToHeader(String addressList) {
-        return toHeader(fromHeader(addressList));
-    }
-
-    /**
-     * @param addressList a CSV of RFC822 addresses or the deprecated legacy string format
-     * @return array of addresses parsed from <code>addressList</code>
-     */
-    @VisibleForTesting
-    public static Address[] fromHeader(String addressList) {
-        if (addressList == null || addressList.length() == 0) {
-            return EMPTY_ADDRESS_ARRAY;
-        }
-        // IF we're CSV, just parse
-        if ((addressList.indexOf(LIST_DELIMITER_PERSONAL) == -1) &&
-                (addressList.indexOf(LIST_DELIMITER_EMAIL) == -1)) {
-            return Address.parse(addressList);
-        }
-        // Otherwise, do backward-compatible unpack
-        ArrayList<Address> addresses = new ArrayList<Address>();
-        int length = addressList.length();
-        int pairStartIndex = 0;
-        int pairEndIndex;
-
-        /* addressEndIndex is only re-scanned (indexOf()) when a LIST_DELIMITER_PERSONAL
-           is used, not for every email address; i.e. not for every iteration of the while().
-           This reduces the theoretical complexity from quadratic to linear,
-           and provides some speed-up in practice by removing redundant scans of the string.
-        */
-        int addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL);
-
-        while (pairStartIndex < length) {
-            pairEndIndex = addressList.indexOf(LIST_DELIMITER_EMAIL, pairStartIndex);
-            if (pairEndIndex == -1) {
-                pairEndIndex = length;
-            }
-            Address address;
-            if (addressEndIndex == -1 || pairEndIndex <= addressEndIndex) {
-                // in this case the DELIMITER_PERSONAL is in a future pair,
-                // so don't use personal, and don't update addressEndIndex
-                address = new Address(addressList.substring(pairStartIndex, pairEndIndex), null);
-            } else {
-                address = new Address(addressList.substring(pairStartIndex, addressEndIndex),
-                        addressList.substring(addressEndIndex + 1, pairEndIndex));
-                // only update addressEndIndex when we use the LIST_DELIMITER_PERSONAL
-                addressEndIndex = addressList.indexOf(LIST_DELIMITER_PERSONAL, pairEndIndex + 1);
-            }
-            addresses.add(address);
-            pairStartIndex = pairEndIndex + 1;
-        }
-        return addresses.toArray(new Address[addresses.size()]);
-    }
-
-    public static final Creator<Address> CREATOR = new Creator<Address>() {
-        @Override
-        public Address createFromParcel(Parcel parcel) {
-            return new Address(parcel);
-        }
-
-        @Override
-        public Address[] newArray(int size) {
-            return new Address[size];
-        }
-    };
-
-    public Address(Parcel in) {
-        setPersonal(in.readString());
-        setAddress(in.readString());
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeString(mPersonal);
-        out.writeString(mAddress);
-    }
-}
diff --git a/src/com/android/phone/common/mail/AuthenticationFailedException.java b/src/com/android/phone/common/mail/AuthenticationFailedException.java
deleted file mode 100644
index f13ab45..0000000
--- a/src/com/android/phone/common/mail/AuthenticationFailedException.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail;
-
-public class AuthenticationFailedException extends MessagingException {
-    public static final long serialVersionUID = -1;
-
-    public AuthenticationFailedException(String message) {
-        super(MessagingException.AUTHENTICATION_FAILED, message);
-    }
-
-    public AuthenticationFailedException(int exceptionType, String message) {
-        super(exceptionType, message);
-    }
-
-    public AuthenticationFailedException(String message, Throwable throwable) {
-        super(MessagingException.AUTHENTICATION_FAILED, message, throwable);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Base64Body.java b/src/com/android/phone/common/mail/Base64Body.java
deleted file mode 100644
index 757b4b7..0000000
--- a/src/com/android/phone/common/mail/Base64Body.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import android.util.Base64;
-import android.util.Base64OutputStream;
-
-import org.apache.commons.io.IOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public class Base64Body implements Body {
-    private final InputStream mSource;
-    // Because we consume the input stream, we can only write out once
-    private boolean mAlreadyWritten;
-
-    public Base64Body(InputStream source) {
-        mSource = source;
-    }
-
-    @Override
-    public InputStream getInputStream() throws MessagingException {
-        return mSource;
-    }
-
-    /**
-     * This method consumes the input stream, so can only be called once
-     * @param out Stream to write to
-     * @throws IllegalStateException If called more than once
-     * @throws IOException
-     * @throws MessagingException
-     */
-    @Override
-    public void writeTo(OutputStream out)
-            throws IllegalStateException, IOException, MessagingException {
-        if (mAlreadyWritten) {
-            throw new IllegalStateException("Base64Body can only be written once");
-        }
-        mAlreadyWritten = true;
-        try {
-            final Base64OutputStream b64out = new Base64OutputStream(out, Base64.DEFAULT);
-            IOUtils.copyLarge(mSource, b64out);
-        } finally {
-            mSource.close();
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/Body.java b/src/com/android/phone/common/mail/Body.java
deleted file mode 100644
index 8625ef2..0000000
--- a/src/com/android/phone/common/mail/Body.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-public interface Body {
-    public InputStream getInputStream() throws MessagingException;
-    public void writeTo(OutputStream out) throws IOException, MessagingException;
-}
diff --git a/src/com/android/phone/common/mail/CertificateValidationException.java b/src/com/android/phone/common/mail/CertificateValidationException.java
deleted file mode 100644
index d8ae9b4..0000000
--- a/src/com/android/phone/common/mail/CertificateValidationException.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail;
-
-public class CertificateValidationException extends MessagingException {
-    public static final long serialVersionUID = -1;
-
-    public CertificateValidationException(String message) {
-        super(MessagingException.CERTIFICATE_VALIDATION_ERROR, message);
-    }
-
-    public CertificateValidationException(String message, Throwable throwable) {
-        super(MessagingException.CERTIFICATE_VALIDATION_ERROR, message, throwable);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/FetchProfile.java b/src/com/android/phone/common/mail/FetchProfile.java
deleted file mode 100644
index 01c1fcf..0000000
--- a/src/com/android/phone/common/mail/FetchProfile.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*

- * Copyright (C) 2015 The Android Open Source Project

- *

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package com.android.phone.common.mail;

-

-import java.util.ArrayList;

-

-/**

- * <pre>

- * A FetchProfile is a list of items that should be downloaded in bulk for a set of messages.

- * FetchProfile can contain the following objects:

- *      FetchProfile.Item:      Described below.

- *      Message:                Indicates that the body of the entire message should be fetched.

- *                              Synonymous with FetchProfile.Item.BODY.

- *      Part:                   Indicates that the given Part should be fetched. The provider

- *                              is expected have previously created the given BodyPart and stored

- *                              any information it needs to download the content.

- * </pre>

- */

-public class FetchProfile extends ArrayList<Fetchable> {

-    /**

-     * Default items available for pre-fetching. It should be expected that any

-     * item fetched by using these items could potentially include all of the

-     * previous items.

-     */

-    public enum Item implements Fetchable {

-        /**

-         * Download the flags of the message.

-         */

-        FLAGS,

-

-        /**

-         * Download the envelope of the message. This should include at minimum

-         * the size and the following headers: date, subject, from, content-type, to, cc

-         */

-        ENVELOPE,

-

-        /**

-         * Download the structure of the message. This maps directly to IMAP's BODYSTRUCTURE

-         * and may map to other providers.

-         * The provider should, if possible, fill in a properly formatted MIME structure in

-         * the message without actually downloading any message data. If the provider is not

-         * capable of this operation it should specifically set the body of the message to null

-         * so that upper levels can detect that a full body download is needed.

-         */

-        STRUCTURE,

-

-        /**

-         * A sane portion of the entire message, cut off at a provider determined limit.

-         * This should generaly be around 50kB.

-         */

-        BODY_SANE,

-

-        /**

-         * The entire message.

-         */

-        BODY,

-    }

-

-    /**

-     * @return the first {@link Part} in this collection, or null if it doesn't contain

-     * {@link Part}.

-     */

-    public Part getFirstPart() {

-        for (Fetchable o : this) {

-            if (o instanceof Part) {

-                return (Part) o;

-            }

-        }

-        return null;

-    }

-}

diff --git a/src/com/android/phone/common/mail/Fetchable.java b/src/com/android/phone/common/mail/Fetchable.java
deleted file mode 100644
index 829c672..0000000
--- a/src/com/android/phone/common/mail/Fetchable.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-/**
- * Interface for classes that can be added to {@link FetchProfile}.
- * i.e. {@link Part} and its subclasses, and {@link FetchProfile.Item}.
- */
-public interface Fetchable {
-}
diff --git a/src/com/android/phone/common/mail/FixedLengthInputStream.java b/src/com/android/phone/common/mail/FixedLengthInputStream.java
deleted file mode 100644
index 499feca..0000000
--- a/src/com/android/phone/common/mail/FixedLengthInputStream.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * A filtering InputStream that stops allowing reads after the given length has been read. This
- * is used to allow a client to read directly from an underlying protocol stream without reading
- * past where the protocol handler intended the client to read.
- */
-public class FixedLengthInputStream extends InputStream {
-    private final InputStream mIn;
-    private final int mLength;
-    private int mCount;
-
-    public FixedLengthInputStream(InputStream in, int length) {
-        this.mIn = in;
-        this.mLength = length;
-    }
-
-    @Override
-    public int available() throws IOException {
-        return mLength - mCount;
-    }
-
-    @Override
-    public int read() throws IOException {
-        if (mCount < mLength) {
-            mCount++;
-            return mIn.read();
-        } else {
-            return -1;
-        }
-    }
-
-    @Override
-    public int read(byte[] b, int offset, int length) throws IOException {
-        if (mCount < mLength) {
-            int d = mIn.read(b, offset, Math.min(mLength - mCount, length));
-            if (d == -1) {
-                return -1;
-            } else {
-                mCount += d;
-                return d;
-            }
-        } else {
-            return -1;
-        }
-    }
-
-    @Override
-    public int read(byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-
-    public int getLength() {
-        return mLength;
-    }
-
-    @Override
-    public String toString() {
-        return String.format("FixedLengthInputStream(in=%s, length=%d)", mIn.toString(), mLength);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Flag.java b/src/com/android/phone/common/mail/Flag.java
deleted file mode 100644
index aa5d7e9..0000000
--- a/src/com/android/phone/common/mail/Flag.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-/**
- * Flags that can be applied to Messages.
- */
-public class Flag {
-    // If adding new flags: ALL FLAGS MUST BE UPPER CASE.
-    public static final String DELETED = "deleted";
-    public static final String SEEN = "seen";
-    public static final String ANSWERED = "answered";
-    public static final String FLAGGED = "flagged";
-    public static final String DRAFT = "draft";
-    public static final String RECENT = "recent";
-}
diff --git a/src/com/android/phone/common/mail/MailTransport.java b/src/com/android/phone/common/mail/MailTransport.java
deleted file mode 100644
index 172d1a9..0000000
--- a/src/com/android/phone/common/mail/MailTransport.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import android.content.Context;
-import android.net.Network;
-
-import com.android.phone.common.mail.store.ImapStore;
-import com.android.phone.common.mail.utils.LogUtils;
-
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLPeerUnverifiedException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-
-/**
- * Make connection and perform operations on mail server by reading and writing lines.
- */
-public class MailTransport {
-    private static final String TAG = "MailTransport";
-
-    // TODO protected eventually
-    /*protected*/ public static final int SOCKET_CONNECT_TIMEOUT = 10000;
-    /*protected*/ public static final int SOCKET_READ_TIMEOUT = 60000;
-
-    private static final HostnameVerifier HOSTNAME_VERIFIER =
-            HttpsURLConnection.getDefaultHostnameVerifier();
-
-    private Context mContext;
-    private Network mNetwork;
-    private String mHost;
-    private int mPort;
-    private Socket mSocket;
-    private BufferedInputStream mIn;
-    private BufferedOutputStream mOut;
-    private int mFlags;
-
-    public MailTransport(Context context, Network network, String address, int port, int flags) {
-        mContext = context;
-        mNetwork = network;
-        mHost = address;
-        mPort = port;
-        mFlags = flags;
-    }
-
-    /**
-     * Returns a new transport, using the current transport as a model. The new transport is
-     * configured identically, but not opened or connected in any way.
-     */
-    @Override
-    public MailTransport clone() {
-        return new MailTransport(mContext, mNetwork, mHost, mPort, mFlags);
-    }
-
-    public boolean canTrySslSecurity() {
-        return (mFlags & ImapStore.FLAG_SSL) != 0;
-    }
-
-    public boolean canTrustAllCertificates() {
-        return (mFlags & ImapStore.FLAG_TRUST_ALL) != 0;
-    }
-
-    /**
-     * Attempts to open a connection using the Uri supplied for connection parameters.  Will attempt
-     * an SSL connection if indicated.
-     */
-    public void open() throws MessagingException, CertificateValidationException {
-        LogUtils.d(TAG, "*** IMAP open " + mHost + ":" + String.valueOf(mPort));
-
-        List<SocketAddress> socketAddresses = new ArrayList<SocketAddress>();
-        try {
-            if (canTrySslSecurity()) {
-                mSocket = HttpsURLConnection.getDefaultSSLSocketFactory().createSocket();
-                socketAddresses.add(new InetSocketAddress(mHost, mPort));
-            } else {
-                if (mNetwork == null) {
-                    mSocket = new Socket();
-                    socketAddresses.add(new InetSocketAddress(mHost, mPort));
-                } else {
-                    InetAddress[] inetAddresses = mNetwork.getAllByName(mHost);
-                    for (int i = 0; i < inetAddresses.length; i++) {
-                        socketAddresses.add(new InetSocketAddress(inetAddresses[i], mPort));
-                    }
-                    mSocket = mNetwork.getSocketFactory().createSocket();
-                }
-            }
-        } catch (IOException ioe) {
-            LogUtils.d(TAG, ioe.toString());
-            throw new MessagingException(MessagingException.IOERROR, ioe.toString());
-        }
-
-        while (socketAddresses.size() > 0) {
-            try {
-                mSocket.connect(socketAddresses.remove(0), SOCKET_CONNECT_TIMEOUT);
-
-                // After the socket connects to an SSL server, confirm that the hostname is as
-                // expected
-                if (canTrySslSecurity() && !canTrustAllCertificates()) {
-                    verifyHostname(mSocket, mHost);
-                }
-
-                mIn = new BufferedInputStream(mSocket.getInputStream(), 1024);
-                mOut = new BufferedOutputStream(mSocket.getOutputStream(), 512);
-                mSocket.setSoTimeout(SOCKET_READ_TIMEOUT);
-                return;
-            } catch (IOException ioe) {
-                LogUtils.d(TAG, ioe.toString());
-                if (socketAddresses.size() == 0) {
-                    // Only throw an error when there are no more sockets to try.
-                    throw new MessagingException(MessagingException.IOERROR, ioe.toString());
-                }
-            }
-        }
-    }
-
-    /**
-     * Lightweight version of SSLCertificateSocketFactory.verifyHostname, which provides this
-     * service but is not in the public API.
-     *
-     * Verify the hostname of the certificate used by the other end of a
-     * connected socket. It is harmless to call this method redundantly if the hostname has already
-     * been verified.
-     *
-     * <p>Wildcard certificates are allowed to verify any matching hostname,
-     * so "foo.bar.example.com" is verified if the peer has a certificate
-     * for "*.example.com".
-     *
-     * @param socket An SSL socket which has been connected to a server
-     * @param hostname The expected hostname of the remote server
-     * @throws IOException if something goes wrong handshaking with the server
-     * @throws SSLPeerUnverifiedException if the server cannot prove its identity
-      */
-    private static void verifyHostname(Socket socket, String hostname) throws IOException {
-        // The code at the start of OpenSSLSocketImpl.startHandshake()
-        // ensures that the call is idempotent, so we can safely call it.
-        SSLSocket ssl = (SSLSocket) socket;
-        ssl.startHandshake();
-
-        SSLSession session = ssl.getSession();
-        if (session == null) {
-            throw new SSLException("Cannot verify SSL socket without session");
-        }
-        // TODO: Instead of reporting the name of the server we think we're connecting to,
-        // we should be reporting the bad name in the certificate.  Unfortunately this is buried
-        // in the verifier code and is not available in the verifier API, and extracting the
-        // CN & alts is beyond the scope of this patch.
-        if (!HOSTNAME_VERIFIER.verify(hostname, session)) {
-            throw new SSLPeerUnverifiedException(
-                    "Certificate hostname not useable for server: " + hostname);
-        }
-    }
-
-    public boolean isOpen() {
-        return (mIn != null && mOut != null &&
-                mSocket != null && mSocket.isConnected() && !mSocket.isClosed());
-    }
-
-    /**
-     * Close the connection.  MUST NOT return any exceptions - must be "best effort" and safe.
-     */
-    public void close() {
-        try {
-            mIn.close();
-        } catch (Exception e) {
-            // May fail if the connection is already closed.
-        }
-        try {
-            mOut.close();
-        } catch (Exception e) {
-            // May fail if the connection is already closed.
-        }
-        try {
-            mSocket.close();
-        } catch (Exception e) {
-            // May fail if the connection is already closed.
-        }
-        mIn = null;
-        mOut = null;
-        mSocket = null;
-    }
-
-    public InputStream getInputStream() {
-        return mIn;
-    }
-
-    public OutputStream getOutputStream() {
-        return mOut;
-    }
-
-    /**
-     * Writes a single line to the server using \r\n termination.
-     */
-    public void writeLine(String s, String sensitiveReplacement) throws IOException {
-        if (sensitiveReplacement != null) {
-            LogUtils.d(TAG, ">>> " + sensitiveReplacement);
-        } else {
-            LogUtils.d(TAG, ">>> " + s);
-        }
-
-        OutputStream out = getOutputStream();
-        out.write(s.getBytes());
-        out.write('\r');
-        out.write('\n');
-        out.flush();
-    }
-
-    /**
-     * Reads a single line from the server, using either \r\n or \n as the delimiter.  The
-     * delimiter char(s) are not included in the result.
-     */
-    public String readLine(boolean loggable) throws IOException {
-        StringBuffer sb = new StringBuffer();
-        InputStream in = getInputStream();
-        int d;
-        while ((d = in.read()) != -1) {
-            if (((char)d) == '\r') {
-                continue;
-            } else if (((char)d) == '\n') {
-                break;
-            } else {
-                sb.append((char)d);
-            }
-        }
-        if (d == -1) {
-            LogUtils.d(TAG, "End of stream reached while trying to read line.");
-        }
-        String ret = sb.toString();
-        if (loggable) {
-            LogUtils.d(TAG, "<<< " + ret);
-        }
-        return ret;
-    }
-}
diff --git a/src/com/android/phone/common/mail/MeetingInfo.java b/src/com/android/phone/common/mail/MeetingInfo.java
deleted file mode 100644
index 9fbafe7..0000000
--- a/src/com/android/phone/common/mail/MeetingInfo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-public class MeetingInfo {
-    // Predefined tags; others can be added
-    public static final String MEETING_DTSTAMP = "DTSTAMP";
-    public static final String MEETING_UID = "UID";
-    public static final String MEETING_ORGANIZER_EMAIL = "ORGMAIL";
-    public static final String MEETING_DTSTART = "DTSTART";
-    public static final String MEETING_DTEND = "DTEND";
-    public static final String MEETING_TITLE = "TITLE";
-    public static final String MEETING_LOCATION = "LOC";
-    public static final String MEETING_RESPONSE_REQUESTED = "RESPONSE";
-    public static final String MEETING_ALL_DAY = "ALLDAY";
-}
diff --git a/src/com/android/phone/common/mail/Message.java b/src/com/android/phone/common/mail/Message.java
deleted file mode 100644
index 0a5ed35..0000000
--- a/src/com/android/phone/common/mail/Message.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.util.Date;
-import java.util.HashSet;
-
-public abstract class Message implements Part, Body {
-    public static final Message[] EMPTY_ARRAY = new Message[0];
-
-    public static final String RECIPIENT_TYPE_TO = "to";
-    public static final String RECIPIENT_TYPE_CC = "cc";
-    public static final String RECIPIENT_TYPE_BCC = "bcc";
-    public enum RecipientType {
-        TO, CC, BCC,
-    }
-
-    protected String mUid;
-
-    private HashSet<String> mFlags = null;
-
-    protected Date mInternalDate;
-
-    public String getUid() {
-        return mUid;
-    }
-
-    public void setUid(String uid) {
-        this.mUid = uid;
-    }
-
-    public abstract String getSubject() throws MessagingException;
-
-    public abstract void setSubject(String subject) throws MessagingException;
-
-    public Date getInternalDate() {
-        return mInternalDate;
-    }
-
-    public void setInternalDate(Date internalDate) {
-        this.mInternalDate = internalDate;
-    }
-
-    public abstract Date getReceivedDate() throws MessagingException;
-
-    public abstract Date getSentDate() throws MessagingException;
-
-    public abstract void setSentDate(Date sentDate) throws MessagingException;
-
-    public abstract Address[] getRecipients(String type) throws MessagingException;
-
-    public abstract void setRecipients(String type, Address[] addresses)
-            throws MessagingException;
-
-    public void setRecipient(String type, Address address) throws MessagingException {
-        setRecipients(type, new Address[] {
-            address
-        });
-    }
-
-    public abstract Address[] getFrom() throws MessagingException;
-
-    public abstract void setFrom(Address from) throws MessagingException;
-
-    public abstract Address[] getReplyTo() throws MessagingException;
-
-    public abstract void setReplyTo(Address[] from) throws MessagingException;
-
-    // Always use these instead of getHeader("Message-ID") or setHeader("Message-ID");
-    public abstract void setMessageId(String messageId) throws MessagingException;
-    public abstract String getMessageId() throws MessagingException;
-
-    @Override
-    public boolean isMimeType(String mimeType) throws MessagingException {
-        return getContentType().startsWith(mimeType);
-    }
-
-    private HashSet<String> getFlagSet() {
-        if (mFlags == null) {
-            mFlags = new HashSet<String>();
-        }
-        return mFlags;
-    }
-
-    /*
-     * TODO Refactor Flags at some point to be able to store user defined flags.
-     */
-    public String[] getFlags() {
-        return getFlagSet().toArray(new String[] {});
-    }
-
-    /**
-     * Set/clear a flag directly, without involving overrides of {@link #setFlag} in subclasses.
-     * Only used for testing.
-     */
-    @VisibleForTesting
-    private final void setFlagDirectlyForTest(String flag, boolean set) throws MessagingException {
-        if (set) {
-            getFlagSet().add(flag);
-        } else {
-            getFlagSet().remove(flag);
-        }
-    }
-
-    public void setFlag(String flag, boolean set) throws MessagingException {
-        setFlagDirectlyForTest(flag, set);
-    }
-
-    /**
-     * This method calls setFlag(String, boolean)
-     * @param flags
-     * @param set
-     */
-    public void setFlags(String[] flags, boolean set) throws MessagingException {
-        for (String flag : flags) {
-            setFlag(flag, set);
-        }
-    }
-
-    public boolean isSet(String flag) {
-        return getFlagSet().contains(flag);
-    }
-
-    public abstract void saveChanges() throws MessagingException;
-
-    @Override
-    public String toString() {
-        return getClass().getSimpleName() + ':' + mUid;
-    }
-}
diff --git a/src/com/android/phone/common/mail/MessageDateComparator.java b/src/com/android/phone/common/mail/MessageDateComparator.java
deleted file mode 100644
index 5d8baa7..0000000
--- a/src/com/android/phone/common/mail/MessageDateComparator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import java.util.Comparator;
-
-public class MessageDateComparator implements Comparator<Message> {
-    @Override
-    public int compare(Message o1, Message o2) {
-        try {
-            if (o1.getSentDate() == null) {
-                return 1;
-            } else if (o2.getSentDate() == null) {
-                return -1;
-            } else
-                return o2.getSentDate().compareTo(o1.getSentDate());
-        } catch (Exception e) {
-            return 0;
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/MessagingException.java b/src/com/android/phone/common/mail/MessagingException.java
deleted file mode 100644
index e4c674a..0000000
--- a/src/com/android/phone/common/mail/MessagingException.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail;
-
-/**
- * This exception is used for most types of failures that occur during server interactions.
- *
- * Data passed through this exception should be considered non-localized.  Any strings should
- * either be internal-only (for debugging) or server-generated.
- *
- * TO DO: Does it make sense to further collapse AuthenticationFailedException and
- * CertificateValidationException and any others into this?
- */
-public class MessagingException extends Exception {
-    public static final long serialVersionUID = -1;
-
-    public static final int NO_ERROR = -1;
-    /** Any exception that does not specify a specific issue */
-    public static final int UNSPECIFIED_EXCEPTION = 0;
-    /** Connection or IO errors */
-    public static final int IOERROR = 1;
-    /** The configuration requested TLS but the server did not support it. */
-    public static final int TLS_REQUIRED = 2;
-    /** Authentication is required but the server did not support it. */
-    public static final int AUTH_REQUIRED = 3;
-    /** General security failures */
-    public static final int GENERAL_SECURITY = 4;
-    /** Authentication failed */
-    public static final int AUTHENTICATION_FAILED = 5;
-    /** Attempt to create duplicate account */
-    public static final int DUPLICATE_ACCOUNT = 6;
-    /** Required security policies reported - advisory only */
-    public static final int SECURITY_POLICIES_REQUIRED = 7;
-   /** Required security policies not supported */
-    public static final int SECURITY_POLICIES_UNSUPPORTED = 8;
-   /** The protocol (or protocol version) isn't supported */
-    public static final int PROTOCOL_VERSION_UNSUPPORTED = 9;
-    /** The server's SSL certificate couldn't be validated */
-    public static final int CERTIFICATE_VALIDATION_ERROR = 10;
-    /** Authentication failed during autodiscover */
-    public static final int AUTODISCOVER_AUTHENTICATION_FAILED = 11;
-    /** Autodiscover completed with a result (non-error) */
-    public static final int AUTODISCOVER_AUTHENTICATION_RESULT = 12;
-    /** Ambiguous failure; server error or bad credentials */
-    public static final int AUTHENTICATION_FAILED_OR_SERVER_ERROR = 13;
-    /** The server refused access */
-    public static final int ACCESS_DENIED = 14;
-    /** The server refused access */
-    public static final int ATTACHMENT_NOT_FOUND = 15;
-    /** A client SSL certificate is required for connections to the server */
-    public static final int CLIENT_CERTIFICATE_REQUIRED = 16;
-    /** The client SSL certificate specified is invalid */
-    public static final int CLIENT_CERTIFICATE_ERROR = 17;
-    /** The server indicates it does not support OAuth authentication */
-    public static final int OAUTH_NOT_SUPPORTED = 18;
-    /** The server indicates it experienced an internal error */
-    public static final int SERVER_ERROR = 19;
-
-    protected int mExceptionType;
-    // Exception type-specific data
-    protected Object mExceptionData;
-
-    public MessagingException(String message, Throwable throwable) {
-        this(UNSPECIFIED_EXCEPTION, message, throwable);
-    }
-
-    public MessagingException(int exceptionType, String message, Throwable throwable) {
-        super(message, throwable);
-        mExceptionType = exceptionType;
-        mExceptionData = null;
-    }
-
-    /**
-     * Constructs a MessagingException with an exceptionType and a null message.
-     * @param exceptionType The exception type to set for this exception.
-     */
-    public MessagingException(int exceptionType) {
-        this(exceptionType, null, null);
-    }
-
-    /**
-     * Constructs a MessagingException with a message.
-     * @param message the message for this exception
-     */
-    public MessagingException(String message) {
-        this(UNSPECIFIED_EXCEPTION, message, null);
-    }
-
-    /**
-     * Constructs a MessagingException with an exceptionType and a message.
-     * @param exceptionType The exception type to set for this exception.
-     */
-    public MessagingException(int exceptionType, String message) {
-        this(exceptionType, message, null);
-    }
-
-    /**
-     * Constructs a MessagingException with an exceptionType, a message, and data
-     * @param exceptionType The exception type to set for this exception.
-     * @param message the message for the exception (or null)
-     * @param data exception-type specific data for the exception (or null)
-     */
-    public MessagingException(int exceptionType, String message, Object data) {
-        super(message);
-        mExceptionType = exceptionType;
-        mExceptionData = data;
-    }
-
-    /**
-     * Return the exception type.  Will be OTHER_EXCEPTION if not explicitly set.
-     *
-     * @return Returns the exception type.
-     */
-    public int getExceptionType() {
-        return mExceptionType;
-    }
-    /**
-     * Return the exception data.  Will be null if not explicitly set.
-     *
-     * @return Returns the exception data.
-     */
-    public Object getExceptionData() {
-        return mExceptionData;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/Multipart.java b/src/com/android/phone/common/mail/Multipart.java
deleted file mode 100644
index 77963c8..0000000
--- a/src/com/android/phone/common/mail/Multipart.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*

- * Copyright (C) 2015 The Android Open Source Project

- *

- * Licensed under the Apache License, Version 2.0 (the "License");

- * you may not use this file except in compliance with the License.

- * You may obtain a copy of the License at

- *

- *      http://www.apache.org/licenses/LICENSE-2.0

- *

- * Unless required by applicable law or agreed to in writing, software

- * distributed under the License is distributed on an "AS IS" BASIS,

- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

- * See the License for the specific language governing permissions and

- * limitations under the License.

- */

-package com.android.phone.common.mail;

-

-import java.util.ArrayList;

-

-public abstract class Multipart implements Body {

-    protected Part mParent;

-

-    protected ArrayList<BodyPart> mParts = new ArrayList<BodyPart>();

-

-    protected String mContentType;

-

-    public void addBodyPart(BodyPart part) throws MessagingException {

-        mParts.add(part);

-    }

-

-    public void addBodyPart(BodyPart part, int index) throws MessagingException {

-        mParts.add(index, part);

-    }

-

-    public BodyPart getBodyPart(int index) throws MessagingException {

-        return mParts.get(index);

-    }

-

-    public String getContentType() throws MessagingException {

-        return mContentType;

-    }

-

-    public int getCount() throws MessagingException {

-        return mParts.size();

-    }

-

-    public boolean removeBodyPart(BodyPart part) throws MessagingException {

-        return mParts.remove(part);

-    }

-

-    public void removeBodyPart(int index) throws MessagingException {

-        mParts.remove(index);

-    }

-

-    public Part getParent() throws MessagingException {

-        return mParent;

-    }

-

-    public void setParent(Part parent) throws MessagingException {

-        this.mParent = parent;

-    }

-}

diff --git a/src/com/android/phone/common/mail/PackedString.java b/src/com/android/phone/common/mail/PackedString.java
deleted file mode 100644
index 6cbba9e..0000000
--- a/src/com/android/phone/common/mail/PackedString.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A utility class for creating and modifying Strings that are tagged and packed together.
- *
- * Uses non-printable (control chars) for internal delimiters;  Intended for regular displayable
- * strings only, so please use base64 or other encoding if you need to hide any binary data here.
- *
- * Binary compatible with Address.pack() format, which should migrate to use this code.
- */
-public class PackedString {
-
-    /**
-     * Packing format is:
-     *   element : [ value ] or [ value TAG-DELIMITER tag ]
-     *   packed-string : [ element ] [ ELEMENT-DELIMITER [ element ] ]*
-     */
-    private static final char DELIMITER_ELEMENT = '\1';
-    private static final char DELIMITER_TAG = '\2';
-
-    private String mString;
-    private HashMap<String, String> mExploded;
-    private static final HashMap<String, String> EMPTY_MAP = new HashMap<String, String>();
-
-    /**
-     * Create a packed string using an already-packed string (e.g. from database)
-     * @param string packed string
-     */
-    public PackedString(String string) {
-        mString = string;
-        mExploded = null;
-    }
-
-    /**
-     * Get the value referred to by a given tag.  If the tag does not exist, return null.
-     * @param tag identifier of string of interest
-     * @return returns value, or null if no string is found
-     */
-    public String get(String tag) {
-        if (mExploded == null) {
-            mExploded = explode(mString);
-        }
-        return mExploded.get(tag);
-    }
-
-    /**
-     * Return a map of all of the values referred to by a given tag.  This is a shallow
-     * copy, don't edit the values.
-     * @return a map of the values in the packed string
-     */
-    public Map<String, String> unpack() {
-        if (mExploded == null) {
-            mExploded = explode(mString);
-        }
-        return new HashMap<String,String>(mExploded);
-    }
-
-    /**
-     * Read out all values into a map.
-     */
-    private static HashMap<String, String> explode(String packed) {
-        if (packed == null || packed.length() == 0) {
-            return EMPTY_MAP;
-        }
-        HashMap<String, String> map = new HashMap<String, String>();
-
-        int length = packed.length();
-        int elementStartIndex = 0;
-        int elementEndIndex = 0;
-        int tagEndIndex = packed.indexOf(DELIMITER_TAG);
-
-        while (elementStartIndex < length) {
-            elementEndIndex = packed.indexOf(DELIMITER_ELEMENT, elementStartIndex);
-            if (elementEndIndex == -1) {
-                elementEndIndex = length;
-            }
-            String tag;
-            String value;
-            if (tagEndIndex == -1 || elementEndIndex <= tagEndIndex) {
-                // in this case the DELIMITER_PERSONAL is in a future pair (or not found)
-                // so synthesize a positional tag for the value, and don't update tagEndIndex
-                value = packed.substring(elementStartIndex, elementEndIndex);
-                tag = Integer.toString(map.size());
-            } else {
-                value = packed.substring(elementStartIndex, tagEndIndex);
-                tag = packed.substring(tagEndIndex + 1, elementEndIndex);
-                // scan forward for next tag, if any
-                tagEndIndex = packed.indexOf(DELIMITER_TAG, elementEndIndex + 1);
-            }
-            map.put(tag, value);
-            elementStartIndex = elementEndIndex + 1;
-        }
-
-        return map;
-    }
-
-    /**
-     * Builder class for creating PackedString values.  Can also be used for editing existing
-     * PackedString representations.
-     */
-    static public class Builder {
-        HashMap<String, String> mMap;
-
-        /**
-         * Create a builder that's empty (for filling)
-         */
-        public Builder() {
-            mMap = new HashMap<String, String>();
-        }
-
-        /**
-         * Create a builder using the values of an existing PackedString (for editing).
-         */
-        public Builder(String packed) {
-            mMap = explode(packed);
-        }
-
-        /**
-         * Add a tagged value
-         * @param tag identifier of string of interest
-         * @param value the value to record in this position.  null to delete entry.
-         */
-        public void put(String tag, String value) {
-            if (value == null) {
-                mMap.remove(tag);
-            } else {
-                mMap.put(tag, value);
-            }
-        }
-
-        /**
-         * Get the value referred to by a given tag.  If the tag does not exist, return null.
-         * @param tag identifier of string of interest
-         * @return returns value, or null if no string is found
-         */
-        public String get(String tag) {
-            return mMap.get(tag);
-        }
-
-        /**
-         * Pack the values and return a single, encoded string
-         */
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder();
-            for (Map.Entry<String,String> entry : mMap.entrySet()) {
-                if (sb.length() > 0) {
-                    sb.append(DELIMITER_ELEMENT);
-                }
-                sb.append(entry.getValue());
-                sb.append(DELIMITER_TAG);
-                sb.append(entry.getKey());
-            }
-            return sb.toString();
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/Part.java b/src/com/android/phone/common/mail/Part.java
deleted file mode 100644
index d064e2a..0000000
--- a/src/com/android/phone/common/mail/Part.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public interface Part extends Fetchable {
-    public void addHeader(String name, String value) throws MessagingException;
-
-    public void removeHeader(String name) throws MessagingException;
-
-    public void setHeader(String name, String value) throws MessagingException;
-
-    public Body getBody() throws MessagingException;
-
-    public String getContentType() throws MessagingException;
-
-    public String getDisposition() throws MessagingException;
-
-    public String getContentId() throws MessagingException;
-
-    public String[] getHeader(String name) throws MessagingException;
-
-    public void setExtendedHeader(String name, String value) throws MessagingException;
-
-    public String getExtendedHeader(String name) throws MessagingException;
-
-    public int getSize() throws MessagingException;
-
-    public boolean isMimeType(String mimeType) throws MessagingException;
-
-    public String getMimeType() throws MessagingException;
-
-    public void setBody(Body body) throws MessagingException;
-
-    public void writeTo(OutputStream out) throws IOException, MessagingException;
-}
diff --git a/src/com/android/phone/common/mail/PeekableInputStream.java b/src/com/android/phone/common/mail/PeekableInputStream.java
deleted file mode 100644
index d29fc6b..0000000
--- a/src/com/android/phone/common/mail/PeekableInputStream.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * A filtering InputStream that allows single byte "peeks" without consuming the byte. The
- * client of this stream can call peek() to see the next available byte in the stream
- * and a subsequent read will still return the peeked byte.
- */
-public class PeekableInputStream extends InputStream {
-    private final InputStream mIn;
-    private boolean mPeeked;
-    private int mPeekedByte;
-
-    public PeekableInputStream(InputStream in) {
-        this.mIn = in;
-    }
-
-    @Override
-    public int read() throws IOException {
-        if (!mPeeked) {
-            return mIn.read();
-        } else {
-            mPeeked = false;
-            return mPeekedByte;
-        }
-    }
-
-    public int peek() throws IOException {
-        if (!mPeeked) {
-            mPeekedByte = read();
-            mPeeked = true;
-        }
-        return mPeekedByte;
-    }
-
-    @Override
-    public int read(byte[] b, int offset, int length) throws IOException {
-        if (!mPeeked) {
-            return mIn.read(b, offset, length);
-        } else {
-            b[0] = (byte)mPeekedByte;
-            mPeeked = false;
-            int r = mIn.read(b, offset + 1, length - 1);
-            if (r == -1) {
-                return 1;
-            } else {
-                return r + 1;
-            }
-        }
-    }
-
-    @Override
-    public int read(byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-
-    @Override
-    public String toString() {
-        return String.format("PeekableInputStream(in=%s, peeked=%b, peekedByte=%d)",
-                mIn.toString(), mPeeked, mPeekedByte);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/TempDirectory.java b/src/com/android/phone/common/mail/TempDirectory.java
deleted file mode 100644
index 8fa0e44..0000000
--- a/src/com/android/phone/common/mail/TempDirectory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail;
-
-import android.content.Context;
-
-import java.io.File;
-
-/**
- * TempDirectory caches the directory used for caching file.  It is set up during application
- * initialization.
- */
-public class TempDirectory {
-    private static File sTempDirectory = null;
-
-    public static void setTempDirectory(Context context) {
-        sTempDirectory = context.getCacheDir();
-    }
-
-    public static File getTempDirectory() {
-        if (sTempDirectory == null) {
-            throw new RuntimeException(
-                    "TempDirectory not set.  " +
-                    "If in a unit test, call Email.setTempDirectory(context) in setUp().");
-        }
-        return sTempDirectory;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java b/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java
deleted file mode 100644
index e2bdd89..0000000
--- a/src/com/android/phone/common/mail/internet/BinaryTempFileBody.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.TempDirectory;
-
-import org.apache.commons.io.IOUtils;
-
-import android.util.Base64;
-import android.util.Base64OutputStream;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * A Body that is backed by a temp file. The Body exposes a getOutputStream method that allows
- * the user to write to the temp file. After the write the body is available via getInputStream
- * and writeTo one time. After writeTo is called, or the InputStream returned from
- * getInputStream is closed the file is deleted and the Body should be considered disposed of.
- */
-public class BinaryTempFileBody implements Body {
-    private File mFile;
-
-    /**
-     * An alternate way to put data into a BinaryTempFileBody is to simply supply an already-
-     * created file.  Note that this file will be deleted after it is read.
-     * @param filePath The file containing the data to be stored on disk temporarily
-     */
-    public void setFile(String filePath) {
-        mFile = new File(filePath);
-    }
-
-    public OutputStream getOutputStream() throws IOException {
-        mFile = File.createTempFile("body", null, TempDirectory.getTempDirectory());
-        mFile.deleteOnExit();
-        return new FileOutputStream(mFile);
-    }
-
-    @Override
-    public InputStream getInputStream() throws MessagingException {
-        try {
-            return new BinaryTempFileBodyInputStream(new FileInputStream(mFile));
-        }
-        catch (IOException ioe) {
-            throw new MessagingException("Unable to open body", ioe);
-        }
-    }
-
-    @Override
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        InputStream in = getInputStream();
-        Base64OutputStream base64Out = new Base64OutputStream(
-            out, Base64.CRLF | Base64.NO_CLOSE);
-        IOUtils.copy(in, base64Out);
-        base64Out.close();
-        mFile.delete();
-        in.close();
-    }
-
-    class BinaryTempFileBodyInputStream extends FilterInputStream {
-        public BinaryTempFileBodyInputStream(InputStream in) {
-            super(in);
-        }
-
-        @Override
-        public void close() throws IOException {
-            super.close();
-            mFile.delete();
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/MimeBodyPart.java b/src/com/android/phone/common/mail/internet/MimeBodyPart.java
deleted file mode 100644
index 286a4f2..0000000
--- a/src/com/android/phone/common/mail/internet/MimeBodyPart.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.BodyPart;
-import com.android.phone.common.mail.MessagingException;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.regex.Pattern;
-
-/**
- * TODO this is a close approximation of Message, need to update along with
- * Message.
- */
-public class MimeBodyPart extends BodyPart {
-    protected MimeHeader mHeader = new MimeHeader();
-    protected MimeHeader mExtendedHeader;
-    protected Body mBody;
-    protected int mSize;
-
-    // regex that matches content id surrounded by "<>" optionally.
-    private static final Pattern REMOVE_OPTIONAL_BRACKETS = Pattern.compile("^<?([^>]+)>?$");
-    // regex that matches end of line.
-    private static final Pattern END_OF_LINE = Pattern.compile("\r?\n");
-
-    public MimeBodyPart() throws MessagingException {
-        this(null);
-    }
-
-    public MimeBodyPart(Body body) throws MessagingException {
-        this(body, null);
-    }
-
-    public MimeBodyPart(Body body, String mimeType) throws MessagingException {
-        if (mimeType != null) {
-            setHeader(MimeHeader.HEADER_CONTENT_TYPE, mimeType);
-        }
-        setBody(body);
-    }
-
-    protected String getFirstHeader(String name) throws MessagingException {
-        return mHeader.getFirstHeader(name);
-    }
-
-    @Override
-    public void addHeader(String name, String value) throws MessagingException {
-        mHeader.addHeader(name, value);
-    }
-
-    @Override
-    public void setHeader(String name, String value) throws MessagingException {
-        mHeader.setHeader(name, value);
-    }
-
-    @Override
-    public String[] getHeader(String name) throws MessagingException {
-        return mHeader.getHeader(name);
-    }
-
-    @Override
-    public void removeHeader(String name) throws MessagingException {
-        mHeader.removeHeader(name);
-    }
-
-    @Override
-    public Body getBody() throws MessagingException {
-        return mBody;
-    }
-
-    @Override
-    public void setBody(Body body) throws MessagingException {
-        this.mBody = body;
-        if (body instanceof com.android.phone.common.mail.Multipart) {
-            com.android.phone.common.mail.Multipart multipart =
-                ((com.android.phone.common.mail.Multipart)body);
-            multipart.setParent(this);
-            setHeader(MimeHeader.HEADER_CONTENT_TYPE, multipart.getContentType());
-        }
-        else if (body instanceof TextBody) {
-            String contentType = String.format("%s;\n charset=utf-8", getMimeType());
-            String name = MimeUtility.getHeaderParameter(getContentType(), "name");
-            if (name != null) {
-                contentType += String.format(";\n name=\"%s\"", name);
-            }
-            setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType);
-            setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, "base64");
-        }
-    }
-
-    @Override
-    public String getContentType() throws MessagingException {
-        String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
-        if (contentType == null) {
-            return "text/plain";
-        } else {
-            return contentType;
-        }
-    }
-
-    @Override
-    public String getDisposition() throws MessagingException {
-        String contentDisposition = getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
-        if (contentDisposition == null) {
-            return null;
-        } else {
-            return contentDisposition;
-        }
-    }
-
-    @Override
-    public String getContentId() throws MessagingException {
-        String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
-        if (contentId == null) {
-            return null;
-        } else {
-            // remove optionally surrounding brackets.
-            return REMOVE_OPTIONAL_BRACKETS.matcher(contentId).replaceAll("$1");
-        }
-    }
-
-    @Override
-    public String getMimeType() throws MessagingException {
-        return MimeUtility.getHeaderParameter(getContentType(), null);
-    }
-
-    @Override
-    public boolean isMimeType(String mimeType) throws MessagingException {
-        return getMimeType().equals(mimeType);
-    }
-
-    public void setSize(int size) {
-        this.mSize = size;
-    }
-
-    @Override
-    public int getSize() throws MessagingException {
-        return mSize;
-    }
-
-    /**
-     * Set extended header
-     *
-     * @param name Extended header name
-     * @param value header value - flattened by removing CR-NL if any
-     * remove header if value is null
-     * @throws MessagingException
-     */
-    @Override
-    public void setExtendedHeader(String name, String value) throws MessagingException {
-        if (value == null) {
-            if (mExtendedHeader != null) {
-                mExtendedHeader.removeHeader(name);
-            }
-            return;
-        }
-        if (mExtendedHeader == null) {
-            mExtendedHeader = new MimeHeader();
-        }
-        mExtendedHeader.setHeader(name, END_OF_LINE.matcher(value).replaceAll(""));
-    }
-
-    /**
-     * Get extended header
-     *
-     * @param name Extended header name
-     * @return header value - null if header does not exist
-     * @throws MessagingException
-     */
-    @Override
-    public String getExtendedHeader(String name) throws MessagingException {
-        if (mExtendedHeader == null) {
-            return null;
-        }
-        return mExtendedHeader.getFirstHeader(name);
-    }
-
-    /**
-     * Write the MimeMessage out in MIME format.
-     */
-    @Override
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
-        mHeader.writeTo(out);
-        writer.write("\r\n");
-        writer.flush();
-        if (mBody != null) {
-            mBody.writeTo(out);
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/MimeHeader.java b/src/com/android/phone/common/mail/internet/MimeHeader.java
deleted file mode 100644
index 7e6a07f..0000000
--- a/src/com/android/phone/common/mail/internet/MimeHeader.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import com.android.phone.common.mail.MessagingException;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.util.ArrayList;
-
-public class MimeHeader {
-    /**
-     * Application specific header that contains Store specific information about an attachment.
-     * In IMAP this contains the IMAP BODYSTRUCTURE part id so that the ImapStore can later
-     * retrieve the attachment at will from the server.
-     * The info is recorded from this header on LocalStore.appendMessage and is put back
-     * into the MIME data by LocalStore.fetch.
-     */
-    public static final String HEADER_ANDROID_ATTACHMENT_STORE_DATA = "X-Android-Attachment-StoreData";
-
-    public static final String HEADER_CONTENT_TYPE = "Content-Type";
-    public static final String HEADER_CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
-    public static final String HEADER_CONTENT_DISPOSITION = "Content-Disposition";
-    public static final String HEADER_CONTENT_ID = "Content-ID";
-
-    /**
-     * Fields that should be omitted when writing the header using writeTo()
-     */
-    private static final String[] WRITE_OMIT_FIELDS = {
-//        HEADER_ANDROID_ATTACHMENT_DOWNLOADED,
-//        HEADER_ANDROID_ATTACHMENT_ID,
-        HEADER_ANDROID_ATTACHMENT_STORE_DATA
-    };
-
-    protected final ArrayList<Field> mFields = new ArrayList<Field>();
-
-    public void clear() {
-        mFields.clear();
-    }
-
-    public String getFirstHeader(String name) throws MessagingException {
-        String[] header = getHeader(name);
-        if (header == null) {
-            return null;
-        }
-        return header[0];
-    }
-
-    public void addHeader(String name, String value) throws MessagingException {
-        mFields.add(new Field(name, value));
-    }
-
-    public void setHeader(String name, String value) throws MessagingException {
-        if (name == null || value == null) {
-            return;
-        }
-        removeHeader(name);
-        addHeader(name, value);
-    }
-
-    public String[] getHeader(String name) throws MessagingException {
-        ArrayList<String> values = new ArrayList<String>();
-        for (Field field : mFields) {
-            if (field.name.equalsIgnoreCase(name)) {
-                values.add(field.value);
-            }
-        }
-        if (values.size() == 0) {
-            return null;
-        }
-        return values.toArray(new String[] {});
-    }
-
-    public void removeHeader(String name) throws MessagingException {
-        ArrayList<Field> removeFields = new ArrayList<Field>();
-        for (Field field : mFields) {
-            if (field.name.equalsIgnoreCase(name)) {
-                removeFields.add(field);
-            }
-        }
-        mFields.removeAll(removeFields);
-    }
-
-    /**
-     * Write header into String
-     *
-     * @return CR-NL separated header string except the headers in writeOmitFields
-     * null if header is empty
-     */
-    public String writeToString() {
-        if (mFields.size() == 0) {
-            return null;
-        }
-        StringBuilder builder = new StringBuilder();
-        for (Field field : mFields) {
-            if (!arrayContains(WRITE_OMIT_FIELDS, field.name)) {
-                builder.append(field.name + ": " + field.value + "\r\n");
-            }
-        }
-        return builder.toString();
-    }
-
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
-        for (Field field : mFields) {
-            if (!arrayContains(WRITE_OMIT_FIELDS, field.name)) {
-                writer.write(field.name + ": " + field.value + "\r\n");
-            }
-        }
-        writer.flush();
-    }
-
-    private static class Field {
-        final String name;
-        final String value;
-
-        public Field(String name, String value) {
-            this.name = name;
-            this.value = value;
-        }
-
-        @Override
-        public String toString() {
-            return name + "=" + value;
-        }
-    }
-
-    @Override
-    public String toString() {
-        return (mFields == null) ? null : mFields.toString();
-    }
-
-    public final static boolean arrayContains(Object[] a, Object o) {
-        int index = arrayIndex(a, o);
-        return (index >= 0);
-    }
-
-    public final static int arrayIndex(Object[] a, Object o) {
-        for (int i = 0, count = a.length; i < count; i++) {
-            if (a[i].equals(o)) {
-                return i;
-            }
-        }
-        return -1;
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/MimeMessage.java b/src/com/android/phone/common/mail/internet/MimeMessage.java
deleted file mode 100644
index f4c6c88..0000000
--- a/src/com/android/phone/common/mail/internet/MimeMessage.java
+++ /dev/null
@@ -1,675 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import com.android.phone.common.mail.Address;
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.BodyPart;
-import com.android.phone.common.mail.Message;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.Multipart;
-import com.android.phone.common.mail.Part;
-import com.android.phone.common.mail.utils.LogUtils;
-
-import org.apache.james.mime4j.BodyDescriptor;
-import org.apache.james.mime4j.ContentHandler;
-import org.apache.james.mime4j.EOLConvertingInputStream;
-import org.apache.james.mime4j.MimeStreamParser;
-import org.apache.james.mime4j.field.DateTimeField;
-import org.apache.james.mime4j.field.Field;
-
-import android.text.TextUtils;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Stack;
-import java.util.regex.Pattern;
-
-/**
- * An implementation of Message that stores all of its metadata in RFC 822 and
- * RFC 2045 style headers.
- *
- * NOTE:  Automatic generation of a local message-id is becoming unwieldy and should be removed.
- * It would be better to simply do it explicitly on local creation of new outgoing messages.
- */
-public class MimeMessage extends Message {
-    private MimeHeader mHeader;
-    private MimeHeader mExtendedHeader;
-
-    // NOTE:  The fields here are transcribed out of headers, and values stored here will supersede
-    // the values found in the headers.  Use caution to prevent any out-of-phase errors.  In
-    // particular, any adds/changes/deletes here must be echoed by changes in the parse() function.
-    private Address[] mFrom;
-    private Address[] mTo;
-    private Address[] mCc;
-    private Address[] mBcc;
-    private Address[] mReplyTo;
-    private Date mSentDate;
-    private Body mBody;
-    protected int mSize;
-    private boolean mInhibitLocalMessageId = false;
-    private boolean mComplete = true;
-
-    // Shared random source for generating local message-id values
-    private static final java.util.Random sRandom = new java.util.Random();
-
-    // In MIME, en_US-like date format should be used. In other words "MMM" should be encoded to
-    // "Jan", not the other localized format like "Ene" (meaning January in locale es).
-    // This conversion is used when generating outgoing MIME messages. Incoming MIME date
-    // headers are parsed by org.apache.james.mime4j.field.DateTimeField which does not have any
-    // localization code.
-    private static final SimpleDateFormat DATE_FORMAT =
-        new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.US);
-
-    // regex that matches content id surrounded by "<>" optionally.
-    private static final Pattern REMOVE_OPTIONAL_BRACKETS = Pattern.compile("^<?([^>]+)>?$");
-    // regex that matches end of line.
-    private static final Pattern END_OF_LINE = Pattern.compile("\r?\n");
-
-    public MimeMessage() {
-        mHeader = null;
-    }
-
-    /**
-     * Generate a local message id.  This is only used when none has been assigned, and is
-     * installed lazily.  Any remote (typically server-assigned) message id takes precedence.
-     * @return a long, locally-generated message-ID value
-     */
-    private static String generateMessageId() {
-        final StringBuilder sb = new StringBuilder();
-        sb.append("<");
-        for (int i = 0; i < 24; i++) {
-            // We'll use a 5-bit range (0..31)
-            final int value = sRandom.nextInt() & 31;
-            final char c = "0123456789abcdefghijklmnopqrstuv".charAt(value);
-            sb.append(c);
-        }
-        sb.append(".");
-        sb.append(Long.toString(System.currentTimeMillis()));
-        sb.append("@email.android.com>");
-        return sb.toString();
-    }
-
-    /**
-     * Parse the given InputStream using Apache Mime4J to build a MimeMessage.
-     *
-     * @param in InputStream providing message content
-     * @throws IOException
-     * @throws MessagingException
-     */
-    public MimeMessage(InputStream in) throws IOException, MessagingException {
-        parse(in);
-    }
-
-    private MimeStreamParser init() {
-        // Before parsing the input stream, clear all local fields that may be superceded by
-        // the new incoming message.
-        getMimeHeaders().clear();
-        mInhibitLocalMessageId = true;
-        mFrom = null;
-        mTo = null;
-        mCc = null;
-        mBcc = null;
-        mReplyTo = null;
-        mSentDate = null;
-        mBody = null;
-
-        final MimeStreamParser parser = new MimeStreamParser();
-        parser.setContentHandler(new MimeMessageBuilder());
-        return parser;
-    }
-
-    protected void parse(InputStream in) throws IOException, MessagingException {
-        final MimeStreamParser parser = init();
-        parser.parse(new EOLConvertingInputStream(in));
-        mComplete = !parser.getPrematureEof();
-    }
-
-    public void parse(InputStream in, EOLConvertingInputStream.Callback callback)
-            throws IOException, MessagingException {
-        final MimeStreamParser parser = init();
-        parser.parse(new EOLConvertingInputStream(in, getSize(), callback));
-        mComplete = !parser.getPrematureEof();
-    }
-
-    /**
-     * Return the internal mHeader value, with very lazy initialization.
-     * The goal is to save memory by not creating the headers until needed.
-     */
-    private MimeHeader getMimeHeaders() {
-        if (mHeader == null) {
-            mHeader = new MimeHeader();
-        }
-        return mHeader;
-    }
-
-    @Override
-    public Date getReceivedDate() throws MessagingException {
-        return null;
-    }
-
-    @Override
-    public Date getSentDate() throws MessagingException {
-        if (mSentDate == null) {
-            try {
-                DateTimeField field = (DateTimeField)Field.parse("Date: "
-                        + MimeUtility.unfoldAndDecode(getFirstHeader("Date")));
-                mSentDate = field.getDate();
-                // TODO: We should make it more clear what exceptions can be thrown here,
-                // and whether they reflect a normal or error condition.
-            } catch (Exception e) {
-                LogUtils.v(LogUtils.TAG, "Message missing Date header");
-            }
-        }
-        if (mSentDate == null) {
-            // If we still don't have a date, fall back to "Delivery-date"
-            try {
-                DateTimeField field = (DateTimeField)Field.parse("Date: "
-                        + MimeUtility.unfoldAndDecode(getFirstHeader("Delivery-date")));
-                mSentDate = field.getDate();
-                // TODO: We should make it more clear what exceptions can be thrown here,
-                // and whether they reflect a normal or error condition.
-            } catch (Exception e) {
-                LogUtils.v(LogUtils.TAG, "Message also missing Delivery-Date header");
-            }
-        }
-        return mSentDate;
-    }
-
-    @Override
-    public void setSentDate(Date sentDate) throws MessagingException {
-        setHeader("Date", DATE_FORMAT.format(sentDate));
-        this.mSentDate = sentDate;
-    }
-
-    @Override
-    public String getContentType() throws MessagingException {
-        final String contentType = getFirstHeader(MimeHeader.HEADER_CONTENT_TYPE);
-        if (contentType == null) {
-            return "text/plain";
-        } else {
-            return contentType;
-        }
-    }
-
-    @Override
-    public String getDisposition() throws MessagingException {
-        return getFirstHeader(MimeHeader.HEADER_CONTENT_DISPOSITION);
-    }
-
-    @Override
-    public String getContentId() throws MessagingException {
-        final String contentId = getFirstHeader(MimeHeader.HEADER_CONTENT_ID);
-        if (contentId == null) {
-            return null;
-        } else {
-            // remove optionally surrounding brackets.
-            return REMOVE_OPTIONAL_BRACKETS.matcher(contentId).replaceAll("$1");
-        }
-    }
-
-    public boolean isComplete() {
-        return mComplete;
-    }
-
-    @Override
-    public String getMimeType() throws MessagingException {
-        return MimeUtility.getHeaderParameter(getContentType(), null);
-    }
-
-    @Override
-    public int getSize() throws MessagingException {
-        return mSize;
-    }
-
-    /**
-     * Returns a list of the given recipient type from this message. If no addresses are
-     * found the method returns an empty array.
-     */
-    @Override
-    public Address[] getRecipients(String type) throws MessagingException {
-        if (type == RECIPIENT_TYPE_TO) {
-            if (mTo == null) {
-                mTo = Address.parse(MimeUtility.unfold(getFirstHeader("To")));
-            }
-            return mTo;
-        } else if (type == RECIPIENT_TYPE_CC) {
-            if (mCc == null) {
-                mCc = Address.parse(MimeUtility.unfold(getFirstHeader("CC")));
-            }
-            return mCc;
-        } else if (type == RECIPIENT_TYPE_BCC) {
-            if (mBcc == null) {
-                mBcc = Address.parse(MimeUtility.unfold(getFirstHeader("BCC")));
-            }
-            return mBcc;
-        } else {
-            throw new MessagingException("Unrecognized recipient type.");
-        }
-    }
-
-    @Override
-    public void setRecipients(String type, Address[] addresses) throws MessagingException {
-        final int TO_LENGTH = 4;  // "To: "
-        final int CC_LENGTH = 4;  // "Cc: "
-        final int BCC_LENGTH = 5; // "Bcc: "
-        if (type == RECIPIENT_TYPE_TO) {
-            if (addresses == null || addresses.length == 0) {
-                removeHeader("To");
-                this.mTo = null;
-            } else {
-                setHeader("To", MimeUtility.fold(Address.toHeader(addresses), TO_LENGTH));
-                this.mTo = addresses;
-            }
-        } else if (type == RECIPIENT_TYPE_CC) {
-            if (addresses == null || addresses.length == 0) {
-                removeHeader("CC");
-                this.mCc = null;
-            } else {
-                setHeader("CC", MimeUtility.fold(Address.toHeader(addresses), CC_LENGTH));
-                this.mCc = addresses;
-            }
-        } else if (type == RECIPIENT_TYPE_BCC) {
-            if (addresses == null || addresses.length == 0) {
-                removeHeader("BCC");
-                this.mBcc = null;
-            } else {
-                setHeader("BCC", MimeUtility.fold(Address.toHeader(addresses), BCC_LENGTH));
-                this.mBcc = addresses;
-            }
-        } else {
-            throw new MessagingException("Unrecognized recipient type.");
-        }
-    }
-
-    /**
-     * Returns the unfolded, decoded value of the Subject header.
-     */
-    @Override
-    public String getSubject() throws MessagingException {
-        return MimeUtility.unfoldAndDecode(getFirstHeader("Subject"));
-    }
-
-    @Override
-    public void setSubject(String subject) throws MessagingException {
-        final int HEADER_NAME_LENGTH = 9;     // "Subject: "
-        setHeader("Subject", MimeUtility.foldAndEncode2(subject, HEADER_NAME_LENGTH));
-    }
-
-    @Override
-    public Address[] getFrom() throws MessagingException {
-        if (mFrom == null) {
-            String list = MimeUtility.unfold(getFirstHeader("From"));
-            if (list == null || list.length() == 0) {
-                list = MimeUtility.unfold(getFirstHeader("Sender"));
-            }
-            mFrom = Address.parse(list);
-        }
-        return mFrom;
-    }
-
-    @Override
-    public void setFrom(Address from) throws MessagingException {
-        final int FROM_LENGTH = 6;  // "From: "
-        if (from != null) {
-            setHeader("From", MimeUtility.fold(from.toHeader(), FROM_LENGTH));
-            this.mFrom = new Address[] {
-                    from
-                };
-        } else {
-            this.mFrom = null;
-        }
-    }
-
-    @Override
-    public Address[] getReplyTo() throws MessagingException {
-        if (mReplyTo == null) {
-            mReplyTo = Address.parse(MimeUtility.unfold(getFirstHeader("Reply-to")));
-        }
-        return mReplyTo;
-    }
-
-    @Override
-    public void setReplyTo(Address[] replyTo) throws MessagingException {
-        final int REPLY_TO_LENGTH = 10;  // "Reply-to: "
-        if (replyTo == null || replyTo.length == 0) {
-            removeHeader("Reply-to");
-            mReplyTo = null;
-        } else {
-            setHeader("Reply-to", MimeUtility.fold(Address.toHeader(replyTo), REPLY_TO_LENGTH));
-            mReplyTo = replyTo;
-        }
-    }
-
-    /**
-     * Set the mime "Message-ID" header
-     * @param messageId the new Message-ID value
-     * @throws MessagingException
-     */
-    @Override
-    public void setMessageId(String messageId) throws MessagingException {
-        setHeader("Message-ID", messageId);
-    }
-
-    /**
-     * Get the mime "Message-ID" header.  This value will be preloaded with a locally-generated
-     * random ID, if the value has not previously been set.  Local generation can be inhibited/
-     * overridden by explicitly clearing the headers, removing the message-id header, etc.
-     * @return the Message-ID header string, or null if explicitly has been set to null
-     */
-    @Override
-    public String getMessageId() throws MessagingException {
-        String messageId = getFirstHeader("Message-ID");
-        if (messageId == null && !mInhibitLocalMessageId) {
-            messageId = generateMessageId();
-            setMessageId(messageId);
-        }
-        return messageId;
-    }
-
-    @Override
-    public void saveChanges() throws MessagingException {
-        throw new MessagingException("saveChanges not yet implemented");
-    }
-
-    @Override
-    public Body getBody() throws MessagingException {
-        return mBody;
-    }
-
-    @Override
-    public void setBody(Body body) throws MessagingException {
-        this.mBody = body;
-        if (body instanceof Multipart) {
-            final Multipart multipart = ((Multipart)body);
-            multipart.setParent(this);
-            setHeader(MimeHeader.HEADER_CONTENT_TYPE, multipart.getContentType());
-            setHeader("MIME-Version", "1.0");
-        }
-        else if (body instanceof TextBody) {
-            setHeader(MimeHeader.HEADER_CONTENT_TYPE, String.format("%s;\n charset=utf-8",
-                    getMimeType()));
-            setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING, "base64");
-        }
-    }
-
-    protected String getFirstHeader(String name) throws MessagingException {
-        return getMimeHeaders().getFirstHeader(name);
-    }
-
-    @Override
-    public void addHeader(String name, String value) throws MessagingException {
-        getMimeHeaders().addHeader(name, value);
-    }
-
-    @Override
-    public void setHeader(String name, String value) throws MessagingException {
-        getMimeHeaders().setHeader(name, value);
-    }
-
-    @Override
-    public String[] getHeader(String name) throws MessagingException {
-        return getMimeHeaders().getHeader(name);
-    }
-
-    @Override
-    public void removeHeader(String name) throws MessagingException {
-        getMimeHeaders().removeHeader(name);
-        if ("Message-ID".equalsIgnoreCase(name)) {
-            mInhibitLocalMessageId = true;
-        }
-    }
-
-    /**
-     * Set extended header
-     *
-     * @param name Extended header name
-     * @param value header value - flattened by removing CR-NL if any
-     * remove header if value is null
-     * @throws MessagingException
-     */
-    @Override
-    public void setExtendedHeader(String name, String value) throws MessagingException {
-        if (value == null) {
-            if (mExtendedHeader != null) {
-                mExtendedHeader.removeHeader(name);
-            }
-            return;
-        }
-        if (mExtendedHeader == null) {
-            mExtendedHeader = new MimeHeader();
-        }
-        mExtendedHeader.setHeader(name, END_OF_LINE.matcher(value).replaceAll(""));
-    }
-
-    /**
-     * Get extended header
-     *
-     * @param name Extended header name
-     * @return header value - null if header does not exist
-     * @throws MessagingException
-     */
-    @Override
-    public String getExtendedHeader(String name) throws MessagingException {
-        if (mExtendedHeader == null) {
-            return null;
-        }
-        return mExtendedHeader.getFirstHeader(name);
-    }
-
-    /**
-     * Set entire extended headers from String
-     *
-     * @param headers Extended header and its value - "CR-NL-separated pairs
-     * if null or empty, remove entire extended headers
-     * @throws MessagingException
-     */
-    public void setExtendedHeaders(String headers) throws MessagingException {
-        if (TextUtils.isEmpty(headers)) {
-            mExtendedHeader = null;
-        } else {
-            mExtendedHeader = new MimeHeader();
-            for (final String header : END_OF_LINE.split(headers)) {
-                final String[] tokens = header.split(":", 2);
-                if (tokens.length != 2) {
-                    throw new MessagingException("Illegal extended headers: " + headers);
-                }
-                mExtendedHeader.setHeader(tokens[0].trim(), tokens[1].trim());
-            }
-        }
-    }
-
-    /**
-     * Get entire extended headers as String
-     *
-     * @return "CR-NL-separated extended headers - null if extended header does not exist
-     */
-    public String getExtendedHeaders() {
-        if (mExtendedHeader != null) {
-            return mExtendedHeader.writeToString();
-        }
-        return null;
-    }
-
-    /**
-     * Write message header and body to output stream
-     *
-     * @param out Output steam to write message header and body.
-     */
-    @Override
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
-        // Force creation of local message-id
-        getMessageId();
-        getMimeHeaders().writeTo(out);
-        // mExtendedHeader will not be write out to external output stream,
-        // because it is intended to internal use.
-        writer.write("\r\n");
-        writer.flush();
-        if (mBody != null) {
-            mBody.writeTo(out);
-        }
-    }
-
-    @Override
-    public InputStream getInputStream() throws MessagingException {
-        return null;
-    }
-
-    class MimeMessageBuilder implements ContentHandler {
-        private final Stack<Object> stack = new Stack<Object>();
-
-        public MimeMessageBuilder() {
-        }
-
-        private void expect(Class<?> c) {
-            if (!c.isInstance(stack.peek())) {
-                throw new IllegalStateException("Internal stack error: " + "Expected '"
-                        + c.getName() + "' found '" + stack.peek().getClass().getName() + "'");
-            }
-        }
-
-        @Override
-        public void startMessage() {
-            if (stack.isEmpty()) {
-                stack.push(MimeMessage.this);
-            } else {
-                expect(Part.class);
-                try {
-                    final MimeMessage m = new MimeMessage();
-                    ((Part)stack.peek()).setBody(m);
-                    stack.push(m);
-                } catch (MessagingException me) {
-                    throw new Error(me);
-                }
-            }
-        }
-
-        @Override
-        public void endMessage() {
-            expect(MimeMessage.class);
-            stack.pop();
-        }
-
-        @Override
-        public void startHeader() {
-            expect(Part.class);
-        }
-
-        @Override
-        public void field(String fieldData) {
-            expect(Part.class);
-            try {
-                final String[] tokens = fieldData.split(":", 2);
-                ((Part)stack.peek()).addHeader(tokens[0], tokens[1].trim());
-            } catch (MessagingException me) {
-                throw new Error(me);
-            }
-        }
-
-        @Override
-        public void endHeader() {
-            expect(Part.class);
-        }
-
-        @Override
-        public void startMultipart(BodyDescriptor bd) {
-            expect(Part.class);
-
-            final Part e = (Part)stack.peek();
-            try {
-                final MimeMultipart multiPart = new MimeMultipart(e.getContentType());
-                e.setBody(multiPart);
-                stack.push(multiPart);
-            } catch (MessagingException me) {
-                throw new Error(me);
-            }
-        }
-
-        @Override
-        public void body(BodyDescriptor bd, InputStream in) throws IOException {
-            expect(Part.class);
-            final Body body = MimeUtility.decodeBody(in, bd.getTransferEncoding());
-            try {
-                ((Part)stack.peek()).setBody(body);
-            } catch (MessagingException me) {
-                throw new Error(me);
-            }
-        }
-
-        @Override
-        public void endMultipart() {
-            stack.pop();
-        }
-
-        @Override
-        public void startBodyPart() {
-            expect(MimeMultipart.class);
-
-            try {
-                final MimeBodyPart bodyPart = new MimeBodyPart();
-                ((MimeMultipart)stack.peek()).addBodyPart(bodyPart);
-                stack.push(bodyPart);
-            } catch (MessagingException me) {
-                throw new Error(me);
-            }
-        }
-
-        @Override
-        public void endBodyPart() {
-            expect(BodyPart.class);
-            stack.pop();
-        }
-
-        @Override
-        public void epilogue(InputStream is) throws IOException {
-            expect(MimeMultipart.class);
-            final StringBuilder sb = new StringBuilder();
-            int b;
-            while ((b = is.read()) != -1) {
-                sb.append((char)b);
-            }
-            // TODO: why is this commented out?
-            // ((Multipart) stack.peek()).setEpilogue(sb.toString());
-        }
-
-        @Override
-        public void preamble(InputStream is) throws IOException {
-            expect(MimeMultipart.class);
-            final StringBuilder sb = new StringBuilder();
-            int b;
-            while ((b = is.read()) != -1) {
-                sb.append((char)b);
-            }
-            try {
-                ((MimeMultipart)stack.peek()).setPreamble(sb.toString());
-            } catch (MessagingException me) {
-                throw new Error(me);
-            }
-        }
-
-        @Override
-        public void raw(InputStream is) throws IOException {
-            throw new UnsupportedOperationException("Not supported");
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/MimeMultipart.java b/src/com/android/phone/common/mail/internet/MimeMultipart.java
deleted file mode 100644
index 3e118e4..0000000
--- a/src/com/android/phone/common/mail/internet/MimeMultipart.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import com.android.phone.common.mail.BodyPart;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.Multipart;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-
-public class MimeMultipart extends Multipart {
-    protected String mPreamble;
-
-    protected String mContentType;
-
-    protected String mBoundary;
-
-    protected String mSubType;
-
-    public MimeMultipart() throws MessagingException {
-        mBoundary = generateBoundary();
-        setSubType("mixed");
-    }
-
-    public MimeMultipart(String contentType) throws MessagingException {
-        this.mContentType = contentType;
-        try {
-            mSubType = MimeUtility.getHeaderParameter(contentType, null).split("/")[1];
-            mBoundary = MimeUtility.getHeaderParameter(contentType, "boundary");
-            if (mBoundary == null) {
-                throw new MessagingException("MultiPart does not contain boundary: " + contentType);
-            }
-        } catch (Exception e) {
-            throw new MessagingException(
-                    "Invalid MultiPart Content-Type; must contain subtype and boundary. ("
-                            + contentType + ")", e);
-        }
-    }
-
-    public String generateBoundary() {
-        StringBuffer sb = new StringBuffer();
-        sb.append("----");
-        for (int i = 0; i < 30; i++) {
-            sb.append(Integer.toString((int)(Math.random() * 35), 36));
-        }
-        return sb.toString().toUpperCase();
-    }
-
-    public String getPreamble() throws MessagingException {
-        return mPreamble;
-    }
-
-    public void setPreamble(String preamble) throws MessagingException {
-        this.mPreamble = preamble;
-    }
-
-    @Override
-    public String getContentType() throws MessagingException {
-        return mContentType;
-    }
-
-    public void setSubType(String subType) throws MessagingException {
-        this.mSubType = subType;
-        mContentType = String.format("multipart/%s; boundary=\"%s\"", subType, mBoundary);
-    }
-
-    @Override
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out), 1024);
-
-        if (mPreamble != null) {
-            writer.write(mPreamble + "\r\n");
-        }
-
-        for (int i = 0, count = mParts.size(); i < count; i++) {
-            BodyPart bodyPart = mParts.get(i);
-            writer.write("--" + mBoundary + "\r\n");
-            writer.flush();
-            bodyPart.writeTo(out);
-            writer.write("\r\n");
-        }
-
-        writer.write("--" + mBoundary + "--\r\n");
-        writer.flush();
-    }
-
-    @Override
-    public InputStream getInputStream() throws MessagingException {
-        return null;
-    }
-
-    public String getSubTypeForTest() {
-        return mSubType;
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/MimeUtility.java b/src/com/android/phone/common/mail/internet/MimeUtility.java
deleted file mode 100644
index ba5036f..0000000
--- a/src/com/android/phone/common/mail/internet/MimeUtility.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import android.text.TextUtils;
-import android.util.Base64;
-import android.util.Base64DataException;
-import android.util.Base64InputStream;
-import android.util.Log;
-
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.BodyPart;
-import com.android.phone.common.mail.Message;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.Multipart;
-import com.android.phone.common.mail.Part;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.james.mime4j.codec.EncoderUtil;
-import org.apache.james.mime4j.decoder.DecoderUtil;
-import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
-import org.apache.james.mime4j.util.CharsetUtil;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class MimeUtility {
-    private static final String LOG_TAG = "Email";
-
-    public static final String MIME_TYPE_RFC822 = "message/rfc822";
-    private final static Pattern PATTERN_CR_OR_LF = Pattern.compile("\r|\n");
-
-    /**
-     * Replace sequences of CRLF+WSP with WSP.  Tries to preserve original string
-     * object whenever possible.
-     */
-    public static String unfold(String s) {
-        if (s == null) {
-            return null;
-        }
-        Matcher patternMatcher = PATTERN_CR_OR_LF.matcher(s);
-        if (patternMatcher.find()) {
-            patternMatcher.reset();
-            s = patternMatcher.replaceAll("");
-        }
-        return s;
-    }
-
-    public static String decode(String s) {
-        if (s == null) {
-            return null;
-        }
-        return DecoderUtil.decodeEncodedWords(s);
-    }
-
-    public static String unfoldAndDecode(String s) {
-        return decode(unfold(s));
-    }
-
-    // TODO implement proper foldAndEncode
-    // NOTE: When this really works, we *must* remove all calls to foldAndEncode2() to prevent
-    // duplication of encoding.
-    public static String foldAndEncode(String s) {
-        return s;
-    }
-
-    /**
-     * INTERIM version of foldAndEncode that will be used only by Subject: headers.
-     * This is safer than implementing foldAndEncode() (see above) and risking unknown damage
-     * to other headers.
-     *
-     * TODO: Copy this code to foldAndEncode(), get rid of this function, confirm all working OK.
-     *
-     * @param s original string to encode and fold
-     * @param usedCharacters number of characters already used up by header name
-
-     * @return the String ready to be transmitted
-     */
-    public static String foldAndEncode2(String s, int usedCharacters) {
-        // james.mime4j.codec.EncoderUtil.java
-        // encode:  encodeIfNecessary(text, usage, numUsedInHeaderName)
-        // Usage.TEXT_TOKENlooks like the right thing for subjects
-        // use WORD_ENTITY for address/names
-
-        String encoded = EncoderUtil.encodeIfNecessary(s, EncoderUtil.Usage.TEXT_TOKEN,
-                usedCharacters);
-
-        return fold(encoded, usedCharacters);
-    }
-
-    /**
-     * INTERIM:  From newer version of org.apache.james (but we don't want to import
-     * the entire MimeUtil class).
-     *
-     * Splits the specified string into a multiple-line representation with
-     * lines no longer than 76 characters (because the line might contain
-     * encoded words; see <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC
-     * 2047</a> section 2). If the string contains non-whitespace sequences
-     * longer than 76 characters a line break is inserted at the whitespace
-     * character following the sequence resulting in a line longer than 76
-     * characters.
-     *
-     * @param s
-     *            string to split.
-     * @param usedCharacters
-     *            number of characters already used up. Usually the number of
-     *            characters for header field name plus colon and one space.
-     * @return a multiple-line representation of the given string.
-     */
-    public static String fold(String s, int usedCharacters) {
-        final int maxCharacters = 76;
-
-        final int length = s.length();
-        if (usedCharacters + length <= maxCharacters)
-            return s;
-
-        StringBuilder sb = new StringBuilder();
-
-        int lastLineBreak = -usedCharacters;
-        int wspIdx = indexOfWsp(s, 0);
-        while (true) {
-            if (wspIdx == length) {
-                sb.append(s.substring(Math.max(0, lastLineBreak)));
-                return sb.toString();
-            }
-
-            int nextWspIdx = indexOfWsp(s, wspIdx + 1);
-
-            if (nextWspIdx - lastLineBreak > maxCharacters) {
-                sb.append(s.substring(Math.max(0, lastLineBreak), wspIdx));
-                sb.append("\r\n");
-                lastLineBreak = wspIdx;
-            }
-
-            wspIdx = nextWspIdx;
-        }
-    }
-
-    /**
-     * INTERIM:  From newer version of org.apache.james (but we don't want to import
-     * the entire MimeUtil class).
-     *
-     * Search for whitespace.
-     */
-    private static int indexOfWsp(String s, int fromIndex) {
-        final int len = s.length();
-        for (int index = fromIndex; index < len; index++) {
-            char c = s.charAt(index);
-            if (c == ' ' || c == '\t')
-                return index;
-        }
-        return len;
-    }
-
-    /**
-     * Returns the named parameter of a header field. If name is null the first
-     * parameter is returned, or if there are no additional parameters in the
-     * field the entire field is returned. Otherwise the named parameter is
-     * searched for in a case insensitive fashion and returned. If the parameter
-     * cannot be found the method returns null.
-     *
-     * TODO: quite inefficient with the inner trimming & splitting.
-     * TODO: Also has a latent bug: uses "startsWith" to match the name, which can false-positive.
-     * TODO: The doc says that for a null name you get the first param, but you get the header.
-     *    Should probably just fix the doc, but if other code assumes that behavior, fix the code.
-     * TODO: Need to decode %-escaped strings, as in: filename="ab%22d".
-     *       ('+' -> ' ' conversion too? check RFC)
-     *
-     * @param header
-     * @param name
-     * @return the entire header (if name=null), the found parameter, or null
-     */
-    public static String getHeaderParameter(String header, String name) {
-        if (header == null) {
-            return null;
-        }
-        String[] parts = unfold(header).split(";");
-        if (name == null) {
-            return parts[0].trim();
-        }
-        String lowerCaseName = name.toLowerCase();
-        for (String part : parts) {
-            if (part.trim().toLowerCase().startsWith(lowerCaseName)) {
-                String[] parameterParts = part.split("=", 2);
-                if (parameterParts.length < 2) {
-                    return null;
-                }
-                String parameter = parameterParts[1].trim();
-                if (parameter.startsWith("\"") && parameter.endsWith("\"")) {
-                    return parameter.substring(1, parameter.length() - 1);
-                } else {
-                    return parameter;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Reads the Part's body and returns a String based on any charset conversion that needed
-     * to be done.
-     * @param part The part containing a body
-     * @return a String containing the converted text in the body, or null if there was no text
-     * or an error during conversion.
-     */
-    public static String getTextFromPart(Part part) {
-        try {
-            if (part != null && part.getBody() != null) {
-                InputStream in = part.getBody().getInputStream();
-                String mimeType = part.getMimeType();
-                if (mimeType != null && MimeUtility.mimeTypeMatches(mimeType, "text/*")) {
-                    /*
-                     * Now we read the part into a buffer for further processing. Because
-                     * the stream is now wrapped we'll remove any transfer encoding at this point.
-                     */
-                    ByteArrayOutputStream out = new ByteArrayOutputStream();
-                    IOUtils.copy(in, out);
-                    in.close();
-                    in = null;      // we want all of our memory back, and close might not release
-
-                    /*
-                     * We've got a text part, so let's see if it needs to be processed further.
-                     */
-                    String charset = getHeaderParameter(part.getContentType(), "charset");
-                    if (charset != null) {
-                        /*
-                         * See if there is conversion from the MIME charset to the Java one.
-                         */
-                        charset = CharsetUtil.toJavaCharset(charset);
-                    }
-                    /*
-                     * No encoding, so use us-ascii, which is the standard.
-                     */
-                    if (charset == null) {
-                        charset = "ASCII";
-                    }
-                    /*
-                     * Convert and return as new String
-                     */
-                    String result = out.toString(charset);
-                    out.close();
-                    return result;
-                }
-            }
-
-        }
-        catch (OutOfMemoryError oom) {
-            /*
-             * If we are not able to process the body there's nothing we can do about it. Return
-             * null and let the upper layers handle the missing content.
-             */
-            Log.e(LOG_TAG, "Unable to getTextFromPart " + oom.toString());
-        }
-        catch (Exception e) {
-            /*
-             * If we are not able to process the body there's nothing we can do about it. Return
-             * null and let the upper layers handle the missing content.
-             */
-            Log.e(LOG_TAG, "Unable to getTextFromPart " + e.toString());
-        }
-        return null;
-    }
-
-    /**
-     * Returns true if the given mimeType matches the matchAgainst specification.  The comparison
-     * ignores case and the matchAgainst string may include "*" for a wildcard (e.g. "image/*").
-     *
-     * @param mimeType A MIME type to check.
-     * @param matchAgainst A MIME type to check against. May include wildcards.
-     * @return true if the mimeType matches
-     */
-    public static boolean mimeTypeMatches(String mimeType, String matchAgainst) {
-        Pattern p = Pattern.compile(matchAgainst.replaceAll("\\*", "\\.\\*"),
-                Pattern.CASE_INSENSITIVE);
-        return p.matcher(mimeType).matches();
-    }
-
-    /**
-     * Returns true if the given mimeType matches any of the matchAgainst specifications.  The
-     * comparison ignores case and the matchAgainst strings may include "*" for a wildcard
-     * (e.g. "image/*").
-     *
-     * @param mimeType A MIME type to check.
-     * @param matchAgainst An array of MIME types to check against. May include wildcards.
-     * @return true if the mimeType matches any of the matchAgainst strings
-     */
-    public static boolean mimeTypeMatches(String mimeType, String[] matchAgainst) {
-        for (String matchType : matchAgainst) {
-            if (mimeTypeMatches(mimeType, matchType)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Given an input stream and a transfer encoding, return a wrapped input stream for that
-     * encoding (or the original if none is required)
-     * @param in the input stream
-     * @param contentTransferEncoding the content transfer encoding
-     * @return a properly wrapped stream
-     */
-    public static InputStream getInputStreamForContentTransferEncoding(InputStream in,
-            String contentTransferEncoding) {
-        if (contentTransferEncoding != null) {
-            contentTransferEncoding =
-                MimeUtility.getHeaderParameter(contentTransferEncoding, null);
-            if ("quoted-printable".equalsIgnoreCase(contentTransferEncoding)) {
-                in = new QuotedPrintableInputStream(in);
-            }
-            else if ("base64".equalsIgnoreCase(contentTransferEncoding)) {
-                in = new Base64InputStream(in, Base64.DEFAULT);
-            }
-        }
-        return in;
-    }
-
-    /**
-     * Removes any content transfer encoding from the stream and returns a Body.
-     */
-    public static Body decodeBody(InputStream in, String contentTransferEncoding)
-            throws IOException {
-        /*
-         * We'll remove any transfer encoding by wrapping the stream.
-         */
-        in = getInputStreamForContentTransferEncoding(in, contentTransferEncoding);
-        BinaryTempFileBody tempBody = new BinaryTempFileBody();
-        OutputStream out = tempBody.getOutputStream();
-        try {
-            IOUtils.copy(in, out);
-        } catch (Base64DataException bde) {
-            // TODO Need to fix this somehow
-            //String warning = "\n\n" + Email.getMessageDecodeErrorString();
-            //out.write(warning.getBytes());
-        } finally {
-            out.close();
-        }
-        return tempBody;
-    }
-
-    /**
-     * Recursively scan a Part (usually a Message) and sort out which of its children will be
-     * "viewable" and which will be attachments.
-     *
-     * @param part The part to be broken down
-     * @param viewables This arraylist will be populated with all parts that appear to be
-     * the "message" (e.g. text/plain & text/html)
-     * @param attachments This arraylist will be populated with all parts that appear to be
-     * attachments (including inlines)
-     * @throws MessagingException
-     */
-    public static void collectParts(Part part, ArrayList<Part> viewables,
-            ArrayList<Part> attachments) throws MessagingException {
-        String disposition = part.getDisposition();
-        String dispositionType = MimeUtility.getHeaderParameter(disposition, null);
-        // If a disposition is not specified, default to "inline"
-        boolean inline =
-                TextUtils.isEmpty(dispositionType) || "inline".equalsIgnoreCase(dispositionType);
-        // The lower-case mime type
-        String mimeType = part.getMimeType().toLowerCase();
-
-        if (part.getBody() instanceof Multipart) {
-            // If the part is Multipart but not alternative it's either mixed or
-            // something we don't know about, which means we treat it as mixed
-            // per the spec. We just process its pieces recursively.
-            MimeMultipart mp = (MimeMultipart)part.getBody();
-            boolean foundHtml = false;
-            if (mp.getSubTypeForTest().equals("alternative")) {
-                for (int i = 0; i < mp.getCount(); i++) {
-                    if (mp.getBodyPart(i).isMimeType("text/html")) {
-                        foundHtml = true;
-                        break;
-                    }
-                }
-            }
-            for (int i = 0; i < mp.getCount(); i++) {
-                // See if we have text and html
-                BodyPart bp = mp.getBodyPart(i);
-                // If there's html, don't bother loading text
-                if (foundHtml && bp.isMimeType("text/plain")) {
-                    continue;
-                }
-                collectParts(bp, viewables, attachments);
-            }
-        } else if (part.getBody() instanceof Message) {
-            // If the part is an embedded message we just continue to process
-            // it, pulling any viewables or attachments into the running list.
-            Message message = (Message)part.getBody();
-            collectParts(message, viewables, attachments);
-        } else if (inline && (mimeType.startsWith("text") || (mimeType.startsWith("image")))) {
-            // We'll treat text and images as viewables
-            viewables.add(part);
-        } else {
-            // Everything else is an attachment.
-            attachments.add(part);
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/internet/TextBody.java b/src/com/android/phone/common/mail/internet/TextBody.java
deleted file mode 100644
index 77bbd65..0000000
--- a/src/com/android/phone/common/mail/internet/TextBody.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.internet;
-
-import android.util.Base64;
-
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.MessagingException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-
-public class TextBody implements Body {
-    String mBody;
-
-    public TextBody(String body) {
-        this.mBody = body;
-    }
-
-    @Override
-    public void writeTo(OutputStream out) throws IOException, MessagingException {
-        byte[] bytes = mBody.getBytes("UTF-8");
-        out.write(Base64.encode(bytes, Base64.CRLF));
-    }
-
-    /**
-     * Get the text of the body in it's unencoded format.
-     * @return
-     */
-    public String getText() {
-        return mBody;
-    }
-
-    /**
-     * Returns an InputStream that reads this body's text in UTF-8 format.
-     */
-    @Override
-    public InputStream getInputStream() throws MessagingException {
-        try {
-            byte[] b = mBody.getBytes("UTF-8");
-            return new ByteArrayInputStream(b);
-        }
-        catch (UnsupportedEncodingException usee) {
-            return null;
-        }
-    }
-}
diff --git a/src/com/android/phone/common/mail/store/ImapConnection.java b/src/com/android/phone/common/mail/store/ImapConnection.java
deleted file mode 100644
index ace7029..0000000
--- a/src/com/android/phone/common/mail/store/ImapConnection.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.store;
-
-import android.text.TextUtils;
-
-import com.android.phone.common.mail.AuthenticationFailedException;
-import com.android.phone.common.mail.CertificateValidationException;
-import com.android.phone.common.mail.MailTransport;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.store.imap.ImapConstants;
-import com.android.phone.common.mail.store.imap.ImapResponse;
-import com.android.phone.common.mail.store.imap.ImapResponseParser;
-import com.android.phone.common.mail.store.imap.ImapUtility;
-import com.android.phone.common.mail.utils.LogUtils;
-import com.android.phone.common.mail.store.ImapStore.ImapException;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.net.ssl.SSLException;
-
-/**
- * A cacheable class that stores the details for a single IMAP connection.
- */
-public class ImapConnection {
-    private final String TAG = "ImapConnection";
-
-    private String mLoginPhrase;
-    private ImapStore mImapStore;
-    private MailTransport mTransport;
-    private ImapResponseParser mParser;
-
-    static final String IMAP_REDACTED_LOG = "[IMAP command redacted]";
-
-    /**
-     * Next tag to use.  All connections associated to the same ImapStore instance share the same
-     * counter to make tests simpler.
-     * (Some of the tests involve multiple connections but only have a single counter to track the
-     * tag.)
-     */
-    private final AtomicInteger mNextCommandTag = new AtomicInteger(0);
-
-    ImapConnection(ImapStore store) {
-        setStore(store);
-    }
-
-    void setStore(ImapStore store) {
-        // TODO: maybe we should throw an exception if the connection is not closed here,
-        // if it's not currently closed, then we won't reopen it, so if the credentials have
-        // changed, the connection will not be reestablished.
-        mImapStore = store;
-        mLoginPhrase = null;
-    }
-
-    /**
-     * Generates and returns the phrase to be used for authentication. This will be a LOGIN with
-     * username and password.
-     *
-     * @return the login command string to sent to the IMAP server
-     */
-    String getLoginPhrase() {
-        if (mLoginPhrase == null) {
-            if (mImapStore.getUsername() != null && mImapStore.getPassword() != null) {
-                // build the LOGIN string once (instead of over-and-over again.)
-                // apply the quoting here around the built-up password
-                mLoginPhrase = ImapConstants.LOGIN + " " + mImapStore.getUsername() + " "
-                        + ImapUtility.imapQuoted(mImapStore.getPassword());
-            }
-        }
-        return mLoginPhrase;
-    }
-
-    void open() throws IOException, MessagingException {
-        if (mTransport != null && mTransport.isOpen()) {
-            return;
-        }
-
-        try {
-            // copy configuration into a clean transport, if necessary
-            if (mTransport == null) {
-                mTransport = mImapStore.cloneTransport();
-            }
-
-            mTransport.open();
-
-            createParser();
-
-            // LOGIN
-            doLogin();
-        } catch (SSLException e) {
-            LogUtils.d(TAG, "SSLException ", e);
-            throw new CertificateValidationException(e.getMessage(), e);
-        } catch (IOException ioe) {
-            LogUtils.d(TAG, "IOException", ioe);
-            throw ioe;
-        } finally {
-            destroyResponses();
-        }
-    }
-
-    /**
-     * Closes the connection and releases all resources. This connection can not be used again
-     * until {@link #setStore(ImapStore)} is called.
-     */
-    void close() {
-        if (mTransport != null) {
-            mTransport.close();
-            mTransport = null;
-        }
-        destroyResponses();
-        mParser = null;
-        mImapStore = null;
-    }
-
-    /**
-     * Logs into the IMAP server
-     */
-    private void doLogin() throws IOException, MessagingException, AuthenticationFailedException {
-        try {
-            executeSimpleCommand(getLoginPhrase(), true);
-        } catch (ImapException ie) {
-            LogUtils.d(TAG, "ImapException", ie);
-            final String status = ie.getStatus();
-            final String code = ie.getResponseCode();
-            final String alertText = ie.getAlertText();
-
-            // if the response code indicates expired or bad credentials, throw a special exception
-            if (ImapConstants.AUTHENTICATIONFAILED.equals(code) ||
-                    ImapConstants.EXPIRED.equals(code) ||
-                    (ImapConstants.NO.equals(status) && TextUtils.isEmpty(code))) {
-                throw new AuthenticationFailedException(alertText, ie);
-            }
-
-            throw new MessagingException(alertText, ie);
-        }
-    }
-
-    /**
-     * Create an {@link ImapResponseParser} from {@code mTransport.getInputStream()} and
-     * set it to {@link #mParser}.
-     *
-     * If we already have an {@link ImapResponseParser}, we
-     * {@link #destroyResponses()} and throw it away.
-     */
-    private void createParser() {
-        destroyResponses();
-        mParser = new ImapResponseParser(mTransport.getInputStream());
-    }
-
-
-    void destroyResponses() {
-        if (mParser != null) {
-            mParser.destroyResponses();
-        }
-    }
-
-    ImapResponse readResponse() throws IOException, MessagingException {
-        return mParser.readResponse();
-    }
-
-    List<ImapResponse> executeSimpleCommand(String command)
-            throws IOException, MessagingException{
-        return executeSimpleCommand(command, false);
-    }
-
-    /**
-     * Send a single command to the server.  The command will be preceded by an IMAP command
-     * tag and followed by \r\n (caller need not supply them).
-     * Execute a simple command at the server, a simple command being one that is sent in a single
-     * line of text
-     *
-     * @param command the command to send to the server
-     * @param sensitive whether the command should be redacted in logs (used for login)
-     * @return a list of ImapResponses
-     * @throws IOException
-     * @throws MessagingException
-     */
-    List<ImapResponse> executeSimpleCommand(String command, boolean sensitive)
-            throws IOException, MessagingException {
-        // TODO: It may be nice to catch IOExceptions and close the connection here.
-        // Currently, we expect callers to do that, but if they fail to we'll be in a broken state.
-        sendCommand(command, sensitive);
-        return getCommandResponses();
-    }
-
-    String sendCommand(String command, boolean sensitive) throws IOException, MessagingException {
-        open();
-
-        if (mTransport == null) {
-            throw new IOException("Null transport");
-        }
-        String tag = Integer.toString(mNextCommandTag.incrementAndGet());
-        String commandToSend = tag + " " + command;
-        mTransport.writeLine(commandToSend, (sensitive ? IMAP_REDACTED_LOG : command));
-
-        return tag;
-    }
-
-    /**
-     * Read and return all of the responses from the most recent command sent to the server
-     *
-     * @return a list of ImapResponses
-     * @throws IOException
-     * @throws MessagingException
-     */
-    List<ImapResponse> getCommandResponses() throws IOException, MessagingException {
-        final List<ImapResponse> responses = new ArrayList<ImapResponse>();
-        ImapResponse response;
-        do {
-            response = mParser.readResponse();
-            responses.add(response);
-        } while (!response.isTagged());
-
-        if (!response.isOk()) {
-            final String toString = response.toString();
-            final String status = response.getStatusOrEmpty().getString();
-            final String alert = response.getAlertTextOrEmpty().getString();
-            final String responseCode = response.getResponseCodeOrEmpty().getString();
-            destroyResponses();
-
-            // if the response code indicates an error occurred within the server, indicate that
-            if (ImapConstants.UNAVAILABLE.equals(responseCode)) {
-                throw new MessagingException(MessagingException.SERVER_ERROR, alert);
-            }
-
-            throw new ImapException(toString, status, alert, responseCode);
-        }
-        return responses;
-    }
-}
diff --git a/src/com/android/phone/common/mail/store/ImapFolder.java b/src/com/android/phone/common/mail/store/ImapFolder.java
deleted file mode 100644
index faeb93f..0000000
--- a/src/com/android/phone/common/mail/store/ImapFolder.java
+++ /dev/null
@@ -1,767 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.store;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.Base64DataException;
-
-import com.android.phone.common.mail.store.ImapStore.ImapException;
-import com.android.phone.common.mail.store.ImapStore.ImapMessage;
-import com.android.phone.common.mail.store.imap.ImapConstants;
-import com.android.phone.common.mail.store.imap.ImapElement;
-import com.android.phone.common.mail.store.imap.ImapList;
-import com.android.phone.common.mail.store.imap.ImapResponse;
-import com.android.phone.common.mail.store.imap.ImapString;
-import com.android.phone.common.mail.store.imap.ImapUtility;
-import com.android.phone.common.mail.AuthenticationFailedException;
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.FetchProfile;
-import com.android.phone.common.mail.Flag;
-import com.android.phone.common.mail.Message;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.Part;
-import com.android.phone.common.mail.internet.BinaryTempFileBody;
-import com.android.phone.common.mail.internet.MimeBodyPart;
-import com.android.phone.common.mail.internet.MimeHeader;
-import com.android.phone.common.mail.internet.MimeMultipart;
-import com.android.phone.common.mail.internet.MimeUtility;
-import com.android.phone.common.mail.utility.CountingOutputStream;
-import com.android.phone.common.mail.utility.EOLConvertingOutputStream;
-import com.android.phone.common.mail.utils.Utility;
-import com.android.phone.common.mail.utils.LogUtils;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.phone.common.R;
-
-import org.apache.commons.io.IOUtils;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
-
-public class ImapFolder {
-    private static final String TAG = "ImapFolder";
-    private final static String[] PERMANENT_FLAGS =
-        { Flag.DELETED, Flag.SEEN, Flag.FLAGGED, Flag.ANSWERED };
-    private static final int COPY_BUFFER_SIZE = 16*1024;
-
-    private final ImapStore mStore;
-    private final String mName;
-    private int mMessageCount = -1;
-    private ImapConnection mConnection;
-    private String mMode;
-    private boolean mExists;
-    /** A set of hashes that can be used to track dirtiness */
-    Object mHash[];
-
-    public static final String MODE_READ_ONLY = "mode_read_only";
-    public static final String MODE_READ_WRITE = "mode_read_write";
-
-    public ImapFolder(ImapStore store, String name) {
-        mStore = store;
-        mName = name;
-    }
-
-    /**
-     * Callback for each message retrieval.
-     */
-    public interface MessageRetrievalListener {
-        public void messageRetrieved(Message message);
-    }
-
-    private void destroyResponses() {
-        if (mConnection != null) {
-            mConnection.destroyResponses();
-        }
-    }
-
-    public void open(String mode) throws MessagingException {
-        try {
-            if (isOpen()) {
-                if (mMode == mode) {
-                    // Make sure the connection is valid.
-                    // If it's not we'll close it down and continue on to get a new one.
-                    try {
-                        mConnection.executeSimpleCommand(ImapConstants.NOOP);
-                        return;
-
-                    } catch (IOException ioe) {
-                        ioExceptionHandler(mConnection, ioe);
-                    } finally {
-                        destroyResponses();
-                    }
-                } else {
-                    // Return the connection to the pool, if exists.
-                    close(false);
-                }
-            }
-            synchronized (this) {
-                mConnection = mStore.getConnection();
-            }
-            // * FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk
-            // $MDNSent)
-            // * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft
-            // NonJunk $MDNSent \*)] Flags permitted.
-            // * 23 EXISTS
-            // * 0 RECENT
-            // * OK [UIDVALIDITY 1125022061] UIDs valid
-            // * OK [UIDNEXT 57576] Predicted next UID
-            // 2 OK [READ-WRITE] Select completed.
-            try {
-                doSelect();
-            } catch (IOException ioe) {
-                throw ioExceptionHandler(mConnection, ioe);
-            } finally {
-                destroyResponses();
-            }
-        } catch (AuthenticationFailedException e) {
-            // Don't cache this connection, so we're forced to try connecting/login again
-            mConnection = null;
-            close(false);
-            throw e;
-        } catch (MessagingException e) {
-            mExists = false;
-            close(false);
-            throw e;
-        }
-    }
-
-    public boolean isOpen() {
-        return mExists && mConnection != null;
-    }
-
-    public String getMode() {
-        return mMode;
-    }
-
-    public void close(boolean expunge) {
-        if (expunge) {
-            try {
-                expunge();
-            } catch (MessagingException e) {
-                LogUtils.e(TAG, e, "Messaging Exception");
-            }
-        }
-        mMessageCount = -1;
-        synchronized (this) {
-            mStore.closeConnection();
-            mConnection = null;
-        }
-    }
-
-    public int getMessageCount() {
-        return mMessageCount;
-    }
-
-    String[] getSearchUids(List<ImapResponse> responses) {
-        // S: * SEARCH 2 3 6
-        final ArrayList<String> uids = new ArrayList<String>();
-        for (ImapResponse response : responses) {
-            if (!response.isDataResponse(0, ImapConstants.SEARCH)) {
-                continue;
-            }
-            // Found SEARCH response data
-            for (int i = 1; i < response.size(); i++) {
-                ImapString s = response.getStringOrEmpty(i);
-                if (s.isString()) {
-                    uids.add(s.getString());
-                }
-            }
-        }
-        return uids.toArray(Utility.EMPTY_STRINGS);
-    }
-
-    @VisibleForTesting
-    String[] searchForUids(String searchCriteria) throws MessagingException {
-        checkOpen();
-        try {
-            try {
-                final String command = ImapConstants.UID_SEARCH + " " + searchCriteria;
-                final String[] result = getSearchUids(mConnection.executeSimpleCommand(command));
-                LogUtils.d(TAG, "searchForUids '" + searchCriteria + "' results: " +
-                        result.length);
-                return result;
-            } catch (ImapException me) {
-                LogUtils.d(TAG, "ImapException in search: " + searchCriteria, me);
-                return Utility.EMPTY_STRINGS; // Not found
-            } catch (IOException ioe) {
-                LogUtils.d(TAG, "IOException in search: " + searchCriteria, ioe);
-                throw ioExceptionHandler(mConnection, ioe);
-            }
-        } finally {
-            destroyResponses();
-        }
-    }
-
-
-    public Message getMessage(String uid) throws MessagingException {
-        checkOpen();
-
-        final String[] uids = searchForUids(ImapConstants.UID + " " + uid);
-        for (int i = 0; i < uids.length; i++) {
-            if (uids[i].equals(uid)) {
-                return new ImapMessage(uid, this);
-            }
-        }
-        return null;
-    }
-
-    @VisibleForTesting
-    protected static boolean isAsciiString(String str) {
-        int len = str.length();
-        for (int i = 0; i < len; i++) {
-            char c = str.charAt(i);
-            if (c >= 128) return false;
-        }
-        return true;
-    }
-
-    public Message[] getMessages(String[] uids) throws MessagingException {
-        if (uids == null) {
-            uids = searchForUids("1:* NOT DELETED");
-        }
-        return getMessagesInternal(uids);
-    }
-
-    public Message[] getMessagesInternal(String[] uids) {
-        final ArrayList<Message> messages = new ArrayList<Message>(uids.length);
-        for (int i = 0; i < uids.length; i++) {
-            final String uid = uids[i];
-            final ImapMessage message = new ImapMessage(uid, this);
-            messages.add(message);
-        }
-        return messages.toArray(Message.EMPTY_ARRAY);
-    }
-
-    public void fetch(Message[] messages, FetchProfile fp,
-            MessageRetrievalListener listener) throws MessagingException {
-        try {
-            fetchInternal(messages, fp, listener);
-        } catch (RuntimeException e) { // Probably a parser error.
-            LogUtils.w(TAG, "Exception detected: " + e.getMessage());
-            throw e;
-        }
-    }
-
-    public void fetchInternal(Message[] messages, FetchProfile fp,
-            MessageRetrievalListener listener) throws MessagingException {
-        if (messages.length == 0) {
-            return;
-        }
-        checkOpen();
-        HashMap<String, Message> messageMap = new HashMap<String, Message>();
-        for (Message m : messages) {
-            messageMap.put(m.getUid(), m);
-        }
-
-        /*
-         * Figure out what command we are going to run:
-         * FLAGS     - UID FETCH (FLAGS)
-         * ENVELOPE  - UID FETCH (INTERNALDATE UID RFC822.SIZE FLAGS BODY.PEEK[
-         *                            HEADER.FIELDS (date subject from content-type to cc)])
-         * STRUCTURE - UID FETCH (BODYSTRUCTURE)
-         * BODY_SANE - UID FETCH (BODY.PEEK[]<0.N>) where N = max bytes returned
-         * BODY      - UID FETCH (BODY.PEEK[])
-         * Part      - UID FETCH (BODY.PEEK[ID]) where ID = mime part ID
-         */
-
-        final LinkedHashSet<String> fetchFields = new LinkedHashSet<String>();
-
-        fetchFields.add(ImapConstants.UID);
-        if (fp.contains(FetchProfile.Item.FLAGS)) {
-            fetchFields.add(ImapConstants.FLAGS);
-        }
-        if (fp.contains(FetchProfile.Item.ENVELOPE)) {
-            fetchFields.add(ImapConstants.INTERNALDATE);
-            fetchFields.add(ImapConstants.RFC822_SIZE);
-            fetchFields.add(ImapConstants.FETCH_FIELD_HEADERS);
-        }
-        if (fp.contains(FetchProfile.Item.STRUCTURE)) {
-            fetchFields.add(ImapConstants.BODYSTRUCTURE);
-        }
-
-        if (fp.contains(FetchProfile.Item.BODY_SANE)) {
-            fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK_SANE);
-        }
-        if (fp.contains(FetchProfile.Item.BODY)) {
-            fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK);
-        }
-
-        // TODO Why are we only fetching the first part given?
-        final Part fetchPart = fp.getFirstPart();
-        if (fetchPart != null) {
-            final String[] partIds =
-                    fetchPart.getHeader(MimeHeader.HEADER_ANDROID_ATTACHMENT_STORE_DATA);
-            // TODO Why can a single part have more than one Id? And why should we only fetch
-            // the first id if there are more than one?
-            if (partIds != null) {
-                fetchFields.add(ImapConstants.FETCH_FIELD_BODY_PEEK_BARE
-                        + "[" + partIds[0] + "]");
-            }
-        }
-
-        try {
-            mConnection.sendCommand(String.format(Locale.US,
-                    ImapConstants.UID_FETCH + " %s (%s)", ImapStore.joinMessageUids(messages),
-                    Utility.combine(fetchFields.toArray(new String[fetchFields.size()]), ' ')
-                    ), false);
-            ImapResponse response;
-            do {
-                response = null;
-                try {
-                    response = mConnection.readResponse();
-
-                    if (!response.isDataResponse(1, ImapConstants.FETCH)) {
-                        continue; // Ignore
-                    }
-                    final ImapList fetchList = response.getListOrEmpty(2);
-                    final String uid = fetchList.getKeyedStringOrEmpty(ImapConstants.UID)
-                            .getString();
-                    if (TextUtils.isEmpty(uid)) continue;
-
-                    ImapMessage message = (ImapMessage) messageMap.get(uid);
-                    if (message == null) continue;
-
-                    if (fp.contains(FetchProfile.Item.FLAGS)) {
-                        final ImapList flags =
-                            fetchList.getKeyedListOrEmpty(ImapConstants.FLAGS);
-                        for (int i = 0, count = flags.size(); i < count; i++) {
-                            final ImapString flag = flags.getStringOrEmpty(i);
-                            if (flag.is(ImapConstants.FLAG_DELETED)) {
-                                message.setFlagInternal(Flag.DELETED, true);
-                            } else if (flag.is(ImapConstants.FLAG_ANSWERED)) {
-                                message.setFlagInternal(Flag.ANSWERED, true);
-                            } else if (flag.is(ImapConstants.FLAG_SEEN)) {
-                                message.setFlagInternal(Flag.SEEN, true);
-                            } else if (flag.is(ImapConstants.FLAG_FLAGGED)) {
-                                message.setFlagInternal(Flag.FLAGGED, true);
-                            }
-                        }
-                    }
-                    if (fp.contains(FetchProfile.Item.ENVELOPE)) {
-                        final Date internalDate = fetchList.getKeyedStringOrEmpty(
-                                ImapConstants.INTERNALDATE).getDateOrNull();
-                        final int size = fetchList.getKeyedStringOrEmpty(
-                                ImapConstants.RFC822_SIZE).getNumberOrZero();
-                        final String header = fetchList.getKeyedStringOrEmpty(
-                                ImapConstants.BODY_BRACKET_HEADER, true).getString();
-
-                        message.setInternalDate(internalDate);
-                        message.setSize(size);
-                        message.parse(Utility.streamFromAsciiString(header));
-                    }
-                    if (fp.contains(FetchProfile.Item.STRUCTURE)) {
-                        ImapList bs = fetchList.getKeyedListOrEmpty(
-                                ImapConstants.BODYSTRUCTURE);
-                        if (!bs.isEmpty()) {
-                            try {
-                                parseBodyStructure(bs, message, ImapConstants.TEXT);
-                            } catch (MessagingException e) {
-                                LogUtils.v(TAG, e, "Error handling message");
-                                message.setBody(null);
-                            }
-                        }
-                    }
-                    if (fp.contains(FetchProfile.Item.BODY)
-                            || fp.contains(FetchProfile.Item.BODY_SANE)) {
-                        // Body is keyed by "BODY[]...".
-                        // Previously used "BODY[..." but this can be confused with "BODY[HEADER..."
-                        // TODO Should we accept "RFC822" as well??
-                        ImapString body = fetchList.getKeyedStringOrEmpty("BODY[]", true);
-                        InputStream bodyStream = body.getAsStream();
-                        message.parse(bodyStream);
-                    }
-                    if (fetchPart != null) {
-                        InputStream bodyStream =
-                                fetchList.getKeyedStringOrEmpty("BODY[", true).getAsStream();
-                        String encodings[] = fetchPart.getHeader(
-                                MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING);
-
-                        String contentTransferEncoding = null;
-                        if (encodings != null && encodings.length > 0) {
-                            contentTransferEncoding = encodings[0];
-                        } else {
-                            // According to http://tools.ietf.org/html/rfc2045#section-6.1
-                            // "7bit" is the default.
-                            contentTransferEncoding = "7bit";
-                        }
-
-                        try {
-                            // TODO Don't create 2 temp files.
-                            // decodeBody creates BinaryTempFileBody, but we could avoid this
-                            // if we implement ImapStringBody.
-                            // (We'll need to share a temp file.  Protect it with a ref-count.)
-                            fetchPart.setBody(decodeBody(mStore.getContext(), bodyStream,
-                                    contentTransferEncoding, fetchPart.getSize(), listener));
-                        } catch(Exception e) {
-                            // TODO: Figure out what kinds of exceptions might actually be thrown
-                            // from here. This blanket catch-all is because we're not sure what to
-                            // do if we don't have a contentTransferEncoding, and we don't have
-                            // time to figure out what exceptions might be thrown.
-                            LogUtils.e(TAG, "Error fetching body %s", e);
-                        }
-                    }
-
-                    if (listener != null) {
-                        listener.messageRetrieved(message);
-                    }
-                } finally {
-                    destroyResponses();
-                }
-            } while (!response.isTagged());
-        } catch (IOException ioe) {
-            throw ioExceptionHandler(mConnection, ioe);
-        }
-    }
-
-    /**
-     * Removes any content transfer encoding from the stream and returns a Body.
-     * This code is taken/condensed from MimeUtility.decodeBody
-     */
-    private static Body decodeBody(Context context,InputStream in, String contentTransferEncoding,
-            int size, MessageRetrievalListener listener) throws IOException {
-        // Get a properly wrapped input stream
-        in = MimeUtility.getInputStreamForContentTransferEncoding(in, contentTransferEncoding);
-        BinaryTempFileBody tempBody = new BinaryTempFileBody();
-        OutputStream out = tempBody.getOutputStream();
-        try {
-            byte[] buffer = new byte[COPY_BUFFER_SIZE];
-            int n = 0;
-            int count = 0;
-            while (-1 != (n = in.read(buffer))) {
-                out.write(buffer, 0, n);
-                count += n;
-            }
-        } catch (Base64DataException bde) {
-            String warning = "\n\n" + context.getString(R.string.message_decode_error);
-            out.write(warning.getBytes());
-        } finally {
-            out.close();
-        }
-        return tempBody;
-    }
-
-    public String[] getPermanentFlags() {
-        return PERMANENT_FLAGS;
-    }
-
-    /**
-     * Handle any untagged responses that the caller doesn't care to handle themselves.
-     * @param responses
-     */
-    private void handleUntaggedResponses(List<ImapResponse> responses) {
-        for (ImapResponse response : responses) {
-            handleUntaggedResponse(response);
-        }
-    }
-
-    /**
-     * Handle an untagged response that the caller doesn't care to handle themselves.
-     * @param response
-     */
-    private void handleUntaggedResponse(ImapResponse response) {
-        if (response.isDataResponse(1, ImapConstants.EXISTS)) {
-            mMessageCount = response.getStringOrEmpty(0).getNumberOrZero();
-        }
-    }
-
-    private static void parseBodyStructure(ImapList bs, Part part, String id)
-            throws MessagingException {
-        if (bs.getElementOrNone(0).isList()) {
-            /*
-             * This is a multipart/*
-             */
-            MimeMultipart mp = new MimeMultipart();
-            for (int i = 0, count = bs.size(); i < count; i++) {
-                ImapElement e = bs.getElementOrNone(i);
-                if (e.isList()) {
-                    /*
-                     * For each part in the message we're going to add a new BodyPart and parse
-                     * into it.
-                     */
-                    MimeBodyPart bp = new MimeBodyPart();
-                    if (id.equals(ImapConstants.TEXT)) {
-                        parseBodyStructure(bs.getListOrEmpty(i), bp, Integer.toString(i + 1));
-
-                    } else {
-                        parseBodyStructure(bs.getListOrEmpty(i), bp, id + "." + (i + 1));
-                    }
-                    mp.addBodyPart(bp);
-
-                } else {
-                    if (e.isString()) {
-                        mp.setSubType(bs.getStringOrEmpty(i).getString().toLowerCase(Locale.US));
-                    }
-                    break; // Ignore the rest of the list.
-                }
-            }
-            part.setBody(mp);
-        } else {
-            /*
-             * This is a body. We need to add as much information as we can find out about
-             * it to the Part.
-             */
-
-            /*
-             body type
-             body subtype
-             body parameter parenthesized list
-             body id
-             body description
-             body encoding
-             body size
-             */
-
-            final ImapString type = bs.getStringOrEmpty(0);
-            final ImapString subType = bs.getStringOrEmpty(1);
-            final String mimeType =
-                    (type.getString() + "/" + subType.getString()).toLowerCase(Locale.US);
-
-            final ImapList bodyParams = bs.getListOrEmpty(2);
-            final ImapString cid = bs.getStringOrEmpty(3);
-            final ImapString encoding = bs.getStringOrEmpty(5);
-            final int size = bs.getStringOrEmpty(6).getNumberOrZero();
-
-            if (MimeUtility.mimeTypeMatches(mimeType, MimeUtility.MIME_TYPE_RFC822)) {
-                // A body type of type MESSAGE and subtype RFC822
-                // contains, immediately after the basic fields, the
-                // envelope structure, body structure, and size in
-                // text lines of the encapsulated message.
-                // [MESSAGE, RFC822, [NAME, filename.eml], NIL, NIL, 7BIT, 5974, NIL,
-                //     [INLINE, [FILENAME*0, Fwd: Xxx..., FILENAME*1, filename.eml]], NIL]
-                /*
-                 * This will be caught by fetch and handled appropriately.
-                 */
-                throw new MessagingException("BODYSTRUCTURE " + MimeUtility.MIME_TYPE_RFC822
-                        + " not yet supported.");
-            }
-
-            /*
-             * Set the content type with as much information as we know right now.
-             */
-            final StringBuilder contentType = new StringBuilder(mimeType);
-
-            /*
-             * If there are body params we might be able to get some more information out
-             * of them.
-             */
-            for (int i = 1, count = bodyParams.size(); i < count; i += 2) {
-
-                // TODO We need to convert " into %22, but
-                // because MimeUtility.getHeaderParameter doesn't recognize it,
-                // we can't fix it for now.
-                contentType.append(String.format(";\n %s=\"%s\"",
-                        bodyParams.getStringOrEmpty(i - 1).getString(),
-                        bodyParams.getStringOrEmpty(i).getString()));
-            }
-
-            part.setHeader(MimeHeader.HEADER_CONTENT_TYPE, contentType.toString());
-
-            // Extension items
-            final ImapList bodyDisposition;
-
-            if (type.is(ImapConstants.TEXT) && bs.getElementOrNone(9).isList()) {
-                // If media-type is TEXT, 9th element might be: [body-fld-lines] := number
-                // So, if it's not a list, use 10th element.
-                // (Couldn't find evidence in the RFC if it's ALWAYS 10th element.)
-                bodyDisposition = bs.getListOrEmpty(9);
-            } else {
-                bodyDisposition = bs.getListOrEmpty(8);
-            }
-
-            final StringBuilder contentDisposition = new StringBuilder();
-
-            if (bodyDisposition.size() > 0) {
-                final String bodyDisposition0Str =
-                        bodyDisposition.getStringOrEmpty(0).getString().toLowerCase(Locale.US);
-                if (!TextUtils.isEmpty(bodyDisposition0Str)) {
-                    contentDisposition.append(bodyDisposition0Str);
-                }
-
-                final ImapList bodyDispositionParams = bodyDisposition.getListOrEmpty(1);
-                if (!bodyDispositionParams.isEmpty()) {
-                    /*
-                     * If there is body disposition information we can pull some more
-                     * information about the attachment out.
-                     */
-                    for (int i = 1, count = bodyDispositionParams.size(); i < count; i += 2) {
-
-                        // TODO We need to convert " into %22.  See above.
-                        contentDisposition.append(String.format(Locale.US, ";\n %s=\"%s\"",
-                                bodyDispositionParams.getStringOrEmpty(i - 1)
-                                        .getString().toLowerCase(Locale.US),
-                                bodyDispositionParams.getStringOrEmpty(i).getString()));
-                    }
-                }
-            }
-
-            if ((size > 0)
-                    && (MimeUtility.getHeaderParameter(contentDisposition.toString(), "size")
-                            == null)) {
-                contentDisposition.append(String.format(Locale.US, ";\n size=%d", size));
-            }
-
-            if (contentDisposition.length() > 0) {
-                /*
-                 * Set the content disposition containing at least the size. Attachment
-                 * handling code will use this down the road.
-                 */
-                part.setHeader(MimeHeader.HEADER_CONTENT_DISPOSITION,
-                        contentDisposition.toString());
-            }
-
-            /*
-             * Set the Content-Transfer-Encoding header. Attachment code will use this
-             * to parse the body.
-             */
-            if (!encoding.isEmpty()) {
-                part.setHeader(MimeHeader.HEADER_CONTENT_TRANSFER_ENCODING,
-                        encoding.getString());
-            }
-
-            /*
-             * Set the Content-ID header.
-             */
-            if (!cid.isEmpty()) {
-                part.setHeader(MimeHeader.HEADER_CONTENT_ID, cid.getString());
-            }
-
-            if (size > 0) {
-                if (part instanceof ImapMessage) {
-                    ((ImapMessage) part).setSize(size);
-                } else if (part instanceof MimeBodyPart) {
-                    ((MimeBodyPart) part).setSize(size);
-                } else {
-                    throw new MessagingException("Unknown part type " + part.toString());
-                }
-            }
-            part.setHeader(MimeHeader.HEADER_ANDROID_ATTACHMENT_STORE_DATA, id);
-        }
-
-    }
-
-    public Message[] expunge() throws MessagingException {
-        checkOpen();
-        try {
-            handleUntaggedResponses(mConnection.executeSimpleCommand(ImapConstants.EXPUNGE));
-        } catch (IOException ioe) {
-            throw ioExceptionHandler(mConnection, ioe);
-        } finally {
-            destroyResponses();
-        }
-        return null;
-    }
-
-    public void setFlags(Message[] messages, String[] flags, boolean value)
-            throws MessagingException {
-        checkOpen();
-
-        String allFlags = "";
-        if (flags.length > 0) {
-            StringBuilder flagList = new StringBuilder();
-            for (int i = 0, count = flags.length; i < count; i++) {
-                String flag = flags[i];
-                if (flag == Flag.SEEN) {
-                    flagList.append(" " + ImapConstants.FLAG_SEEN);
-                } else if (flag == Flag.DELETED) {
-                    flagList.append(" " + ImapConstants.FLAG_DELETED);
-                } else if (flag == Flag.FLAGGED) {
-                    flagList.append(" " + ImapConstants.FLAG_FLAGGED);
-                } else if (flag == Flag.ANSWERED) {
-                    flagList.append(" " + ImapConstants.FLAG_ANSWERED);
-                }
-            }
-            allFlags = flagList.substring(1);
-        }
-        try {
-            mConnection.executeSimpleCommand(String.format(Locale.US,
-                    ImapConstants.UID_STORE + " %s %s" + ImapConstants.FLAGS_SILENT + " (%s)",
-                    ImapStore.joinMessageUids(messages),
-                    value ? "+" : "-",
-                    allFlags));
-
-        } catch (IOException ioe) {
-            throw ioExceptionHandler(mConnection, ioe);
-        } finally {
-            destroyResponses();
-        }
-    }
-
-    /**
-     * Selects the folder for use. Before performing any operations on this folder, it
-     * must be selected.
-     */
-    private void doSelect() throws IOException, MessagingException {
-        final List<ImapResponse> responses = mConnection.executeSimpleCommand(
-                String.format(Locale.US, ImapConstants.SELECT + " \"%s\"", mName));
-
-        // Assume the folder is opened read-write; unless we are notified otherwise
-        mMode = MODE_READ_WRITE;
-        int messageCount = -1;
-        for (ImapResponse response : responses) {
-            if (response.isDataResponse(1, ImapConstants.EXISTS)) {
-                messageCount = response.getStringOrEmpty(0).getNumberOrZero();
-            } else if (response.isOk()) {
-                final ImapString responseCode = response.getResponseCodeOrEmpty();
-                if (responseCode.is(ImapConstants.READ_ONLY)) {
-                    mMode = MODE_READ_ONLY;
-                } else if (responseCode.is(ImapConstants.READ_WRITE)) {
-                    mMode = MODE_READ_WRITE;
-                }
-            } else if (response.isTagged()) { // Not OK
-                throw new MessagingException("Can't open mailbox: "
-                        + response.getStatusResponseTextOrEmpty());
-            }
-        }
-        if (messageCount == -1) {
-            throw new MessagingException("Did not find message count during select");
-        }
-        mMessageCount = messageCount;
-        mExists = true;
-    }
-
-    private void checkOpen() throws MessagingException {
-        if (!isOpen()) {
-            throw new MessagingException("Folder " + mName + " is not open.");
-        }
-    }
-
-    private MessagingException ioExceptionHandler(ImapConnection connection, IOException ioe) {
-        LogUtils.d(TAG, "IO Exception detected: ", ioe);
-        connection.close();
-        if (connection == mConnection) {
-            mConnection = null; // To prevent close() from returning the connection to the pool.
-            close(false);
-        }
-        return new MessagingException(MessagingException.IOERROR, "IO Error", ioe);
-    }
-
-    public Message createMessage(String uid) {
-        return new ImapMessage(uid, this);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/ImapStore.java b/src/com/android/phone/common/mail/store/ImapStore.java
deleted file mode 100644
index 605abbb..0000000
--- a/src/com/android/phone/common/mail/store/ImapStore.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store;
-
-import android.content.Context;
-import android.net.Network;
-
-import com.android.phone.common.mail.internet.MimeMessage;
-import com.android.phone.common.mail.MailTransport;
-import com.android.phone.common.mail.Message;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.store.ImapFolder;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-public class ImapStore {
-    /**
-     * A global suggestion to Store implementors on how much of the body
-     * should be returned on FetchProfile.Item.BODY_SANE requests. We'll use 125k now.
-     */
-    public static final int FETCH_BODY_SANE_SUGGESTED_SIZE = (125 * 1024);
-    private Context mContext;
-    private String mUsername;
-    private String mPassword;
-    private MailTransport mTransport;
-    private ImapConnection mConnection;
-
-    public static final int FLAG_NONE         = 0x00;    // No flags
-    public static final int FLAG_SSL          = 0x01;    // Use SSL
-    public static final int FLAG_TLS          = 0x02;    // Use TLS
-    public static final int FLAG_AUTHENTICATE = 0x04;    // Use name/password for authentication
-    public static final int FLAG_TRUST_ALL    = 0x08;    // Trust all certificates
-    public static final int FLAG_OAUTH        = 0x10;    // Use OAuth for authentication
-
-    /**
-     * Contains all the information necessary to log into an imap server
-     */
-    public ImapStore(Context context, String username, String password, int port,
-            String serverName, int flags, Network network) {
-        mContext = context;
-        mUsername = username;
-        mPassword = password;
-        mTransport = new MailTransport(context, network, serverName, port, flags);
-    }
-
-    public Context getContext() {
-        return mContext;
-    }
-
-    public String getUsername() {
-        return mUsername;
-    }
-
-    public String getPassword() {
-        return mPassword;
-    }
-
-    /** Returns a clone of the transport associated with this store. */
-    MailTransport cloneTransport() {
-        return mTransport.clone();
-    }
-
-    /**
-     * Returns UIDs of Messages joined with "," as the separator.
-     */
-    static String joinMessageUids(Message[] messages) {
-        StringBuilder sb = new StringBuilder();
-        boolean notFirst = false;
-        for (Message m : messages) {
-            if (notFirst) {
-                sb.append(',');
-            }
-            sb.append(m.getUid());
-            notFirst = true;
-        }
-        return sb.toString();
-    }
-
-    static class ImapMessage extends MimeMessage {
-        private ImapFolder mFolder;
-
-        ImapMessage(String uid, ImapFolder folder) {
-            mUid = uid;
-            mFolder = folder;
-        }
-
-        public void setSize(int size) {
-            mSize = size;
-        }
-
-        @Override
-        public void parse(InputStream in) throws IOException, MessagingException {
-            super.parse(in);
-        }
-
-        public void setFlagInternal(String flag, boolean set) throws MessagingException {
-            super.setFlag(flag, set);
-        }
-
-        @Override
-        public void setFlag(String flag, boolean set) throws MessagingException {
-            super.setFlag(flag, set);
-            mFolder.setFlags(new Message[] { this }, new String[] { flag }, set);
-        }
-    }
-
-    static class ImapException extends MessagingException {
-        private static final long serialVersionUID = 1L;
-
-        private final String mStatus;
-        private final String mAlertText;
-        private final String mResponseCode;
-
-        public ImapException(String message, String status, String alertText,
-                String responseCode) {
-            super(message);
-            mStatus = status;
-            mAlertText = alertText;
-            mResponseCode = responseCode;
-        }
-
-        public String getStatus() {
-            return mStatus;
-        }
-
-        public String getAlertText() {
-            return mAlertText;
-        }
-
-        public String getResponseCode() {
-            return mResponseCode;
-        }
-    }
-
-    public void closeConnection() {
-        if (mConnection != null) {
-            mConnection.close();
-            mConnection = null;
-        }
-    }
-
-    public ImapConnection getConnection() {
-        if (mConnection == null) {
-            mConnection = new ImapConnection(this);
-        }
-        return mConnection;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapConstants.java b/src/com/android/phone/common/mail/store/imap/ImapConstants.java
deleted file mode 100644
index cde1616..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapConstants.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import com.android.phone.common.mail.store.ImapStore;
-
-import java.util.Locale;
-
-public final class ImapConstants {
-    private ImapConstants() {}
-
-    public static final String FETCH_FIELD_BODY_PEEK_BARE = "BODY.PEEK";
-    public static final String FETCH_FIELD_BODY_PEEK = FETCH_FIELD_BODY_PEEK_BARE + "[]";
-    public static final String FETCH_FIELD_BODY_PEEK_SANE = String.format(
-            Locale.US, "BODY.PEEK[]<0.%d>", ImapStore.FETCH_BODY_SANE_SUGGESTED_SIZE);
-    public static final String FETCH_FIELD_HEADERS =
-            "BODY.PEEK[HEADER.FIELDS (date subject from content-type to cc message-id)]";
-
-    public static final String ALERT = "ALERT";
-    public static final String APPEND = "APPEND";
-    public static final String AUTHENTICATE = "AUTHENTICATE";
-    public static final String BAD = "BAD";
-    public static final String BADCHARSET = "BADCHARSET";
-    public static final String BODY = "BODY";
-    public static final String BODY_BRACKET_HEADER = "BODY[HEADER";
-    public static final String BODYSTRUCTURE = "BODYSTRUCTURE";
-    public static final String BYE = "BYE";
-    public static final String CAPABILITY = "CAPABILITY";
-    public static final String CHECK = "CHECK";
-    public static final String CLOSE = "CLOSE";
-    public static final String COPY = "COPY";
-    public static final String COPYUID = "COPYUID";
-    public static final String CREATE = "CREATE";
-    public static final String DELETE = "DELETE";
-    public static final String EXAMINE = "EXAMINE";
-    public static final String EXISTS = "EXISTS";
-    public static final String EXPUNGE = "EXPUNGE";
-    public static final String FETCH = "FETCH";
-    public static final String FLAG_ANSWERED = "\\ANSWERED";
-    public static final String FLAG_DELETED = "\\DELETED";
-    public static final String FLAG_FLAGGED = "\\FLAGGED";
-    public static final String FLAG_NO_SELECT = "\\NOSELECT";
-    public static final String FLAG_SEEN = "\\SEEN";
-    public static final String FLAGS = "FLAGS";
-    public static final String FLAGS_SILENT = "FLAGS.SILENT";
-    public static final String ID = "ID";
-    public static final String INBOX = "INBOX";
-    public static final String INTERNALDATE = "INTERNALDATE";
-    public static final String LIST = "LIST";
-    public static final String LOGIN = "LOGIN";
-    public static final String LOGOUT = "LOGOUT";
-    public static final String LSUB = "LSUB";
-    public static final String NAMESPACE = "NAMESPACE";
-    public static final String NO = "NO";
-    public static final String NOOP = "NOOP";
-    public static final String OK = "OK";
-    public static final String PARSE = "PARSE";
-    public static final String PERMANENTFLAGS = "PERMANENTFLAGS";
-    public static final String PREAUTH = "PREAUTH";
-    public static final String READ_ONLY = "READ-ONLY";
-    public static final String READ_WRITE = "READ-WRITE";
-    public static final String RENAME = "RENAME";
-    public static final String RFC822_SIZE = "RFC822.SIZE";
-    public static final String SEARCH = "SEARCH";
-    public static final String SELECT = "SELECT";
-    public static final String STARTTLS = "STARTTLS";
-    public static final String STATUS = "STATUS";
-    public static final String STORE = "STORE";
-    public static final String SUBSCRIBE = "SUBSCRIBE";
-    public static final String TEXT = "TEXT";
-    public static final String TRYCREATE = "TRYCREATE";
-    public static final String UID = "UID";
-    public static final String UID_COPY = "UID COPY";
-    public static final String UID_FETCH = "UID FETCH";
-    public static final String UID_SEARCH = "UID SEARCH";
-    public static final String UID_STORE = "UID STORE";
-    public static final String UIDNEXT = "UIDNEXT";
-    public static final String UIDPLUS = "UIDPLUS";
-    public static final String UIDVALIDITY = "UIDVALIDITY";
-    public static final String UNSEEN = "UNSEEN";
-    public static final String UNSUBSCRIBE = "UNSUBSCRIBE";
-    public static final String XOAUTH2 = "XOAUTH2";
-    public static final String APPENDUID = "APPENDUID";
-    public static final String NIL = "NIL";
-
-    /** response codes within IMAP responses */
-    public static final String EXPIRED = "EXPIRED";
-    public static final String AUTHENTICATIONFAILED = "AUTHENTICATIONFAILED";
-    public static final String UNAVAILABLE = "UNAVAILABLE";
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapElement.java b/src/com/android/phone/common/mail/store/imap/ImapElement.java
deleted file mode 100644
index 2d1824e..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapElement.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-/**
- * Class representing "element"s in IMAP responses.
- *
- * <p>Class hierarchy:
- * <pre>
- * ImapElement
- *   |
- *   |-- ImapElement.NONE (for 'index out of range')
- *   |
- *   |-- ImapList (isList() == true)
- *   |   |
- *   |   |-- ImapList.EMPTY
- *   |   |
- *   |   --- ImapResponse
- *   |
- *   --- ImapString (isString() == true)
- *       |
- *       |-- ImapString.EMPTY
- *       |
- *       |-- ImapSimpleString
- *       |
- *       |-- ImapMemoryLiteral
- *       |
- *       --- ImapTempFileLiteral
- * </pre>
- */
-public abstract class ImapElement {
-    /**
-     * An element that is returned by {@link ImapList#getElementOrNone} to indicate an index
-     * is out of range.
-     */
-    public static final ImapElement NONE = new ImapElement() {
-        @Override public void destroy() {
-            // Don't call super.destroy().
-            // It's a shared object.  We don't want the mDestroyed to be set on this.
-        }
-
-        @Override public boolean isList() {
-            return false;
-        }
-
-        @Override public boolean isString() {
-            return false;
-        }
-
-        @Override public String toString() {
-            return "[NO ELEMENT]";
-        }
-
-        @Override
-        public boolean equalsForTest(ImapElement that) {
-            return super.equalsForTest(that);
-        }
-    };
-
-    private boolean mDestroyed = false;
-
-    public abstract boolean isList();
-
-    public abstract boolean isString();
-
-    protected boolean isDestroyed() {
-        return mDestroyed;
-    }
-
-    /**
-     * Clean up the resources used by the instance.
-     * It's for removing a temp file used by {@link ImapTempFileLiteral}.
-     */
-    public void destroy() {
-        mDestroyed = true;
-    }
-
-    /**
-     * Throws {@link RuntimeException} if it's already destroyed.
-     */
-    protected final void checkNotDestroyed() {
-        if (mDestroyed) {
-            throw new RuntimeException("Already destroyed");
-        }
-    }
-
-    /**
-     * Return a string that represents this object; it's purely for the debug purpose.  Don't
-     * mistake it for {@link ImapString#getString}.
-     *
-     * Abstract to force subclasses to implement it.
-     */
-    @Override
-    public abstract String toString();
-
-    /**
-     * The equals implementation that is intended to be used only for unit testing.
-     * (Because it may be heavy and has a special sense of "equal" for testing.)
-     */
-    public boolean equalsForTest(ImapElement that) {
-        if (that == null) {
-            return false;
-        }
-        return this.getClass() == that.getClass(); // Has to be the same class.
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapList.java b/src/com/android/phone/common/mail/store/imap/ImapList.java
deleted file mode 100644
index 93adc4f..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapList.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import java.util.ArrayList;
-
-/**
- * Class represents an IMAP list.
- */
-public class ImapList extends ImapElement {
-    /**
-     * {@link ImapList} representing an empty list.
-     */
-    public static final ImapList EMPTY = new ImapList() {
-        @Override public void destroy() {
-            // Don't call super.destroy().
-            // It's a shared object.  We don't want the mDestroyed to be set on this.
-        }
-
-        @Override void add(ImapElement e) {
-            throw new RuntimeException();
-        }
-    };
-
-    private ArrayList<ImapElement> mList = new ArrayList<ImapElement>();
-
-    /* package */ void add(ImapElement e) {
-        if (e == null) {
-            throw new RuntimeException("Can't add null");
-        }
-        mList.add(e);
-    }
-
-    @Override
-    public final boolean isString() {
-        return false;
-    }
-
-    @Override
-    public final boolean isList() {
-        return true;
-    }
-
-    public final int size() {
-        return mList.size();
-    }
-
-    public final boolean isEmpty() {
-        return size() == 0;
-    }
-
-    /**
-     * Return true if the element at {@code index} exists, is string, and equals to {@code s}.
-     * (case insensitive)
-     */
-    public final boolean is(int index, String s) {
-        return is(index, s, false);
-    }
-
-    /**
-     * Same as {@link #is(int, String)}, but does the prefix match if {@code prefixMatch}.
-     */
-    public final boolean is(int index, String s, boolean prefixMatch) {
-        if (!prefixMatch) {
-            return getStringOrEmpty(index).is(s);
-        } else {
-            return getStringOrEmpty(index).startsWith(s);
-        }
-    }
-
-    /**
-     * Return the element at {@code index}.
-     * If {@code index} is out of range, returns {@link ImapElement#NONE}.
-     */
-    public final ImapElement getElementOrNone(int index) {
-        return (index >= mList.size()) ? ImapElement.NONE : mList.get(index);
-    }
-
-    /**
-     * Return the element at {@code index} if it's a list.
-     * If {@code index} is out of range or not a list, returns {@link ImapList#EMPTY}.
-     */
-    public final ImapList getListOrEmpty(int index) {
-        ImapElement el = getElementOrNone(index);
-        return el.isList() ? (ImapList) el : EMPTY;
-    }
-
-    /**
-     * Return the element at {@code index} if it's a string.
-     * If {@code index} is out of range or not a string, returns {@link ImapString#EMPTY}.
-     */
-    public final ImapString getStringOrEmpty(int index) {
-        ImapElement el = getElementOrNone(index);
-        return el.isString() ? (ImapString) el : ImapString.EMPTY;
-    }
-
-    /**
-     * Return an element keyed by {@code key}.  Return null if not found.  {@code key} has to be
-     * at an even index.
-     */
-    /* package */ final ImapElement getKeyedElementOrNull(String key, boolean prefixMatch) {
-        for (int i = 1; i < size(); i += 2) {
-            if (is(i-1, key, prefixMatch)) {
-                return mList.get(i);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Return an {@link ImapList} keyed by {@code key}.
-     * Return {@link ImapList#EMPTY} if not found.
-     */
-    public final ImapList getKeyedListOrEmpty(String key) {
-        return getKeyedListOrEmpty(key, false);
-    }
-
-    /**
-     * Return an {@link ImapList} keyed by {@code key}.
-     * Return {@link ImapList#EMPTY} if not found.
-     */
-    public final ImapList getKeyedListOrEmpty(String key, boolean prefixMatch) {
-        ImapElement e = getKeyedElementOrNull(key, prefixMatch);
-        return (e != null) ? ((ImapList) e) : ImapList.EMPTY;
-    }
-
-    /**
-     * Return an {@link ImapString} keyed by {@code key}.
-     * Return {@link ImapString#EMPTY} if not found.
-     */
-    public final ImapString getKeyedStringOrEmpty(String key) {
-        return getKeyedStringOrEmpty(key, false);
-    }
-
-    /**
-     * Return an {@link ImapString} keyed by {@code key}.
-     * Return {@link ImapString#EMPTY} if not found.
-     */
-    public final ImapString getKeyedStringOrEmpty(String key, boolean prefixMatch) {
-        ImapElement e = getKeyedElementOrNull(key, prefixMatch);
-        return (e != null) ? ((ImapString) e) : ImapString.EMPTY;
-    }
-
-    /**
-     * Return true if it contains {@code s}.
-     */
-    public final boolean contains(String s) {
-        for (int i = 0; i < size(); i++) {
-            if (getStringOrEmpty(i).is(s)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public void destroy() {
-        if (mList != null) {
-            for (ImapElement e : mList) {
-                e.destroy();
-            }
-            mList = null;
-        }
-        super.destroy();
-    }
-
-    @Override
-    public String toString() {
-        return mList.toString();
-    }
-
-    /**
-     * Return the text representations of the contents concatenated with ",".
-     */
-    public final String flatten() {
-        return flatten(new StringBuilder()).toString();
-    }
-
-    /**
-     * Returns text representations (i.e. getString()) of contents joined together with
-     * "," as the separator.
-     *
-     * Only used for building the capability string passed to vendor policies.
-     *
-     * We can't use toString(), because it's for debugging (meaning the format may change any time),
-     * and it won't expand literals.
-     */
-    private final StringBuilder flatten(StringBuilder sb) {
-        sb.append('[');
-        for (int i = 0; i < mList.size(); i++) {
-            if (i > 0) {
-                sb.append(',');
-            }
-            final ImapElement e = getElementOrNone(i);
-            if (e.isList()) {
-                getListOrEmpty(i).flatten(sb);
-            } else if (e.isString()) {
-                sb.append(getStringOrEmpty(i).getString());
-            }
-        }
-        sb.append(']');
-        return sb;
-    }
-
-    @Override
-    public boolean equalsForTest(ImapElement that) {
-        if (!super.equalsForTest(that)) {
-            return false;
-        }
-        ImapList thatList = (ImapList) that;
-        if (size() != thatList.size()) {
-            return false;
-        }
-        for (int i = 0; i < size(); i++) {
-            if (!mList.get(i).equalsForTest(thatList.getElementOrNone(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java b/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java
deleted file mode 100644
index aac66c2..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapMemoryLiteral.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import android.util.Log;
-
-import com.android.phone.common.mail.FixedLengthInputStream;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-/**
- * Subclass of {@link ImapString} used for literals backed by an in-memory byte array.
- */
-public class ImapMemoryLiteral extends ImapString {
-    private final String TAG = "ImapMemoryLiteral";
-    private byte[] mData;
-
-    /* package */ ImapMemoryLiteral(FixedLengthInputStream in) throws IOException {
-        // We could use ByteArrayOutputStream and IOUtils.copy, but it'd perform an unnecessary
-        // copy....
-        mData = new byte[in.getLength()];
-        int pos = 0;
-        while (pos < mData.length) {
-            int read = in.read(mData, pos, mData.length - pos);
-            if (read < 0) {
-                break;
-            }
-            pos += read;
-        }
-        if (pos != mData.length) {
-            Log.w(TAG, "");
-        }
-    }
-
-    @Override
-    public void destroy() {
-        mData = null;
-        super.destroy();
-    }
-
-    @Override
-    public String getString() {
-        try {
-            return new String(mData, "US-ASCII");
-        } catch (UnsupportedEncodingException e) {
-            Log.e(TAG, "Unsupported encoding: ", e);
-        }
-        return null;
-    }
-
-    @Override
-    public InputStream getAsStream() {
-        return new ByteArrayInputStream(mData);
-    }
-
-    @Override
-    public String toString() {
-        return String.format("{%d byte literal(memory)}", mData.length);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapResponse.java b/src/com/android/phone/common/mail/store/imap/ImapResponse.java
deleted file mode 100644
index 4891966..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapResponse.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-/**
- * Class represents an IMAP response.
- */
-public class ImapResponse extends ImapList {
-    private final String mTag;
-    private final boolean mIsContinuationRequest;
-
-    /* package */ ImapResponse(String tag, boolean isContinuationRequest) {
-        mTag = tag;
-        mIsContinuationRequest = isContinuationRequest;
-    }
-
-    /* package */ static boolean isStatusResponse(String symbol) {
-        return     ImapConstants.OK.equalsIgnoreCase(symbol)
-                || ImapConstants.NO.equalsIgnoreCase(symbol)
-                || ImapConstants.BAD.equalsIgnoreCase(symbol)
-                || ImapConstants.PREAUTH.equalsIgnoreCase(symbol)
-                || ImapConstants.BYE.equalsIgnoreCase(symbol);
-    }
-
-    /**
-     * @return whether it's a tagged response.
-     */
-    public boolean isTagged() {
-        return mTag != null;
-    }
-
-    /**
-     * @return whether it's a continuation request.
-     */
-    public boolean isContinuationRequest() {
-        return mIsContinuationRequest;
-    }
-
-    public boolean isStatusResponse() {
-        return isStatusResponse(getStringOrEmpty(0).getString());
-    }
-
-    /**
-     * @return whether it's an OK response.
-     */
-    public boolean isOk() {
-        return is(0, ImapConstants.OK);
-    }
-
-    /**
-     * @return whether it's an BAD response.
-     */
-    public boolean isBad() {
-        return is(0, ImapConstants.BAD);
-    }
-
-    /**
-     * @return whether it's an NO response.
-     */
-    public boolean isNo() {
-        return is(0, ImapConstants.NO);
-    }
-
-    /**
-     * @return whether it's an {@code responseType} data response.  (i.e. not tagged).
-     * @param index where {@code responseType} should appear.  e.g. 1 for "FETCH"
-     * @param responseType e.g. "FETCH"
-     */
-    public final boolean isDataResponse(int index, String responseType) {
-        return !isTagged() && getStringOrEmpty(index).is(responseType);
-    }
-
-    /**
-     * @return Response code (RFC 3501 7.1) if it's a status response.
-     *
-     * e.g. "ALERT" for "* OK [ALERT] System shutdown in 10 minutes"
-     */
-    public ImapString getResponseCodeOrEmpty() {
-        if (!isStatusResponse()) {
-            return ImapString.EMPTY; // Not a status response.
-        }
-        return getListOrEmpty(1).getStringOrEmpty(0);
-    }
-
-    /**
-     * @return Alert message it it has ALERT response code.
-     *
-     * e.g. "System shutdown in 10 minutes" for "* OK [ALERT] System shutdown in 10 minutes"
-     */
-    public ImapString getAlertTextOrEmpty() {
-        if (!getResponseCodeOrEmpty().is(ImapConstants.ALERT)) {
-            return ImapString.EMPTY; // Not an ALERT
-        }
-        // The 3rd element contains all the rest of line.
-        return getStringOrEmpty(2);
-    }
-
-    /**
-     * @return Response text in a status response.
-     */
-    public ImapString getStatusResponseTextOrEmpty() {
-        if (!isStatusResponse()) {
-            return ImapString.EMPTY;
-        }
-        return getStringOrEmpty(getElementOrNone(1).isList() ? 2 : 1);
-    }
-
-    public ImapString getStatusOrEmpty() {
-        if (!isStatusResponse()) {
-            return ImapString.EMPTY;
-        }
-        return getStringOrEmpty(0);
-    }
-
-    @Override
-    public String toString() {
-        String tag = mTag;
-        if (isContinuationRequest()) {
-            tag = "+";
-        }
-        return "#" + tag + "# " + super.toString();
-    }
-
-    @Override
-    public boolean equalsForTest(ImapElement that) {
-        if (!super.equalsForTest(that)) {
-            return false;
-        }
-        final ImapResponse thatResponse = (ImapResponse) that;
-        if (mTag == null) {
-            if (thatResponse.mTag != null) {
-                return false;
-            }
-        } else {
-            if (!mTag.equals(thatResponse.mTag)) {
-                return false;
-            }
-        }
-        if (mIsContinuationRequest != thatResponse.mIsContinuationRequest) {
-            return false;
-        }
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java b/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java
deleted file mode 100644
index d0413df..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapResponseParser.java
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.phone.common.mail.FixedLengthInputStream;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.PeekableInputStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-
-/**
- * IMAP response parser.
- */
-public class ImapResponseParser {
-    private static final String TAG = "ImapResponseParser";
-
-    /**
-     * Literal larger than this will be stored in temp file.
-     */
-    public static final int LITERAL_KEEP_IN_MEMORY_THRESHOLD = 2 * 1024 * 1024;
-
-    /** Input stream */
-    private final PeekableInputStream mIn;
-
-    private final int mLiteralKeepInMemoryThreshold;
-
-    /** StringBuilder used by readUntil() */
-    private final StringBuilder mBufferReadUntil = new StringBuilder();
-
-    /** StringBuilder used by parseBareString() */
-    private final StringBuilder mParseBareString = new StringBuilder();
-
-    /**
-     * We store all {@link ImapResponse} in it.  {@link #destroyResponses()} must be called from
-     * time to time to destroy them and clear it.
-     */
-    private final ArrayList<ImapResponse> mResponsesToDestroy = new ArrayList<ImapResponse>();
-
-    /**
-     * Exception thrown when we receive BYE.  It derives from IOException, so it'll be treated
-     * in the same way EOF does.
-     */
-    public static class ByeException extends IOException {
-        public static final String MESSAGE = "Received BYE";
-        public ByeException() {
-            super(MESSAGE);
-        }
-    }
-
-    /**
-     * Public constructor for normal use.
-     */
-    public ImapResponseParser(InputStream in) {
-        this(in, LITERAL_KEEP_IN_MEMORY_THRESHOLD);
-    }
-
-    /**
-     * Constructor for testing to override the literal size threshold.
-     */
-    /* package for test */ ImapResponseParser(InputStream in, int literalKeepInMemoryThreshold) {
-        mIn = new PeekableInputStream(in);
-        mLiteralKeepInMemoryThreshold = literalKeepInMemoryThreshold;
-    }
-
-    private static IOException newEOSException() {
-        final String message = "End of stream reached";
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, message);
-        }
-        return new IOException(message);
-    }
-
-    /**
-     * Peek next one byte.
-     *
-     * Throws IOException() if reaches EOF.  As long as logical response lines end with \r\n,
-     * we shouldn't see EOF during parsing.
-     */
-    private int peek() throws IOException {
-        final int next = mIn.peek();
-        if (next == -1) {
-            throw newEOSException();
-        }
-        return next;
-    }
-
-    /**
-     * Read and return one byte from {@link #mIn}, and put it in {@link #mDiscourseLogger}.
-     *
-     * Throws IOException() if reaches EOF.  As long as logical response lines end with \r\n,
-     * we shouldn't see EOF during parsing.
-     */
-    private int readByte() throws IOException {
-        int next = mIn.read();
-        if (next == -1) {
-            throw newEOSException();
-        }
-        return next;
-    }
-
-    /**
-     * Destroy all the {@link ImapResponse}s stored in the internal storage and clear it.
-     *
-     * @see #readResponse()
-     */
-    public void destroyResponses() {
-        for (ImapResponse r : mResponsesToDestroy) {
-            r.destroy();
-        }
-        mResponsesToDestroy.clear();
-    }
-
-    /**
-     * Reads the next response available on the stream and returns an
-     * {@link ImapResponse} object that represents it.
-     *
-     * <p>When this method successfully returns an {@link ImapResponse}, the {@link ImapResponse}
-     * is stored in the internal storage.  When the {@link ImapResponse} is no longer used
-     * {@link #destroyResponses} should be called to destroy all the responses in the array.
-     *
-     * @return the parsed {@link ImapResponse} object.
-     * @exception ByeException when detects BYE.
-     */
-    public ImapResponse readResponse() throws IOException, MessagingException {
-        ImapResponse response = null;
-        try {
-            response = parseResponse();
-            if (Log.isLoggable(TAG, Log.DEBUG)) {
-                Log.d(TAG, "<<< " + response.toString());
-            }
-        } catch (RuntimeException e) {
-            // Parser crash -- log network activities.
-            onParseError(e);
-            throw e;
-        } catch (IOException e) {
-            // Network error, or received an unexpected char.
-            onParseError(e);
-            throw e;
-        }
-
-        // Handle this outside of try-catch.  We don't have to dump protocol log when getting BYE.
-        if (response.is(0, ImapConstants.BYE)) {
-            Log.w(TAG, ByeException.MESSAGE);
-            response.destroy();
-            throw new ByeException();
-        }
-        mResponsesToDestroy.add(response);
-        return response;
-    }
-
-    private void onParseError(Exception e) {
-        // Read a few more bytes, so that the log will contain some more context, even if the parser
-        // crashes in the middle of a response.
-        // This also makes sure the byte in question will be logged, no matter where it crashes.
-        // e.g. when parseAtom() peeks and finds at an unexpected char, it throws an exception
-        // before actually reading it.
-        // However, we don't want to read too much, because then it may get into an email message.
-        try {
-            for (int i = 0; i < 4; i++) {
-                int b = readByte();
-                if (b == -1 || b == '\n') {
-                    break;
-                }
-            }
-        } catch (IOException ignore) {
-        }
-        Log.w(TAG, "Exception detected: " + e.getMessage());
-    }
-
-    /**
-     * Read next byte from stream and throw it away.  If the byte is different from {@code expected}
-     * throw {@link MessagingException}.
-     */
-    /* package for test */ void expect(char expected) throws IOException {
-        final int next = readByte();
-        if (expected != next) {
-            throw new IOException(String.format("Expected %04x (%c) but got %04x (%c)",
-                    (int) expected, expected, next, (char) next));
-        }
-    }
-
-    /**
-     * Read bytes until we find {@code end}, and return all as string.
-     * The {@code end} will be read (rather than peeked) and won't be included in the result.
-     */
-    /* package for test */ String readUntil(char end) throws IOException {
-        mBufferReadUntil.setLength(0);
-        for (;;) {
-            final int ch = readByte();
-            if (ch != end) {
-                mBufferReadUntil.append((char) ch);
-            } else {
-                return mBufferReadUntil.toString();
-            }
-        }
-    }
-
-    /**
-     * Read all bytes until \r\n.
-     */
-    /* package */ String readUntilEol() throws IOException {
-        String ret = readUntil('\r');
-        expect('\n'); // TODO Should this really be error?
-        return ret;
-    }
-
-    /**
-     * Parse and return the response line.
-     */
-    private ImapResponse parseResponse() throws IOException, MessagingException {
-        // We need to destroy the response if we get an exception.
-        // So, we first store the response that's being built in responseToDestroy, until it's
-        // completely built, at which point we copy it into responseToReturn and null out
-        // responseToDestroyt.
-        // If responseToDestroy is not null in finally, we destroy it because that means
-        // we got an exception somewhere.
-        ImapResponse responseToDestroy = null;
-        final ImapResponse responseToReturn;
-
-        try {
-            final int ch = peek();
-            if (ch == '+') { // Continuation request
-                readByte(); // skip +
-                expect(' ');
-                responseToDestroy = new ImapResponse(null, true);
-
-                // If it's continuation request, we don't really care what's in it.
-                responseToDestroy.add(new ImapSimpleString(readUntilEol()));
-
-                // Response has successfully been built.  Let's return it.
-                responseToReturn = responseToDestroy;
-                responseToDestroy = null;
-            } else {
-                // Status response or response data
-                final String tag;
-                if (ch == '*') {
-                    tag = null;
-                    readByte(); // skip *
-                    expect(' ');
-                } else {
-                    tag = readUntil(' ');
-                }
-                responseToDestroy = new ImapResponse(tag, false);
-
-                final ImapString firstString = parseBareString();
-                responseToDestroy.add(firstString);
-
-                // parseBareString won't eat a space after the string, so we need to skip it,
-                // if exists.
-                // If the next char is not ' ', it should be EOL.
-                if (peek() == ' ') {
-                    readByte(); // skip ' '
-
-                    if (responseToDestroy.isStatusResponse()) { // It's a status response
-
-                        // Is there a response code?
-                        final int next = peek();
-                        if (next == '[') {
-                            responseToDestroy.add(parseList('[', ']'));
-                            if (peek() == ' ') { // Skip following space
-                                readByte();
-                            }
-                        }
-
-                        String rest = readUntilEol();
-                        if (!TextUtils.isEmpty(rest)) {
-                            // The rest is free-form text.
-                            responseToDestroy.add(new ImapSimpleString(rest));
-                        }
-                    } else { // It's a response data.
-                        parseElements(responseToDestroy, '\0');
-                    }
-                } else {
-                    expect('\r');
-                    expect('\n');
-                }
-
-                // Response has successfully been built.  Let's return it.
-                responseToReturn = responseToDestroy;
-                responseToDestroy = null;
-            }
-        } finally {
-            if (responseToDestroy != null) {
-                // We get an exception.
-                responseToDestroy.destroy();
-            }
-        }
-
-        return responseToReturn;
-    }
-
-    private ImapElement parseElement() throws IOException, MessagingException {
-        final int next = peek();
-        switch (next) {
-            case '(':
-                return parseList('(', ')');
-            case '[':
-                return parseList('[', ']');
-            case '"':
-                readByte(); // Skip "
-                return new ImapSimpleString(readUntil('"'));
-            case '{':
-                return parseLiteral();
-            case '\r':  // CR
-                readByte(); // Consume \r
-                expect('\n'); // Should be followed by LF.
-                return null;
-            case '\n': // LF // There shouldn't be a bare LF, but just in case.
-                readByte(); // Consume \n
-                return null;
-            default:
-                return parseBareString();
-        }
-    }
-
-    /**
-     * Parses an atom.
-     *
-     * Special case: If an atom contains '[', everything until the next ']' will be considered
-     * a part of the atom.
-     * (e.g. "BODY[HEADER.FIELDS ("DATE" ...)]" will become a single ImapString)
-     *
-     * If the value is "NIL", returns an empty string.
-     */
-    private ImapString parseBareString() throws IOException, MessagingException {
-        mParseBareString.setLength(0);
-        for (;;) {
-            final int ch = peek();
-
-            // TODO Can we clean this up?  (This condition is from the old parser.)
-            if (ch == '(' || ch == ')' || ch == '{' || ch == ' ' ||
-                    // ']' is not part of atom (it's in resp-specials)
-                    ch == ']' ||
-                    // docs claim that flags are \ atom but atom isn't supposed to
-                    // contain
-                    // * and some flags contain *
-                    // ch == '%' || ch == '*' ||
-                    ch == '%' ||
-                    // TODO probably should not allow \ and should recognize
-                    // it as a flag instead
-                    // ch == '"' || ch == '\' ||
-                    ch == '"' || (0x00 <= ch && ch <= 0x1f) || ch == 0x7f) {
-                if (mParseBareString.length() == 0) {
-                    throw new MessagingException("Expected string, none found.");
-                }
-                String s = mParseBareString.toString();
-
-                // NIL will be always converted into the empty string.
-                if (ImapConstants.NIL.equalsIgnoreCase(s)) {
-                    return ImapString.EMPTY;
-                }
-                return new ImapSimpleString(s);
-            } else if (ch == '[') {
-                // Eat all until next ']'
-                mParseBareString.append((char) readByte());
-                mParseBareString.append(readUntil(']'));
-                mParseBareString.append(']'); // readUntil won't include the end char.
-            } else {
-                mParseBareString.append((char) readByte());
-            }
-        }
-    }
-
-    private void parseElements(ImapList list, char end)
-            throws IOException, MessagingException {
-        for (;;) {
-            for (;;) {
-                final int next = peek();
-                if (next == end) {
-                    return;
-                }
-                if (next != ' ') {
-                    break;
-                }
-                // Skip space
-                readByte();
-            }
-            final ImapElement el = parseElement();
-            if (el == null) { // EOL
-                return;
-            }
-            list.add(el);
-        }
-    }
-
-    private ImapList parseList(char opening, char closing)
-            throws IOException, MessagingException {
-        expect(opening);
-        final ImapList list = new ImapList();
-        parseElements(list, closing);
-        expect(closing);
-        return list;
-    }
-
-    private ImapString parseLiteral() throws IOException, MessagingException {
-        expect('{');
-        final int size;
-        try {
-            size = Integer.parseInt(readUntil('}'));
-        } catch (NumberFormatException nfe) {
-            throw new MessagingException("Invalid length in literal");
-        }
-        if (size < 0) {
-            throw new MessagingException("Invalid negative length in literal");
-        }
-        expect('\r');
-        expect('\n');
-        FixedLengthInputStream in = new FixedLengthInputStream(mIn, size);
-        if (size > mLiteralKeepInMemoryThreshold) {
-            return new ImapTempFileLiteral(in);
-        } else {
-            return new ImapMemoryLiteral(in);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java b/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java
deleted file mode 100644
index 3d5263b..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapSimpleString.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-/**
- * Subclass of {@link ImapString} used for non literals.
- */
-public class ImapSimpleString extends ImapString {
-    private final String TAG = "ImapSimpleString";
-    private String mString;
-
-    /* package */  ImapSimpleString(String string) {
-        mString = (string != null) ? string : "";
-    }
-
-    @Override
-    public void destroy() {
-        mString = null;
-        super.destroy();
-    }
-
-    @Override
-    public String getString() {
-        return mString;
-    }
-
-    @Override
-    public InputStream getAsStream() {
-        try {
-            return new ByteArrayInputStream(mString.getBytes("US-ASCII"));
-        } catch (UnsupportedEncodingException e) {
-            Log.e(TAG, "Unsupported encoding: ", e);
-        }
-        return null;
-    }
-
-    @Override
-    public String toString() {
-        // Purposefully not return just mString, in order to prevent using it instead of getString.
-        return "\"" + mString + "\"";
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapString.java b/src/com/android/phone/common/mail/store/imap/ImapString.java
deleted file mode 100644
index f38a993..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapString.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.common.mail.store.imap;
-
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-/**
- * Class represents an IMAP "element" that is not a list.
- *
- * An atom, quoted string, literal, are all represented by this.  Values like OK, STATUS are too.
- * Also, this class class may contain more arbitrary value like "BODY[HEADER.FIELDS ("DATE")]".
- * See {@link ImapResponseParser}.
- */
-public abstract class ImapString extends ImapElement {
-    private static final byte[] EMPTY_BYTES = new byte[0];
-
-    public static final ImapString EMPTY = new ImapString() {
-        @Override public void destroy() {
-            // Don't call super.destroy().
-            // It's a shared object.  We don't want the mDestroyed to be set on this.
-        }
-
-        @Override public String getString() {
-            return "";
-        }
-
-        @Override public InputStream getAsStream() {
-            return new ByteArrayInputStream(EMPTY_BYTES);
-        }
-
-        @Override public String toString() {
-            return "";
-        }
-    };
-
-    // This is used only for parsing IMAP's FETCH ENVELOPE command, in which
-    // en_US-like date format is used like "01-Jan-2009 11:20:39 -0800", so this should be
-    // handled by Locale.US
-    private final static SimpleDateFormat DATE_TIME_FORMAT =
-            new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss Z", Locale.US);
-
-    private boolean mIsInteger;
-    private int mParsedInteger;
-    private Date mParsedDate;
-
-    @Override
-    public final boolean isList() {
-        return false;
-    }
-
-    @Override
-    public final boolean isString() {
-        return true;
-    }
-
-    /**
-     * @return true if and only if the length of the string is larger than 0.
-     *
-     * Note: IMAP NIL is considered an empty string. See {@link ImapResponseParser
-     * #parseBareString}.
-     * On the other hand, a quoted/literal string with value NIL (i.e. "NIL" and {3}\r\nNIL) is
-     * treated literally.
-     */
-    public final boolean isEmpty() {
-        return getString().length() == 0;
-    }
-
-    public abstract String getString();
-
-    public abstract InputStream getAsStream();
-
-    /**
-     * @return whether it can be parsed as a number.
-     */
-    public final boolean isNumber() {
-        if (mIsInteger) {
-            return true;
-        }
-        try {
-            mParsedInteger = Integer.parseInt(getString());
-            mIsInteger = true;
-            return true;
-        } catch (NumberFormatException e) {
-            return false;
-        }
-    }
-
-    /**
-     * @return value parsed as a number.
-     */
-    public final int getNumberOrZero() {
-        if (!isNumber()) {
-            return 0;
-        }
-        return mParsedInteger;
-    }
-
-    /**
-     * @return whether it can be parsed as a date using {@link #DATE_TIME_FORMAT}.
-     */
-    public final boolean isDate() {
-        if (mParsedDate != null) {
-            return true;
-        }
-        if (isEmpty()) {
-            return false;
-        }
-        try {
-            mParsedDate = DATE_TIME_FORMAT.parse(getString());
-            return true;
-        } catch (ParseException e) {
-            Log.w("ImapString", getString() + " can't be parsed as a date.");
-            return false;
-        }
-    }
-
-    /**
-     * @return value it can be parsed as a {@link Date}, or null otherwise.
-     */
-    public final Date getDateOrNull() {
-        if (!isDate()) {
-            return null;
-        }
-        return mParsedDate;
-    }
-
-    /**
-     * @return whether the value case-insensitively equals to {@code s}.
-     */
-    public final boolean is(String s) {
-        if (s == null) {
-            return false;
-        }
-        return getString().equalsIgnoreCase(s);
-    }
-
-
-    /**
-     * @return whether the value case-insensitively starts with {@code s}.
-     */
-    public final boolean startsWith(String prefix) {
-        if (prefix == null) {
-            return false;
-        }
-        final String me = this.getString();
-        if (me.length() < prefix.length()) {
-            return false;
-        }
-        return me.substring(0, prefix.length()).equalsIgnoreCase(prefix);
-    }
-
-    // To force subclasses to implement it.
-    @Override
-    public abstract String toString();
-
-    @Override
-    public final boolean equalsForTest(ImapElement that) {
-        if (!super.equalsForTest(that)) {
-            return false;
-        }
-        ImapString thatString = (ImapString) that;
-        return getString().equals(thatString.getString());
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java b/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java
deleted file mode 100644
index 67d5026..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapTempFileLiteral.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.store.imap;
-
-import com.android.phone.common.mail.FixedLengthInputStream;
-import com.android.phone.common.mail.TempDirectory;
-import com.android.phone.common.mail.utils.Utility;
-import com.android.phone.common.mail.utils.LogUtils;
-
-import org.apache.commons.io.IOUtils;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Subclass of {@link ImapString} used for literals backed by a temp file.
- */
-public class ImapTempFileLiteral extends ImapString {
-    private final String TAG = "ImapTempFileLiteral";
-
-    /* package for test */ final File mFile;
-
-    /** Size is purely for toString() */
-    private final int mSize;
-
-    /* package */  ImapTempFileLiteral(FixedLengthInputStream stream) throws IOException {
-        mSize = stream.getLength();
-        mFile = File.createTempFile("imap", ".tmp", TempDirectory.getTempDirectory());
-
-        // Unfortunately, we can't really use deleteOnExit(), because temp filenames are random
-        // so it'd simply cause a memory leak.
-        // deleteOnExit() simply adds filenames to a static list and the list will never shrink.
-        // mFile.deleteOnExit();
-        OutputStream out = new FileOutputStream(mFile);
-        IOUtils.copy(stream, out);
-        out.close();
-    }
-
-    /**
-     * Make sure we delete the temp file.
-     *
-     * We should always be calling {@link ImapResponse#destroy()}, but it's here as a last resort.
-     */
-    @Override
-    protected void finalize() throws Throwable {
-        try {
-            destroy();
-        } finally {
-            super.finalize();
-        }
-    }
-
-    @Override
-    public InputStream getAsStream() {
-        checkNotDestroyed();
-        try {
-            return new FileInputStream(mFile);
-        } catch (FileNotFoundException e) {
-            // It's probably possible if we're low on storage and the system clears the cache dir.
-            LogUtils.w(TAG, "ImapTempFileLiteral: Temp file not found");
-
-            // Return 0 byte stream as a dummy...
-            return new ByteArrayInputStream(new byte[0]);
-        }
-    }
-
-    @Override
-    public String getString() {
-        checkNotDestroyed();
-        try {
-            byte[] bytes = IOUtils.toByteArray(getAsStream());
-            // Prevent crash from OOM; we've seen this, but only rarely and not reproducibly
-            if (bytes.length > ImapResponseParser.LITERAL_KEEP_IN_MEMORY_THRESHOLD) {
-                throw new IOException();
-            }
-            return Utility.fromAscii(bytes);
-        } catch (IOException e) {
-            LogUtils.w(TAG, "ImapTempFileLiteral: Error while reading temp file", e);
-            return "";
-        }
-    }
-
-    @Override
-    public void destroy() {
-        try {
-            if (!isDestroyed() && mFile.exists()) {
-                mFile.delete();
-            }
-        } catch (RuntimeException re) {
-            // Just log and ignore.
-            LogUtils.w(TAG, "Failed to remove temp file: " + re.getMessage());
-        }
-        super.destroy();
-    }
-
-    @Override
-    public String toString() {
-        return String.format("{%d byte literal(file)}", mSize);
-    }
-
-    public boolean tempFileExistsForTest() {
-        return mFile.exists();
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/store/imap/ImapUtility.java b/src/com/android/phone/common/mail/store/imap/ImapUtility.java
deleted file mode 100644
index 8551d44..0000000
--- a/src/com/android/phone/common/mail/store/imap/ImapUtility.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.store.imap;
-
-import com.android.phone.common.mail.utils.LogUtils;
-
-import java.util.ArrayList;
-
-/**
- * Utility methods for use with IMAP.
- */
-public class ImapUtility {
-    public static final String TAG = "ImapUtility";
-    /**
-     * Apply quoting rules per IMAP RFC,
-     * quoted          = DQUOTE *QUOTED-CHAR DQUOTE
-     * QUOTED-CHAR     = <any TEXT-CHAR except quoted-specials> / "\" quoted-specials
-     * quoted-specials = DQUOTE / "\"
-     *
-     * This is used primarily for IMAP login, but might be useful elsewhere.
-     *
-     * NOTE:  Not very efficient - you may wish to preflight this, or perhaps it should check
-     * for trouble chars before calling the replace functions.
-     *
-     * @param s The string to be quoted.
-     * @return A copy of the string, having undergone quoting as described above
-     */
-    public static String imapQuoted(String s) {
-
-        // First, quote any backslashes by replacing \ with \\
-        // regex Pattern:  \\    (Java string const = \\\\)
-        // Substitute:     \\\\  (Java string const = \\\\\\\\)
-        String result = s.replaceAll("\\\\", "\\\\\\\\");
-
-        // Then, quote any double-quotes by replacing " with \"
-        // regex Pattern:  "    (Java string const = \")
-        // Substitute:     \\"  (Java string const = \\\\\")
-        result = result.replaceAll("\"", "\\\\\"");
-
-        // return string with quotes around it
-        return "\"" + result + "\"";
-    }
-
-    /**
-     * Gets all of the values in a sequence set per RFC 3501. Any ranges are expanded into a
-     * list of individual numbers. If the set is invalid, an empty array is returned.
-     * <pre>
-     * sequence-number = nz-number / "*"
-     * sequence-range  = sequence-number ":" sequence-number
-     * sequence-set    = (sequence-number / sequence-range) *("," sequence-set)
-     * </pre>
-     */
-    public static String[] getImapSequenceValues(String set) {
-        ArrayList<String> list = new ArrayList<String>();
-        if (set != null) {
-            String[] setItems = set.split(",");
-            for (String item : setItems) {
-                if (item.indexOf(':') == -1) {
-                    // simple item
-                    try {
-                        Integer.parseInt(item); // Don't need the value; just ensure it's valid
-                        list.add(item);
-                    } catch (NumberFormatException e) {
-                        LogUtils.d(TAG, "Invalid UID value", e);
-                    }
-                } else {
-                    // range
-                    for (String rangeItem : getImapRangeValues(item)) {
-                        list.add(rangeItem);
-                    }
-                }
-            }
-        }
-        String[] stringList = new String[list.size()];
-        return list.toArray(stringList);
-    }
-
-    /**
-     * Expand the given number range into a list of individual numbers. If the range is not valid,
-     * an empty array is returned.
-     * <pre>
-     * sequence-number = nz-number / "*"
-     * sequence-range  = sequence-number ":" sequence-number
-     * sequence-set    = (sequence-number / sequence-range) *("," sequence-set)
-     * </pre>
-     */
-    public static String[] getImapRangeValues(String range) {
-        ArrayList<String> list = new ArrayList<String>();
-        try {
-            if (range != null) {
-                int colonPos = range.indexOf(':');
-                if (colonPos > 0) {
-                    int first  = Integer.parseInt(range.substring(0, colonPos));
-                    int second = Integer.parseInt(range.substring(colonPos + 1));
-                    if (first < second) {
-                        for (int i = first; i <= second; i++) {
-                            list.add(Integer.toString(i));
-                        }
-                    } else {
-                        for (int i = first; i >= second; i--) {
-                            list.add(Integer.toString(i));
-                        }
-                    }
-                }
-            }
-        } catch (NumberFormatException e) {
-            LogUtils.d(TAG, "Invalid range value", e);
-        }
-        String[] stringList = new String[list.size()];
-        return list.toArray(stringList);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utility/CountingOutputStream.java b/src/com/android/phone/common/mail/utility/CountingOutputStream.java
deleted file mode 100644
index f631c3e..0000000
--- a/src/com/android/phone/common/mail/utility/CountingOutputStream.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.utility;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * A simple pass-thru OutputStream that also counts how many bytes are written to it and
- * makes that count available to callers.
- */
-public class CountingOutputStream extends OutputStream {
-    private long mCount;
-    private final OutputStream mOutputStream;
-
-    public CountingOutputStream(OutputStream outputStream) {
-        mOutputStream = outputStream;
-    }
-
-    public long getCount() {
-        return mCount;
-    }
-
-    @Override
-    public void write(byte[] buffer, int offset, int count) throws IOException {
-        mOutputStream.write(buffer, offset, count);
-        mCount += count;
-    }
-
-    @Override
-    public void write(int oneByte) throws IOException {
-        mOutputStream.write(oneByte);
-        mCount++;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java b/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java
deleted file mode 100644
index 1d55152..0000000
--- a/src/com/android/phone/common/mail/utility/EOLConvertingOutputStream.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.utility;
-
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-public class EOLConvertingOutputStream extends FilterOutputStream {
-    int lastChar;
-
-    public EOLConvertingOutputStream(OutputStream out) {
-        super(out);
-    }
-
-    @Override
-    public void write(int oneByte) throws IOException {
-        if (oneByte == '\n') {
-            if (lastChar != '\r') {
-                super.write('\r');
-            }
-        }
-        super.write(oneByte);
-        lastChar = oneByte;
-    }
-
-    @Override
-    public void flush() throws IOException {
-        if (lastChar == '\r') {
-            super.write('\n');
-            lastChar = '\n';
-        }
-        super.flush();
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utils/LogUtils.java b/src/com/android/phone/common/mail/utils/LogUtils.java
deleted file mode 100644
index 711af9b..0000000
--- a/src/com/android/phone/common/mail/utils/LogUtils.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/**
- * Copyright (c) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.utils;
-
-import android.net.Uri;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.util.List;
-import java.util.regex.Pattern;
-
-public class LogUtils {
-    public static final String TAG = "Email Log";
-
-    // "GMT" + "+" or "-" + 4 digits
-    private static final Pattern DATE_CLEANUP_PATTERN_WRONG_TIMEZONE =
-            Pattern.compile("GMT([-+]\\d{4})$");
-
-    private static final String ACCOUNT_PREFIX = "account:";
-
-    /**
-     * Priority constant for the println method; use LogUtils.v.
-     */
-    public static final int VERBOSE = Log.VERBOSE;
-
-    /**
-     * Priority constant for the println method; use LogUtils.d.
-     */
-    public static final int DEBUG = Log.DEBUG;
-
-    /**
-     * Priority constant for the println method; use LogUtils.i.
-     */
-    public static final int INFO = Log.INFO;
-
-    /**
-     * Priority constant for the println method; use LogUtils.w.
-     */
-    public static final int WARN = Log.WARN;
-
-    /**
-     * Priority constant for the println method; use LogUtils.e.
-     */
-    public static final int ERROR = Log.ERROR;
-
-    /**
-     * Used to enable/disable logging that we don't want included in
-     * production releases.  This should be set to DEBUG for production releases, and VERBOSE for
-     * internal builds.
-     */
-    // STOPSHIP: ship with DEBUG set
-    private static final int MAX_ENABLED_LOG_LEVEL = VERBOSE;
-
-    private static Boolean sDebugLoggingEnabledForTests = null;
-
-    /**
-     * Enable debug logging for unit tests.
-     */
-    @VisibleForTesting
-    public static void setDebugLoggingEnabledForTests(boolean enabled) {
-        setDebugLoggingEnabledForTestsInternal(enabled);
-    }
-
-    protected static void setDebugLoggingEnabledForTestsInternal(boolean enabled) {
-        sDebugLoggingEnabledForTests = Boolean.valueOf(enabled);
-    }
-
-    /**
-     * Returns true if the build configuration prevents debug logging.
-     */
-    @VisibleForTesting
-    public static boolean buildPreventsDebugLogging() {
-        return MAX_ENABLED_LOG_LEVEL > VERBOSE;
-    }
-
-    /**
-     * Returns a boolean indicating whether debug logging is enabled.
-     */
-    protected static boolean isDebugLoggingEnabled(String tag) {
-        if (buildPreventsDebugLogging()) {
-            return false;
-        }
-        if (sDebugLoggingEnabledForTests != null) {
-            return sDebugLoggingEnabledForTests.booleanValue();
-        }
-        return Log.isLoggable(tag, Log.DEBUG) || Log.isLoggable(TAG, Log.DEBUG);
-    }
-
-    /**
-     * Returns a String for the specified content provider uri.  This will do
-     * sanitation of the uri to remove PII if debug logging is not enabled.
-     */
-    public static String contentUriToString(final Uri uri) {
-        return contentUriToString(TAG, uri);
-    }
-
-    /**
-     * Returns a String for the specified content provider uri.  This will do
-     * sanitation of the uri to remove PII if debug logging is not enabled.
-     */
-    public static String contentUriToString(String tag, Uri uri) {
-        if (isDebugLoggingEnabled(tag)) {
-            // Debug logging has been enabled, so log the uri as is
-            return uri.toString();
-        } else {
-            // Debug logging is not enabled, we want to remove the email address from the uri.
-            List<String> pathSegments = uri.getPathSegments();
-
-            Uri.Builder builder = new Uri.Builder()
-                    .scheme(uri.getScheme())
-                    .authority(uri.getAuthority())
-                    .query(uri.getQuery())
-                    .fragment(uri.getFragment());
-
-            // This assumes that the first path segment is the account
-            final String account = pathSegments.get(0);
-
-            builder = builder.appendPath(sanitizeAccountName(account));
-            for (int i = 1; i < pathSegments.size(); i++) {
-                builder.appendPath(pathSegments.get(i));
-            }
-            return builder.toString();
-        }
-    }
-
-    /**
-     * Sanitizes an account name.  If debug logging is not enabled, a sanitized name
-     * is returned.
-     */
-    public static String sanitizeAccountName(String accountName) {
-        if (TextUtils.isEmpty(accountName)) {
-            return "";
-        }
-
-        return ACCOUNT_PREFIX + sanitizeName(TAG, accountName);
-    }
-
-    public static String sanitizeName(final String tag, final String name) {
-        if (TextUtils.isEmpty(name)) {
-            return "";
-        }
-
-        if (isDebugLoggingEnabled(tag)) {
-            return name;
-        }
-
-        return String.valueOf(name.hashCode());
-    }
-
-    /**
-     * Checks to see whether or not a log for the specified tag is loggable at the specified level.
-     */
-    public static boolean isLoggable(String tag, int level) {
-        if (MAX_ENABLED_LOG_LEVEL > level) {
-            return false;
-        }
-        return Log.isLoggable(tag, level) || Log.isLoggable(TAG, level);
-    }
-
-    /**
-     * Send a {@link #VERBOSE} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int v(String tag, String format, Object... args) {
-        if (isLoggable(tag, VERBOSE)) {
-            return Log.v(tag, String.format(format, args));
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #VERBOSE} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int v(String tag, Throwable tr, String format, Object... args) {
-        if (isLoggable(tag, VERBOSE)) {
-            return Log.v(tag, String.format(format, args), tr);
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #DEBUG} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int d(String tag, String format, Object... args) {
-        if (isLoggable(tag, DEBUG)) {
-            return Log.d(tag, String.format(format, args));
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #DEBUG} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int d(String tag, Throwable tr, String format, Object... args) {
-        if (isLoggable(tag, DEBUG)) {
-            return Log.d(tag, String.format(format, args), tr);
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #INFO} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int i(String tag, String format, Object... args) {
-        if (isLoggable(tag, INFO)) {
-            return Log.i(tag, String.format(format, args));
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #INFO} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int i(String tag, Throwable tr, String format, Object... args) {
-        if (isLoggable(tag, INFO)) {
-            return Log.i(tag, String.format(format, args), tr);
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #WARN} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int w(String tag, String format, Object... args) {
-        if (isLoggable(tag, WARN)) {
-            return Log.w(tag, String.format(format, args));
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #WARN} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int w(String tag, Throwable tr, String format, Object... args) {
-        if (isLoggable(tag, WARN)) {
-            return Log.w(tag, String.format(format, args), tr);
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #ERROR} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int e(String tag, String format, Object... args) {
-        if (isLoggable(tag, ERROR)) {
-            return Log.e(tag, String.format(format, args));
-        }
-        return 0;
-    }
-
-    /**
-     * Send a {@link #ERROR} log message.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int e(String tag, Throwable tr, String format, Object... args) {
-        if (isLoggable(tag, ERROR)) {
-            return Log.e(tag, String.format(format, args), tr);
-        }
-        return 0;
-    }
-
-    /**
-     * What a Terrible Failure: Report a condition that should never happen.
-     * The error will always be logged at level ASSERT with the call stack.
-     * Depending on system configuration, a report may be added to the
-     * {@link android.os.DropBoxManager} and/or the process may be terminated
-     * immediately with an error dialog.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int wtf(String tag, String format, Object... args) {
-        return Log.wtf(tag, String.format(format, args), new Error());
-    }
-
-    /**
-     * What a Terrible Failure: Report a condition that should never happen.
-     * The error will always be logged at level ASSERT with the call stack.
-     * Depending on system configuration, a report may be added to the
-     * {@link android.os.DropBoxManager} and/or the process may be terminated
-     * immediately with an error dialog.
-     * @param tag Used to identify the source of a log message.  It usually identifies
-     *        the class or activity where the log call occurs.
-     * @param tr An exception to log
-     * @param format the format string (see {@link java.util.Formatter#format})
-     * @param args
-     *            the list of arguments passed to the formatter. If there are
-     *            more arguments than required by {@code format},
-     *            additional arguments are ignored.
-     */
-    public static int wtf(String tag, Throwable tr, String format, Object... args) {
-        return Log.wtf(tag, String.format(format, args), tr);
-    }
-
-
-    /**
-     * Try to make a date MIME(RFC 2822/5322)-compliant.
-     *
-     * It fixes:
-     * - "Thu, 10 Dec 09 15:08:08 GMT-0700" to "Thu, 10 Dec 09 15:08:08 -0700"
-     *   (4 digit zone value can't be preceded by "GMT")
-     *   We got a report saying eBay sends a date in this format
-     */
-    public static String cleanUpMimeDate(String date) {
-        if (TextUtils.isEmpty(date)) {
-            return date;
-        }
-        date = DATE_CLEANUP_PATTERN_WRONG_TIMEZONE.matcher(date).replaceFirst("$1");
-        return date;
-    }
-
-
-    public static String byteToHex(int b) {
-        return byteToHex(new StringBuilder(), b).toString();
-    }
-
-    public static StringBuilder byteToHex(StringBuilder sb, int b) {
-        b &= 0xFF;
-        sb.append("0123456789ABCDEF".charAt(b >> 4));
-        sb.append("0123456789ABCDEF".charAt(b & 0xF));
-        return sb;
-    }
-
-}
\ No newline at end of file
diff --git a/src/com/android/phone/common/mail/utils/Utility.java b/src/com/android/phone/common/mail/utils/Utility.java
deleted file mode 100644
index d71b25e..0000000
--- a/src/com/android/phone/common/mail/utils/Utility.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Copyright (c) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.phone.common.mail.utils;
-
-import java.io.ByteArrayInputStream;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
-
-/**
- * Simple utility methods used in email functions.
- */
-public class Utility {
-    public static final Charset ASCII = Charset.forName("US-ASCII");
-
-    public static final String[] EMPTY_STRINGS = new String[0];
-
-    /**
-     * Returns a concatenated string containing the output of every Object's
-     * toString() method, each separated by the given separator character.
-     */
-    public static String combine(Object[] parts, char separator) {
-        if (parts == null) {
-            return null;
-        }
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < parts.length; i++) {
-            sb.append(parts[i].toString());
-            if (i < parts.length - 1) {
-                sb.append(separator);
-            }
-        }
-        return sb.toString();
-    }
-
-    /** Converts a String to ASCII bytes */
-    public static byte[] toAscii(String s) {
-        return encode(ASCII, s);
-    }
-
-    /** Builds a String from ASCII bytes */
-    public static String fromAscii(byte[] b) {
-        return decode(ASCII, b);
-    }
-
-    private static byte[] encode(Charset charset, String s) {
-        if (s == null) {
-            return null;
-        }
-        final ByteBuffer buffer = charset.encode(CharBuffer.wrap(s));
-        final byte[] bytes = new byte[buffer.limit()];
-        buffer.get(bytes);
-        return bytes;
-    }
-
-    private static String decode(Charset charset, byte[] b) {
-        if (b == null) {
-            return null;
-        }
-        final CharBuffer cb = charset.decode(ByteBuffer.wrap(b));
-        return new String(cb.array(), 0, cb.length());
-    }
-
-    public static ByteArrayInputStream streamFromAsciiString(String ascii) {
-        return new ByteArrayInputStream(toAscii(ascii));
-    }
-}
diff --git a/src/com/android/phone/otasp/OtaspActivationService.java b/src/com/android/phone/otasp/OtaspActivationService.java
new file mode 100644
index 0000000..158925a
--- /dev/null
+++ b/src/com/android/phone/otasp/OtaspActivationService.java
@@ -0,0 +1,225 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.phone.otasp;
+
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.AsyncResult;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.phone.PhoneGlobals;
+import com.android.phone.PhoneUtils;
+
+import static com.android.phone.PhoneGlobals.getPhone;
+
+/**
+ * otasp activation service handles all logic related with OTASP call.
+ * OTASP is a CDMA-specific feature: OTA or OTASP == Over The Air service provisioning
+ * In practice, in a normal successful OTASP call, events come in as follows:
+ * - SPL_UNLOCKED within a couple of seconds after the call starts
+ * - PRL_DOWNLOADED and MDN_DOWNLOADED and COMMITTED within a span of 2 seconds
+ * - poll cdma subscription from RIL after COMMITTED
+ * - SIM reloading with provisioned MDN and MIN
+ */
+public class OtaspActivationService extends Service {
+    private static final String TAG = OtaspActivationService.class.getSimpleName();
+    private static final boolean DBG = true;
+    /* non-interactive otasp number */
+    private static final String OTASP_NUMBER = "*22899";
+
+    /**
+     * Otasp call follows with SIM reloading which might triggers a retry loop on activation
+     * failure. A max retry limit could help prevent retry loop.
+     */
+    private static final int OTASP_CALL_RETRIES_MAX = 3;
+    private static final int OTASP_CALL_RETRY_PERIOD_IN_MS = 3000;
+    private static int sOtaspCallRetries = 0;
+
+    /* events */
+    private static final int EVENT_CALL_STATE_CHANGED                     = 0;
+    private static final int EVENT_CDMA_OTASP_CALL_RETRY                  = 1;
+    private static final int EVENT_CDMA_PROVISION_STATUS_UPDATE           = 2;
+    private static final int EVENT_SERVICE_STATE_CHANGED                  = 3;
+    private static final int EVENT_START_OTASP_CALL                       = 4;
+
+    /* use iccid to detect hot sim swap */
+    private static String sIccId = null;
+
+    private Phone mPhone;
+    /* committed flag indicates Otasp call succeed */
+    private boolean mIsOtaspCallCommitted = false;
+
+    @Override
+    public void onCreate() {
+        logd("otasp service onCreate");
+        mPhone = PhoneGlobals.getPhone();
+        if ((sIccId == null) || !sIccId.equals(mPhone.getIccSerialNumber())) {
+            // reset to allow activation retry on new sim
+            sIccId = mPhone.getIccSerialNumber();
+            sOtaspCallRetries = 0;
+        }
+        sOtaspCallRetries++;
+        logd("OTASP call tried " + sOtaspCallRetries + " times");
+        if (sOtaspCallRetries > OTASP_CALL_RETRIES_MAX) {
+            logd("OTASP call exceeds max retries => activation failed");
+            updateActivationState(this, false);
+            onComplete();
+            return;
+        }
+        mHandler.sendEmptyMessage(EVENT_START_OTASP_CALL);
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        return START_REDELIVER_INTENT;
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case EVENT_SERVICE_STATE_CHANGED:
+                    logd("EVENT_SERVICE_STATE_CHANGED");
+                    onStartOtaspCall();
+                    break;
+                case EVENT_START_OTASP_CALL:
+                    logd("EVENT_START_OTASP_CALL");
+                    onStartOtaspCall();
+                    break;
+                case EVENT_CALL_STATE_CHANGED:
+                    logd("OTASP_CALL_STATE_CHANGED");
+                    onOtaspCallStateChanged();
+                    break;
+                case EVENT_CDMA_PROVISION_STATUS_UPDATE:
+                    logd("OTASP_ACTIVATION_STATUS_UPDATE_EVENT");
+                    onCdmaProvisionStatusUpdate((AsyncResult) msg.obj);
+                    break;
+                case EVENT_CDMA_OTASP_CALL_RETRY:
+                    logd("EVENT_CDMA_OTASP_CALL_RETRY");
+                    onStartOtaspCall();
+                    break;
+                default:
+                    loge("invalid msg: " + msg.what + " not handled.");
+            }
+        }
+    };
+
+    /**
+     * Starts the OTASP call without any UI.
+     * platform only support background non-interactive otasp call, but users could still dial
+     * interactive OTASP number through dialer if carrier allows (some carrier will
+     * explicitly block any outgoing *288XX number).
+     */
+    private void onStartOtaspCall() {
+        unregisterAll();
+        if (mPhone.getServiceState().getState() != ServiceState.STATE_IN_SERVICE) {
+            loge("OTASP call failure, wait for network available.");
+            mPhone.registerForServiceStateChanged(mHandler, EVENT_SERVICE_STATE_CHANGED, null);
+            return;
+        }
+        // otasp call follows with CDMA OTA PROVISION STATUS update which signals activation result
+        mPhone.registerForCdmaOtaStatusChange(mHandler, EVENT_CDMA_PROVISION_STATUS_UPDATE, null);
+        mPhone.registerForPreciseCallStateChanged(mHandler, EVENT_CALL_STATE_CHANGED, null);
+        logd("startNonInteractiveOtasp: placing call to '" + OTASP_NUMBER + "'...");
+        int callStatus = PhoneUtils.placeCall(this,
+                getPhone(),
+                OTASP_NUMBER,
+                null,   // contactRef
+                false); // isEmergencyCall
+        if (callStatus == PhoneUtils.CALL_STATUS_DIALED) {
+            if (DBG) logd("  ==> success return from placeCall(): callStatus = " + callStatus);
+        } else {
+            loge(" ==> failure return from placeCall(): callStatus = " + callStatus);
+            mHandler.sendEmptyMessageDelayed(EVENT_CDMA_OTASP_CALL_RETRY,
+                    OTASP_CALL_RETRY_PERIOD_IN_MS);
+        }
+    }
+
+    /**
+     * register for cdma ota provision status
+     * see RIL_CDMA_OTA_ProvisionStatus in include/telephony/ril.h
+     */
+    private void onCdmaProvisionStatusUpdate(AsyncResult r) {
+        int[] otaStatus = (int[]) r.result;
+        logd("onCdmaProvisionStatusUpdate: " + otaStatus[0]);
+        if (Phone.CDMA_OTA_PROVISION_STATUS_COMMITTED == otaStatus[0]) {
+            mIsOtaspCallCommitted = true;
+        }
+    }
+
+    /**
+     * update activation state upon call disconnected.
+     * check the mIsOtaspCallCommitted bit, and if that's true it means that activation
+     * was successful.
+     */
+    private void onOtaspCallStateChanged() {
+        logd("onOtaspCallStateChanged: " + mPhone.getState());
+        if (mPhone.getState().equals(PhoneConstants.State.IDLE)) {
+            if (mIsOtaspCallCommitted) {
+                logd("Otasp activation succeed");
+                updateActivationState(this, true);
+            } else {
+                logd("Otasp activation failed");
+                updateActivationState(this, false);
+            }
+            onComplete();
+        }
+    }
+
+    private void onComplete() {
+        logd("otasp service onComplete");
+        unregisterAll();
+        stopSelf();
+    }
+
+    private void unregisterAll() {
+        mPhone.unregisterForCdmaOtaStatusChange(mHandler);
+        mPhone.unregisterForSubscriptionInfoReady(mHandler);
+        mPhone.unregisterForServiceStateChanged(mHandler);
+        mPhone.unregisterForPreciseCallStateChanged(mHandler);
+        mHandler.removeCallbacksAndMessages(null);
+    }
+
+    public static void updateActivationState(Context context, boolean success) {
+        final TelephonyManager mTelephonyMgr = TelephonyManager.from(context);
+        int state = (success) ? TelephonyManager.SIM_ACTIVATION_STATE_ACTIVATED :
+                TelephonyManager.SIM_ACTIVATION_STATE_DEACTIVATED;
+        int subId = SubscriptionManager.getDefaultSubscriptionId();
+        mTelephonyMgr.setVoiceActivationState(subId, state);
+        mTelephonyMgr.setDataActivationState(subId, state);
+    }
+
+    private static void logd(String s) {
+        android.util.Log.d(TAG, s);
+    }
+
+    private static void loge(String s) {
+        android.util.Log.e(TAG, s);
+    }
+}
diff --git a/src/com/android/phone/otasp/OtaspSimStateReceiver.java b/src/com/android/phone/otasp/OtaspSimStateReceiver.java
new file mode 100644
index 0000000..213aa9f
--- /dev/null
+++ b/src/com/android/phone/otasp/OtaspSimStateReceiver.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.phone.otasp;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.PersistableBundle;
+import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import com.android.internal.telephony.Phone;
+import com.android.phone.PhoneGlobals;
+
+public class OtaspSimStateReceiver extends BroadcastReceiver {
+    private static final String TAG = OtaspSimStateReceiver.class.getSimpleName();
+    private static final boolean DBG = true;
+    private Context mContext;
+
+    private PhoneStateListener mPhoneStateListener = new PhoneStateListener(){
+        @Override
+        public void onOtaspChanged(int otaspMode) {
+            logd("onOtaspChanged: otaspMode=" + otaspMode);
+            if (otaspMode == TelephonyManager.OTASP_NEEDED) {
+                logd("otasp activation required, start otaspActivationService");
+                mContext.startService(new Intent(mContext, OtaspActivationService.class));
+            } else if (otaspMode == TelephonyManager.OTASP_NOT_NEEDED) {
+                OtaspActivationService.updateActivationState(mContext, true);
+            }
+        }
+    };
+
+    /**
+     * check if OTA service provisioning activation is supported by the current carrier
+     * @return true if otasp activation is needed, false otherwise
+     */
+    private static boolean isCarrierSupported() {
+        final Phone phone = PhoneGlobals.getPhone();
+        final Context context = phone.getContext();
+        if (context != null) {
+            PersistableBundle b = null;
+            final CarrierConfigManager configManager = (CarrierConfigManager) context
+                    .getSystemService(Context.CARRIER_CONFIG_SERVICE);
+            if (configManager != null) {
+                b = configManager.getConfig();
+            }
+            if (b != null && b.getBoolean(
+                    CarrierConfigManager.KEY_USE_OTASP_FOR_PROVISIONING_BOOL)) {
+                return true;
+            }
+        }
+        logd("otasp activation not needed: no supported carrier");
+        return false;
+    }
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        mContext = context;
+        if(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(intent.getAction())) {
+            if (DBG) logd("Received intent: " + intent.getAction());
+            if (PhoneGlobals.getPhone().getIccRecordsLoaded() && isCarrierSupported()) {
+                final TelephonyManager telephonyManager = TelephonyManager.from(context);
+                telephonyManager.listen(mPhoneStateListener,
+                        PhoneStateListener.LISTEN_OTASP_CHANGED);
+            }
+        }
+    }
+
+    private static void logd(String s) {
+        Log.d(TAG, s);
+    }
+}
+
diff --git a/src/com/android/phone/settings/AccessibilitySettingsFragment.java b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
index d5a613b..af7d4bf 100644
--- a/src/com/android/phone/settings/AccessibilitySettingsFragment.java
+++ b/src/com/android/phone/settings/AccessibilitySettingsFragment.java
@@ -19,21 +19,21 @@
 import android.content.Context;
 import android.media.AudioManager;
 import android.os.Bundle;
-import android.preference.CheckBoxPreference;
+import android.preference.SwitchPreference;
 import android.preference.Preference;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
-import android.telecom.TelecomManager;
 import android.telephony.CarrierConfigManager;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
 import com.android.ims.ImsManager;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.R;
-import com.android.phone.settings.TtyModeListPreference;
 
 public class AccessibilitySettingsFragment extends PreferenceFragment {
     private static final String LOG_TAG = AccessibilitySettingsFragment.class.getSimpleName();
@@ -54,7 +54,10 @@
             if (DBG) Log.d(LOG_TAG, "PhoneStateListener.onCallStateChanged: state=" + state);
             Preference pref = getPreferenceScreen().findPreference(BUTTON_TTY_KEY);
             if (pref != null) {
-                pref.setEnabled(state == TelephonyManager.CALL_STATE_IDLE);
+                final boolean isVolteTtySupported = ImsManager.isVolteEnabledByPlatform(mContext)
+                        && getVolteTtySupported();
+                pref.setEnabled((isVolteTtySupported && !isVideoCallOrConferenceInProgress()) ||
+                        (state == TelephonyManager.CALL_STATE_IDLE));
             }
         }
     };
@@ -63,7 +66,7 @@
     private AudioManager mAudioManager;
 
     private TtyModeListPreference mButtonTty;
-    private CheckBoxPreference mButtonHac;
+    private SwitchPreference mButtonHac;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -76,7 +79,7 @@
 
         mButtonTty = (TtyModeListPreference) findPreference(
                 getResources().getString(R.string.tty_mode_key));
-        mButtonHac = (CheckBoxPreference) findPreference(BUTTON_HAC_KEY);
+        mButtonHac = (SwitchPreference) findPreference(BUTTON_HAC_KEY);
 
         if (PhoneGlobals.getInstance().phoneMgr.isTtyModeSupported()) {
             mButtonTty.init();
@@ -98,23 +101,17 @@
     @Override
     public void onResume() {
         super.onResume();
-
-        if (ImsManager.isVolteEnabledByPlatform(mContext) && !getVolteTtySupported()) {
-            TelephonyManager tm =
-                    (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
-            tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
-        }
+        TelephonyManager tm =
+                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+        tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
     }
 
     @Override
     public void onPause() {
         super.onPause();
-
-        if (ImsManager.isVolteEnabledByPlatform(mContext) && !getVolteTtySupported()) {
-            TelephonyManager tm =
-                    (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
-            tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
-        }
+        TelephonyManager tm =
+                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+        tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
     }
 
     @Override
@@ -142,4 +139,19 @@
         return configManager.getConfig().getBoolean(
                 CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL);
     }
+
+    private boolean isVideoCallOrConferenceInProgress() {
+        final Phone[] phones = PhoneFactory.getPhones();
+        if (phones == null) {
+            if (DBG) Log.d(LOG_TAG, "isVideoCallOrConferenceInProgress: No phones found.");
+            return false;
+        }
+
+        for (Phone phone : phones) {
+            if (phone.isImsVideoCallOrConferencePresent()) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/phone/settings/AccountSelectionPreference.java b/src/com/android/phone/settings/AccountSelectionPreference.java
index 6872a16..58072d9 100644
--- a/src/com/android/phone/settings/AccountSelectionPreference.java
+++ b/src/com/android/phone/settings/AccountSelectionPreference.java
@@ -26,8 +26,10 @@
 import android.os.UserHandle;
 import android.preference.ListPreference;
 import android.preference.Preference;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 
 import java.util.List;
@@ -82,11 +84,16 @@
         int selectedIndex = mAccounts.length;  // Points to nullSelectionString by default
         int i = 0;
         for ( ; i < mAccounts.length; i++) {
-            CharSequence label = telecomManager.getPhoneAccount(mAccounts[i]).getLabel();
+            PhoneAccount account = telecomManager.getPhoneAccount(mAccounts[i]);
+            CharSequence label = account.getLabel();
             if (label != null) {
                 label = pm.getUserBadgedLabel(label, mAccounts[i].getUserHandle());
             }
-            mEntries[i] = label == null ? null : label.toString();
+            boolean isSimAccount =
+                    account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+            mEntries[i] = (TextUtils.isEmpty(label) && isSimAccount)
+                    ? mContext.getString(R.string.phone_accounts_default_account_label)
+                    : String.valueOf(label);
             mEntryValues[i] = Integer.toString(i);
             if (Objects.equals(currentSelection, mAccounts[i])) {
                 selectedIndex = i;
diff --git a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
index c08b32a..670f98d 100644
--- a/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
+++ b/src/com/android/phone/settings/PhoneAccountSettingsFragment.java
@@ -7,11 +7,12 @@
 import android.graphics.drawable.Icon;
 import android.net.sip.SipManager;
 import android.os.Bundle;
-import android.preference.CheckBoxPreference;
+import android.os.UserManager;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
+import android.preference.SwitchPreference;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -26,7 +27,7 @@
 import com.android.phone.R;
 import com.android.phone.SubscriptionInfoHelper;
 import com.android.services.telephony.sip.SipAccountRegistry;
-import com.android.services.telephony.sip.SipSharedPreferences;
+import com.android.services.telephony.sip.SipPreferences;
 import com.android.services.telephony.sip.SipUtil;
 
 import java.util.ArrayList;
@@ -72,8 +73,8 @@
     private AccountSelectionPreference mDefaultOutgoingAccount;
 
     private ListPreference mUseSipCalling;
-    private CheckBoxPreference mSipReceiveCallsPreference;
-    private SipSharedPreferences mSipSharedPreferences;
+    private SwitchPreference mSipReceiveCallsPreference;
+    private SipPreferences mSipPreferences;
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -150,8 +151,8 @@
             getPreferenceScreen().removePreference(mAccountList);
         }
 
-        if (SipUtil.isVoipSupported(getActivity())) {
-            mSipSharedPreferences = new SipSharedPreferences(getActivity());
+        if (isPrimaryUser() && SipUtil.isVoipSupported(getActivity())) {
+            mSipPreferences = new SipPreferences(getActivity());
 
             mUseSipCalling = (ListPreference)
                     getPreferenceScreen().findPreference(USE_SIP_PREF_KEY);
@@ -161,22 +162,22 @@
             mUseSipCalling.setOnPreferenceChangeListener(this);
 
             int optionsValueIndex =
-                    mUseSipCalling.findIndexOfValue(mSipSharedPreferences.getSipCallOption());
+                    mUseSipCalling.findIndexOfValue(mSipPreferences.getSipCallOption());
             if (optionsValueIndex == -1) {
                 // If the option is invalid (eg. deprecated value), default to SIP_ADDRESS_ONLY.
-                mSipSharedPreferences.setSipCallOption(
+                mSipPreferences.setSipCallOption(
                         getResources().getString(R.string.sip_address_only));
                 optionsValueIndex =
-                        mUseSipCalling.findIndexOfValue(mSipSharedPreferences.getSipCallOption());
+                        mUseSipCalling.findIndexOfValue(mSipPreferences.getSipCallOption());
             }
             mUseSipCalling.setValueIndex(optionsValueIndex);
             mUseSipCalling.setSummary(mUseSipCalling.getEntry());
 
-            mSipReceiveCallsPreference = (CheckBoxPreference)
+            mSipReceiveCallsPreference = (SwitchPreference)
                     getPreferenceScreen().findPreference(SIP_RECEIVE_CALLS_PREF_KEY);
             mSipReceiveCallsPreference.setEnabled(SipUtil.isPhoneIdle(getActivity()));
             mSipReceiveCallsPreference.setChecked(
-                    mSipSharedPreferences.isReceivingCallsEnabled());
+                    mSipPreferences.isReceivingCallsEnabled());
             mSipReceiveCallsPreference.setOnPreferenceChangeListener(this);
         } else {
             getPreferenceScreen().removePreference(
@@ -195,7 +196,7 @@
     public boolean onPreferenceChange(Preference pref, Object objValue) {
         if (pref == mUseSipCalling) {
             String option = objValue.toString();
-            mSipSharedPreferences.setSipCallOption(option);
+            mSipPreferences.setSipCallOption(option);
             mUseSipCalling.setValueIndex(mUseSipCalling.findIndexOfValue(option));
             mUseSipCalling.setSummary(mUseSipCalling.getEntry());
             return true;
@@ -249,7 +250,7 @@
             return;
         }
 
-        mSipSharedPreferences.setReceivingCallsEnabled(isEnabled);
+        mSipPreferences.setReceivingCallsEnabled(isEnabled);
 
         SipUtil.useSipToReceiveIncomingCalls(context, isEnabled);
 
@@ -305,6 +306,14 @@
                     retval = isSim1 ? -1 : 1;
                 }
 
+                int subId1 = mTelephonyManager.getSubIdForPhoneAccount(account1);
+                int subId2 = mTelephonyManager.getSubIdForPhoneAccount(account2);
+                if (subId1 != SubscriptionManager.INVALID_SUBSCRIPTION_ID &&
+                        subId2 != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                    retval = (mSubscriptionManager.getSlotIndex(subId1) <
+                        mSubscriptionManager.getSlotIndex(subId2)) ? -1 : 1;
+                }
+
                 // Then order by package
                 if (retval == 0) {
                     String pkg1 = account1.getAccountHandle().getComponentName().getPackageName();
@@ -356,7 +365,11 @@
 
             // Create the preference & add the label
             Preference accountPreference = new Preference(getActivity());
-            accountPreference.setTitle(account.getLabel());
+            CharSequence accountLabel = account.getLabel();
+            boolean isSimAccount =
+                    account.hasCapabilities(PhoneAccount.CAPABILITY_SIM_SUBSCRIPTION);
+            accountPreference.setTitle((TextUtils.isEmpty(accountLabel) && isSimAccount)
+                    ? getString(R.string.phone_accounts_default_account_label) : accountLabel);
 
             // Add an icon.
             Icon icon = account.getIcon();
@@ -450,4 +463,13 @@
 
         return intent;
     }
+
+    /**
+     * @return Whether the current user is the primary user.
+     */
+    private boolean isPrimaryUser() {
+        final UserManager userManager = (UserManager) getActivity()
+                .getSystemService(Context.USER_SERVICE);
+        return userManager.isPrimaryUser();
+    }
 }
diff --git a/src/com/android/phone/settings/TtyModeListPreference.java b/src/com/android/phone/settings/TtyModeListPreference.java
index e8ef099..89cac47 100644
--- a/src/com/android/phone/settings/TtyModeListPreference.java
+++ b/src/com/android/phone/settings/TtyModeListPreference.java
@@ -51,8 +51,7 @@
     @Override
     public boolean onPreferenceChange(Preference preference, Object objValue) {
         if (preference == this) {
-            int buttonTtyMode;
-            buttonTtyMode = Integer.valueOf((String) objValue).intValue();
+            int buttonTtyMode = Integer.parseInt((String) objValue);
             int settingsTtyMode = android.provider.Settings.Secure.getInt(
                     getContext().getContentResolver(),
                     Settings.Secure.PREFERRED_TTY_MODE,
diff --git a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java b/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
deleted file mode 100644
index 888a5f9..0000000
--- a/src/com/android/phone/settings/VisualVoicemailSettingsUtil.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.settings;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
-import android.telecom.PhoneAccountHandle;
-
-import com.android.internal.telephony.Phone;
-import com.android.phone.PhoneUtils;
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.phone.vvm.omtp.sms.StatusMessage;
-
-/**
- * Save visual voicemail login values and whether or not a particular account is enabled in shared
- * preferences to be retrieved later.
- * Because a voicemail source is tied 1:1 to a phone account, the phone account handle is used in
- * the key for each voicemail source and the associated data.
- */
-public class VisualVoicemailSettingsUtil {
-    private static final String VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX =
-            "visual_voicemail_";
-
-    private static final String IS_ENABLED_KEY = "is_enabled";
-    // If a carrier vvm app is installed, Google visual voicemail is automatically switched off
-    // however, the user can override this setting.
-    private static final String IS_USER_SET = "is_user_set";
-    // Record the timestamp of the last full sync so that duplicate syncs can be reduced.
-    private static final String LAST_FULL_SYNC_TIMESTAMP = "last_full_sync_timestamp";
-    // Constant indicating that there has never been a full sync.
-    public static final long NO_PRIOR_FULL_SYNC = -1;
-
-    // Setting for how often retries should be done.
-    private static final String SYNC_RETRY_INTERVAL = "sync_retry_interval";
-    private static final long MAX_SYNC_RETRY_INTERVAL_MS = 86400000;   // 24 hours
-    private static final long DEFAULT_SYNC_RETRY_INTERVAL_MS = 900000; // 15 minutes
-
-
-    public static void setVisualVoicemailEnabled(Phone phone, boolean isEnabled,
-            boolean isUserSet) {
-        setVisualVoicemailEnabled(phone.getContext(), PhoneUtils.makePstnPhoneAccountHandle(phone),
-                isEnabled, isUserSet);
-    }
-
-    public static void setVisualVoicemailEnabled(Context context, PhoneAccountHandle phoneAccount,
-            boolean isEnabled, boolean isUserSet) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        SharedPreferences.Editor editor = prefs.edit();
-        editor.putBoolean(
-                getVisualVoicemailSharedPrefsKey(IS_ENABLED_KEY, phoneAccount), isEnabled);
-        editor.putBoolean(
-                getVisualVoicemailSharedPrefsKey(IS_USER_SET, phoneAccount),
-                isUserSet);
-        editor.commit();
-    }
-
-    public static boolean isVisualVoicemailEnabled(Context context,
-            PhoneAccountHandle phoneAccount) {
-        if (phoneAccount == null) {
-            return false;
-        }
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getBoolean(getVisualVoicemailSharedPrefsKey(IS_ENABLED_KEY, phoneAccount),
-                false);
-    }
-
-    public static boolean isVisualVoicemailEnabled(Phone phone) {
-        return isVisualVoicemailEnabled(phone.getContext(),
-                PhoneUtils.makePstnPhoneAccountHandle(phone));
-    }
-
-    /**
-     * Differentiate user-enabled/disabled to know whether to ignore automatic enabling and
-     * disabling by the system. This is relevant when a carrier vvm app is installed and the user
-     * manually enables dialer visual voicemail. In that case we would want that setting to persist.
-     */
-    public static boolean isVisualVoicemailUserSet(Context context,
-            PhoneAccountHandle phoneAccount) {
-        if (phoneAccount == null) {
-            return false;
-        }
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getBoolean(
-                getVisualVoicemailSharedPrefsKey(IS_USER_SET, phoneAccount),
-                false);
-    }
-
-    public static void setVisualVoicemailCredentialsFromStatusMessage(Context context,
-            PhoneAccountHandle phoneAccount, StatusMessage message) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        SharedPreferences.Editor editor = prefs.edit();
-
-        editor.putString(
-                getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_PORT, phoneAccount),
-                message.getImapPort());
-        editor.putString(
-                getVisualVoicemailSharedPrefsKey(OmtpConstants.SERVER_ADDRESS, phoneAccount),
-                message.getServerAddress());
-        editor.putString(
-                getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_USER_NAME, phoneAccount),
-                message.getImapUserName());
-        editor.putString(
-                getVisualVoicemailSharedPrefsKey(OmtpConstants.IMAP_PASSWORD, phoneAccount),
-                message.getImapPassword());
-        editor.commit();
-    }
-
-    public static String getVisualVoicemailCredentials(Context context, String key,
-            PhoneAccountHandle phoneAccount) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getString(getVisualVoicemailSharedPrefsKey(key, phoneAccount), null);
-    }
-
-    public static long getVisualVoicemailRetryInterval(Context context,
-            PhoneAccountHandle phoneAccount) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getLong(getVisualVoicemailSharedPrefsKey(SYNC_RETRY_INTERVAL, phoneAccount),
-                DEFAULT_SYNC_RETRY_INTERVAL_MS);
-    }
-
-    public static void resetVisualVoicemailRetryInterval(Context context,
-            PhoneAccountHandle phoneAccount) {
-        setVisualVoicemailRetryInterval(context, phoneAccount, DEFAULT_SYNC_RETRY_INTERVAL_MS);
-    }
-
-    public static void setVisualVoicemailRetryInterval(Context context,
-            PhoneAccountHandle phoneAccount, long interval) {
-        SharedPreferences.Editor editor =
-                PreferenceManager.getDefaultSharedPreferences(context).edit();
-        editor.putLong(getVisualVoicemailSharedPrefsKey(SYNC_RETRY_INTERVAL, phoneAccount),
-                Math.min(interval, MAX_SYNC_RETRY_INTERVAL_MS));
-        editor.commit();
-    }
-
-    public static void setVisualVoicemailLastFullSyncTime(Context context,
-            PhoneAccountHandle phoneAccount, long timestamp) {
-        SharedPreferences.Editor editor =
-                PreferenceManager.getDefaultSharedPreferences(context).edit();
-        editor.putLong(getVisualVoicemailSharedPrefsKey(LAST_FULL_SYNC_TIMESTAMP, phoneAccount),
-                timestamp);
-        editor.commit();
-
-    }
-
-    public static long getVisualVoicemailLastFullSyncTime(Context context,
-            PhoneAccountHandle phoneAccount) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        return prefs.getLong(
-                getVisualVoicemailSharedPrefsKey(LAST_FULL_SYNC_TIMESTAMP, phoneAccount),
-                NO_PRIOR_FULL_SYNC);
-    }
-
-    private static String getVisualVoicemailSharedPrefsKey(String key,
-            PhoneAccountHandle phoneAccount) {
-        return VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX + key + "_" + phoneAccount.getId();
-    }
-}
diff --git a/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java b/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java
deleted file mode 100644
index 9654ea7..0000000
--- a/src/com/android/phone/settings/VoicemailNotificationSettingsUtil.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.settings;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.preference.PreferenceManager;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-
-import com.android.internal.telephony.Phone;
-import com.android.phone.R;
-
-public class VoicemailNotificationSettingsUtil {
-    private static final String VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY_PREFIX =
-            "voicemail_notification_ringtone_";
-    private static final String VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY_PREFIX =
-            "voicemail_notification_vibrate_";
-
-    // Old voicemail notification vibration string constants used for migration.
-    private static final String OLD_VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY =
-            "button_voicemail_notification_ringtone_key";
-    private static final String OLD_VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY =
-            "button_voicemail_notification_vibrate_key";
-    private static final String OLD_VOICEMAIL_VIBRATE_WHEN_SHARED_PREFS_KEY =
-            "button_voicemail_notification_vibrate_when_key";
-    private static final String OLD_VOICEMAIL_RINGTONE_SHARED_PREFS_KEY =
-            "button_voicemail_notification_ringtone_key";
-    private static final String OLD_VOICEMAIL_VIBRATION_ALWAYS = "always";
-    private static final String OLD_VOICEMAIL_VIBRATION_NEVER = "never";
-
-    public static void setVibrationEnabled(Phone phone, boolean isEnabled) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        SharedPreferences.Editor editor = prefs.edit();
-        editor.putBoolean(getVoicemailVibrationSharedPrefsKey(phone), isEnabled);
-        editor.commit();
-    }
-
-    public static boolean isVibrationEnabled(Phone phone) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        migrateVoicemailVibrationSettingsIfNeeded(phone, prefs);
-        return prefs.getBoolean(getVoicemailVibrationSharedPrefsKey(phone), false /* defValue */);
-    }
-
-   public static void setRingtoneUri(Phone phone, Uri ringtoneUri) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        String ringtoneUriStr = ringtoneUri != null ? ringtoneUri.toString() : "";
-
-        SharedPreferences.Editor editor = prefs.edit();
-        editor.putString(getVoicemailRingtoneSharedPrefsKey(phone), ringtoneUriStr);
-        editor.commit();
-    }
-
-    public static Uri getRingtoneUri(Phone phone) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(phone.getContext());
-        migrateVoicemailRingtoneSettingsIfNeeded(phone, prefs);
-        String uriString = prefs.getString(
-                getVoicemailRingtoneSharedPrefsKey(phone),
-                Settings.System.DEFAULT_NOTIFICATION_URI.toString());
-        return !TextUtils.isEmpty(uriString) ? Uri.parse(uriString) : null;
-    }
-
-    /**
-     * Migrate voicemail settings from {@link #OLD_VIBRATE_WHEN_KEY} or
-     * {@link #OLD_VOICEMAIL_NOTIFICATION_VIBRATE_KEY}.
-     *
-     * TODO: Add helper which migrates settings from old version to new version.
-     */
-    private static void migrateVoicemailVibrationSettingsIfNeeded(
-            Phone phone, SharedPreferences prefs) {
-        String key = getVoicemailVibrationSharedPrefsKey(phone);
-        TelephonyManager telephonyManager = TelephonyManager.from(phone.getContext());
-
-        // Skip if a preference exists, or if phone is MSIM.
-        if (prefs.contains(key) || telephonyManager.getPhoneCount() != 1) {
-            return;
-        }
-
-        if (prefs.contains(OLD_VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY)) {
-            boolean voicemailVibrate = prefs.getBoolean(
-                    OLD_VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY, false /* defValue */);
-
-            SharedPreferences.Editor editor = prefs.edit();
-            editor.putBoolean(key, voicemailVibrate)
-                    .remove(OLD_VOICEMAIL_VIBRATE_WHEN_SHARED_PREFS_KEY)
-                    .commit();
-        }
-
-        if (prefs.contains(OLD_VOICEMAIL_VIBRATE_WHEN_SHARED_PREFS_KEY)) {
-            // If vibrateWhen is always, then voicemailVibrate should be true.
-            // If it is "only in silent mode", or "never", then voicemailVibrate should be false.
-            String vibrateWhen = prefs.getString(
-                    OLD_VOICEMAIL_VIBRATE_WHEN_SHARED_PREFS_KEY, OLD_VOICEMAIL_VIBRATION_NEVER);
-            boolean voicemailVibrate = vibrateWhen.equals(OLD_VOICEMAIL_VIBRATION_ALWAYS);
-
-            SharedPreferences.Editor editor = prefs.edit();
-            editor.putBoolean(key, voicemailVibrate)
-                    .remove(OLD_VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY)
-                    .commit();
-        }
-    }
-
-    /**
-     * Migrate voicemail settings from OLD_VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY.
-     *
-     * TODO: Add helper which migrates settings from old version to new version.
-     */
-    private static void migrateVoicemailRingtoneSettingsIfNeeded(
-            Phone phone, SharedPreferences prefs) {
-        String key = getVoicemailRingtoneSharedPrefsKey(phone);
-        TelephonyManager telephonyManager = TelephonyManager.from(phone.getContext());
-
-        // Skip if a preference exists, or if phone is MSIM.
-        if (prefs.contains(key) || telephonyManager.getPhoneCount() != 1) {
-            return;
-        }
-
-        if (prefs.contains(OLD_VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY)) {
-            String uriString = prefs.getString(
-                    OLD_VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY, null /* defValue */);
-
-            SharedPreferences.Editor editor = prefs.edit();
-            editor.putString(key, uriString)
-                    .remove(OLD_VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY)
-                    .commit();
-        }
-    }
-
-    private static String getVoicemailVibrationSharedPrefsKey(Phone phone) {
-        return VOICEMAIL_NOTIFICATION_VIBRATION_SHARED_PREFS_KEY_PREFIX + phone.getSubId();
-    }
-
-    public static String getVoicemailRingtoneSharedPrefsKey(Phone phone) {
-        return VOICEMAIL_NOTIFICATION_RINGTONE_SHARED_PREFS_KEY_PREFIX + phone.getSubId();
-    }
-}
diff --git a/src/com/android/phone/settings/VoicemailRingtonePreference.java b/src/com/android/phone/settings/VoicemailRingtonePreference.java
deleted file mode 100644
index 4ee4e64..0000000
--- a/src/com/android/phone/settings/VoicemailRingtonePreference.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.android.phone.settings;
-
-import android.content.Context;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.preference.Preference;
-import android.preference.RingtonePreference;
-import android.util.AttributeSet;
-
-import com.android.internal.telephony.Phone;
-import com.android.phone.common.util.SettingsUtil;
-
-/**
- * Looks up the voicemail ringtone's name asynchronously and updates the preference's summary when
- * it is created or updated.
- */
-public class VoicemailRingtonePreference extends RingtonePreference {
-    private static final int MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY = 1;
-
-    private Runnable mVoicemailRingtoneLookupRunnable;
-    private Handler mVoicemailRingtoneLookupComplete;
-
-    private Phone mPhone;
-
-    public VoicemailRingtonePreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        mVoicemailRingtoneLookupComplete = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                switch (msg.what) {
-                    case MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY:
-                        setSummary((CharSequence) msg.obj);
-                        break;
-                }
-            }
-        };
-    }
-
-    public void init(Phone phone) {
-        mPhone = phone;
-
-        // Requesting the ringtone will trigger migration if necessary.
-        VoicemailNotificationSettingsUtil.getRingtoneUri(phone);
-
-        final Preference preference = this;
-        final String preferenceKey =
-                VoicemailNotificationSettingsUtil.getVoicemailRingtoneSharedPrefsKey(mPhone);
-        mVoicemailRingtoneLookupRunnable = new Runnable() {
-            @Override
-            public void run() {
-                SettingsUtil.updateRingtoneName(
-                        preference.getContext(),
-                        mVoicemailRingtoneLookupComplete,
-                        RingtoneManager.TYPE_NOTIFICATION,
-                        preferenceKey,
-                        MSG_UPDATE_VOICEMAIL_RINGTONE_SUMMARY);
-            }
-        };
-
-        updateRingtoneName();
-    }
-
-    @Override
-    protected Uri onRestoreRingtone() {
-        return VoicemailNotificationSettingsUtil.getRingtoneUri(mPhone);
-    }
-
-    @Override
-    protected void onSaveRingtone(Uri ringtoneUri) {
-        // Don't call superclass method because it uses the pref key as the SharedPreferences key.
-        // Delegate to the voicemail notification utility to save the ringtone instead.
-        VoicemailNotificationSettingsUtil.setRingtoneUri(mPhone, ringtoneUri);
-
-        updateRingtoneName();
-    }
-
-    private void updateRingtoneName() {
-        new Thread(mVoicemailRingtoneLookupRunnable).start();
-    }
-}
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index a08fe30..04e8bf5 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -24,12 +24,13 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.preference.CheckBoxPreference;
+import android.os.UserManager;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
 import android.preference.SwitchPreference;
 import android.provider.ContactsContract.CommonDataKinds;
+import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
@@ -37,17 +38,16 @@
 import android.util.Log;
 import android.view.MenuItem;
 import android.widget.ListAdapter;
+import android.widget.Toast;
 
 import com.android.internal.telephony.CallForwardInfo;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.phone.R;
+import com.android.internal.telephony.util.NotificationChannelController;
 import com.android.phone.EditPhoneNumberPreference;
 import com.android.phone.PhoneGlobals;
-import com.android.phone.PhoneUtils;
+import com.android.phone.R;
 import com.android.phone.SubscriptionInfoHelper;
-import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -59,7 +59,7 @@
         implements DialogInterface.OnClickListener,
                 Preference.OnPreferenceChangeListener,
                 EditPhoneNumberPreference.OnDialogClosedListener,
-                EditPhoneNumberPreference.GetDefaultNumberListener {
+                EditPhoneNumberPreference.GetDefaultNumberListener{
     private static final String LOG_TAG = VoicemailSettingsActivity.class.getSimpleName();
     private static final boolean DBG = (PhoneGlobals.DBG_LEVEL >= 2);
 
@@ -194,15 +194,11 @@
     private boolean mForeground;
     private Phone mPhone;
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
-    private OmtpVvmCarrierConfigHelper mOmtpVvmCarrierConfigHelper;
 
-    private EditPhoneNumberPreference mSubMenuVoicemailSettings;
+    private EditPhoneNumberPreference mSubMenuVoicemailSettings = null;
     private VoicemailProviderListPreference mVoicemailProviders;
     private PreferenceScreen mVoicemailSettings;
-    private VoicemailRingtonePreference mVoicemailNotificationRingtone;
-    private CheckBoxPreference mVoicemailNotificationVibrate;
-    private SwitchPreference mVoicemailVisualVoicemail;
-
+    private Preference mVoicemailNotificationPreference;
 
     //*********************************************************************************************
     // Preference Activity Methods
@@ -211,7 +207,14 @@
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-
+        // Make sure we are running as the primary user only
+        UserManager userManager = getApplicationContext().getSystemService(UserManager.class);
+        if (!userManager.isPrimaryUser()) {
+           Toast.makeText(this, R.string.voice_number_setting_primary_user_only,
+                   Toast.LENGTH_SHORT).show();
+           finish();
+           return;
+        }
         // Show the voicemail preference in onResume if the calling intent specifies the
         // ACTION_ADD_VOICEMAIL action.
         mShowVoicemailPreference = (icicle == null) &&
@@ -221,8 +224,15 @@
         mSubscriptionInfoHelper.setActionBarTitle(
                 getActionBar(), getResources(), R.string.voicemail_settings_with_label);
         mPhone = mSubscriptionInfoHelper.getPhone();
-        mOmtpVvmCarrierConfigHelper = new OmtpVvmCarrierConfigHelper(
-                mPhone.getContext(), mPhone.getSubId());
+        addPreferencesFromResource(R.xml.voicemail_settings);
+
+        mVoicemailNotificationPreference =
+                findPreference(getString(R.string.voicemail_notifications_key));
+        final Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
+        intent.putExtra(Settings.EXTRA_CHANNEL_ID,
+                NotificationChannelController.CHANNEL_ID_VOICE_MAIL);
+        intent.putExtra(Settings.EXTRA_APP_PACKAGE, mPhone.getContext().getPackageName());
+        mVoicemailNotificationPreference.setIntent(intent);
     }
 
     @Override
@@ -230,18 +240,17 @@
         super.onResume();
         mForeground = true;
 
-        PreferenceScreen preferenceScreen = getPreferenceScreen();
-        if (preferenceScreen != null) {
-            preferenceScreen.removeAll();
-        }
-
-        addPreferencesFromResource(R.xml.voicemail_settings);
-
         PreferenceScreen prefSet = getPreferenceScreen();
-        mSubMenuVoicemailSettings = (EditPhoneNumberPreference) findPreference(BUTTON_VOICEMAIL_KEY);
-        mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
-        mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
-        mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+
+        if (mSubMenuVoicemailSettings == null) {
+            mSubMenuVoicemailSettings =
+                    (EditPhoneNumberPreference) findPreference(BUTTON_VOICEMAIL_KEY);
+        }
+        if (mSubMenuVoicemailSettings != null) {
+            mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
+            mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
+            mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+        }
 
         mVoicemailProviders = (VoicemailProviderListPreference) findPreference(
                 BUTTON_VOICEMAIL_PROVIDER_KEY);
@@ -251,24 +260,7 @@
 
         mVoicemailSettings = (PreferenceScreen) findPreference(BUTTON_VOICEMAIL_SETTING_KEY);
 
-        mVoicemailNotificationRingtone = (VoicemailRingtonePreference) findPreference(
-                getResources().getString(R.string.voicemail_notification_ringtone_key));
-        mVoicemailNotificationRingtone.init(mPhone);
-
-        mVoicemailNotificationVibrate = (CheckBoxPreference) findPreference(
-                getResources().getString(R.string.voicemail_notification_vibrate_key));
-        mVoicemailNotificationVibrate.setOnPreferenceChangeListener(this);
-
-        mVoicemailVisualVoicemail = (SwitchPreference) findPreference(
-                getResources().getString(R.string.voicemail_visual_voicemail_key));
-        if (TelephonyManager.VVM_TYPE_OMTP.equals(mOmtpVvmCarrierConfigHelper.getVvmType()) ||
-                TelephonyManager.VVM_TYPE_CVVM.equals(mOmtpVvmCarrierConfigHelper.getVvmType())) {
-            mVoicemailVisualVoicemail.setOnPreferenceChangeListener(this);
-            mVoicemailVisualVoicemail.setChecked(
-                    VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(mPhone));
-        } else {
-            prefSet.removePreference(mVoicemailVisualVoicemail);
-        }
+        maybeHidePublicSettings();
 
         updateVMPreferenceWidgets(mVoicemailProviders.getValue());
 
@@ -291,9 +283,22 @@
 
         updateVoiceNumberField();
         mVMProviderSettingsForced = false;
+    }
 
-        mVoicemailNotificationVibrate.setChecked(
-                VoicemailNotificationSettingsUtil.isVibrationEnabled(mPhone));
+    /**
+     * Hides a subset of voicemail settings if required by the intent extra. This is used by the
+     * default dialer to show "advanced" voicemail settings from its own custom voicemail settings
+     * UI.
+     */
+    private void maybeHidePublicSettings() {
+        if(!getIntent().getBooleanExtra(TelephonyManager.EXTRA_HIDE_PUBLIC_SETTINGS, false)){
+            return;
+        }
+        if (DBG) {
+            log("maybeHidePublicSettings: settings hidden by EXTRA_HIDE_PUBLIC_SETTINGS");
+        }
+        PreferenceScreen preferenceScreen = getPreferenceScreen();
+        preferenceScreen.removePreference(mVoicemailNotificationPreference);
     }
 
     @Override
@@ -326,6 +331,13 @@
                 dialog.getActionBar().setDisplayHomeAsUpEnabled(false);
             }
 
+            mSubMenuVoicemailSettings =
+                    (EditPhoneNumberPreference) findPreference(BUTTON_VOICEMAIL_KEY);
+            mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
+            mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
+            mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+            updateVoiceNumberField();
+
             if (preference.getIntent() != null) {
                 if (DBG) log("Invoking cfg intent " + preference.getIntent().getPackage());
 
@@ -382,24 +394,7 @@
                 mChangingVMorFwdDueToProviderChange = true;
                 saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
             }
-        } else if (preference.getKey().equals(mVoicemailNotificationVibrate.getKey())) {
-            // Check key instead of comparing reference because closing the voicemail notification
-            // ringtone dialog invokes onResume(), but leaves the old preference screen up,
-            // TODO: Revert to checking reference after migrating voicemail to its own activity.
-            VoicemailNotificationSettingsUtil.setVibrationEnabled(
-                    mPhone, Boolean.TRUE.equals(objValue));
-        } else if (preference.getKey().equals(mVoicemailVisualVoicemail.getKey())) {
-            boolean isEnabled = (Boolean) objValue;
-            VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(mPhone, isEnabled, true);
-            if (isEnabled) {
-                OmtpVvmSourceManager.getInstance(mPhone.getContext()).addPhoneStateListener(mPhone);
-                mOmtpVvmCarrierConfigHelper.startActivation();
-            } else {
-                OmtpVvmSourceManager.getInstance(mPhone.getContext()).removeSource(mPhone);
-                mOmtpVvmCarrierConfigHelper.startDeactivation();
-            }
         }
-
         // Always let the preference setting proceed.
         return true;
     }
@@ -515,7 +510,11 @@
                     if (DBG) log("onActivityResult: bad contact data, no results found.");
                     return;
                 }
-                mSubMenuVoicemailSettings.onPickActivityResult(cursor.getString(0));
+                if (mSubMenuVoicemailSettings != null) {
+                    mSubMenuVoicemailSettings.onPickActivityResult(cursor.getString(0));
+                } else {
+                    Log.w(LOG_TAG, "VoicemailSettingsActivity destroyed while setting contacts.");
+                }
                 return;
             } finally {
                 if (cursor != null) {
@@ -995,7 +994,6 @@
             mVoicemailProviders.setSummary(getString(R.string.sum_voicemail_choose_provider));
             mVoicemailSettings.setEnabled(false);
             mVoicemailSettings.setIntent(null);
-            mVoicemailNotificationVibrate.setEnabled(false);
         } else {
             if (DBG) log("updateVMPreferenceWidget: key: " + key + " -> " + provider.toString());
 
@@ -1003,7 +1001,6 @@
             mVoicemailProviders.setSummary(providerName);
             mVoicemailSettings.setEnabled(true);
             mVoicemailSettings.setIntent(provider.intent);
-            mVoicemailNotificationVibrate.setEnabled(true);
         }
     }
 
diff --git a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
index 1387215..b8a761c 100644
--- a/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
+++ b/src/com/android/phone/settings/fdn/EditFdnContactScreen.java
@@ -243,6 +243,7 @@
 
         mNumberField = (EditText) findViewById(R.id.fdn_number);
         if (mNumberField != null) {
+            mNumberField.setTextDirection(View.TEXT_DIRECTION_LTR);
             mNumberField.setKeyListener(DialerKeyListener.getInstance());
             mNumberField.setOnFocusChangeListener(mOnFocusChangeHandler);
             mNumberField.setOnClickListener(mClicked);
@@ -281,7 +282,7 @@
       * TODO: Fix this logic.
       */
      private boolean isValidNumber(String number) {
-         return (number.length() <= 20);
+         return (number.length() <= 20) && (number.length() > 0);
      }
 
 
@@ -419,6 +420,12 @@
             } else if (v == mNumberField) {
                 mButton.requestFocus();
             } else if (v == mButton) {
+                final String number = PhoneNumberUtils.convertAndStrip(getNumberFromTextField());
+
+                if (!isValidNumber(number)) {
+                    handleResult(false, true);
+                    return;
+                }
                 // Authenticate the pin AFTER the contact information
                 // is entered, and if we're not busy.
                 if (!mDataBusy) {
diff --git a/src/com/android/phone/settings/fdn/FdnList.java b/src/com/android/phone/settings/fdn/FdnList.java
index 0174a82..61a8299 100644
--- a/src/com/android/phone/settings/fdn/FdnList.java
+++ b/src/com/android/phone/settings/fdn/FdnList.java
@@ -17,16 +17,26 @@
 package com.android.phone.settings.fdn;
 
 import android.app.ActionBar;
+import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.PersistableBundle;
+import android.telecom.PhoneAccount;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.ListView;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
 
 import com.android.phone.ADNList;
+import com.android.phone.PhoneGlobals;
 import com.android.phone.R;
 import com.android.phone.SubscriptionInfoHelper;
 
@@ -35,9 +45,44 @@
  * that allows a user to specify a limited set of phone numbers that the SIM can dial.
  */
 public class FdnList extends ADNList {
+    private class SelectionPopupMenu extends PopupMenu {
+        private OnMenuItemClickListener mMenuItemListener = new OnMenuItemClickListener() {
+
+            @Override
+            public boolean onMenuItemClick(MenuItem item) {
+                if (item.getItemId() == MENU_EDIT) {
+                    editSelected(position);
+                } else if (item.getItemId() == MENU_DELETE) {
+                    deleteSelected(position);
+                } else if (item.getItemId() == MENU_DIAL) {
+                    dialSelected(position);
+                }
+                return true;
+            }
+        };
+
+        private final int position;
+
+        public SelectionPopupMenu(Context context, View anchor, int position) {
+            super(context, anchor, Gravity.RIGHT);
+            this.position = position;
+        }
+
+        public void showPopUp() {
+            getMenu().add(0, MENU_EDIT, 0, getString(R.string.menu_edit));
+            getMenu().add(0, MENU_DELETE, 0, getString(R.string.menu_delete));
+            if (mFdnDialDirectlySupported) {
+                getMenu().add(0, MENU_DIAL, 0, getString(R.string.menu_dial));
+            }
+            setOnMenuItemClickListener(mMenuItemListener);
+            show();
+        }
+    }
+
     private static final int MENU_ADD = 1;
     private static final int MENU_EDIT = 2;
     private static final int MENU_DELETE = 3;
+    private static final int MENU_DIAL = 4;
 
     private static final String INTENT_EXTRA_NAME = "name";
     private static final String INTENT_EXTRA_NUMBER = "number";
@@ -47,6 +92,9 @@
 
     private SubscriptionInfoHelper mSubscriptionInfoHelper;
 
+    private boolean mFdnDialDirectlySupported = false;
+    private SelectionPopupMenu mPopup;
+
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -63,6 +111,20 @@
     }
 
     @Override
+    protected void onResume() {
+        super.onResume();
+        mFdnDialDirectlySupported = getFdnDialDirectlySupported();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        if (mPopup != null) {
+            mPopup.dismiss();
+        }
+    }
+
+    @Override
     protected Uri resolveIntent() {
         Intent intent = getIntent();
         intent.setData(getContentUri(mSubscriptionInfoHelper));
@@ -82,6 +144,7 @@
                 .setIcon(android.R.drawable.ic_menu_edit);
         menu.add(0, MENU_DELETE, 0, r.getString(R.string.menu_delete))
                 .setIcon(android.R.drawable.ic_menu_delete);
+        menu.add(0, MENU_DIAL, 0, r.getString(R.string.menu_dial));
         return true;
     }
 
@@ -93,6 +156,7 @@
         menu.findItem(MENU_ADD).setVisible(true);
         menu.findItem(MENU_EDIT).setVisible(hasSelection);
         menu.findItem(MENU_DELETE).setVisible(hasSelection);
+        menu.findItem(MENU_DIAL).setVisible(hasSelection && mFdnDialDirectlySupported);
 
         return true;
     }
@@ -119,6 +183,10 @@
             case MENU_DELETE:
                 deleteSelected();
                 return true;
+
+            case MENU_DIAL:
+                dialSelected();
+                return true;
         }
 
         return super.onOptionsItemSelected(item);
@@ -126,8 +194,8 @@
 
     @Override
     public void onListItemClick(ListView l, View v, int position, long id) {
-        // TODO: is this what we really want?
-        editSelected(position);
+        mPopup = new SelectionPopupMenu(this, v, position);
+        mPopup.showPopUp();
     }
 
     private void addContact() {
@@ -162,7 +230,11 @@
     }
 
     private void deleteSelected() {
-        if (mCursor.moveToPosition(getSelectedItemPosition())) {
+        deleteSelected(getSelectedItemPosition());
+    }
+
+    private void deleteSelected(int position) {
+        if (mCursor.moveToPosition(position)) {
             String name = mCursor.getString(NAME_COLUMN);
             String number = mCursor.getString(NUMBER_COLUMN);
 
@@ -173,6 +245,21 @@
         }
     }
 
+    private void dialSelected() {
+        dialSelected(getSelectedItemPosition());
+    }
+
+    private void dialSelected(int position) {
+        if (mCursor.moveToPosition(position)) {
+            String number = mCursor.getString(NUMBER_COLUMN);
+            if (!TextUtils.isEmpty(number)) {
+                Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null);
+                final Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, uri);
+                startActivity(intent);
+            }
+        }
+    }
+
     /**
      * Returns the uri for updating the ICC FDN entry, taking into account the subscription id.
      */
@@ -182,4 +269,18 @@
                 : FDN_CONTENT_URI;
     }
 
+    /*
+     * Get the config of whether dialing FDN number from FDN list directly is supported
+     * from carrier config manager.
+     *
+     * @return boolean value of the config
+     */
+    private boolean getFdnDialDirectlySupported() {
+        int subId = mSubscriptionInfoHelper.hasSubId()
+                ? mSubscriptionInfoHelper.getSubId()
+                : SubscriptionManager.getDefaultSubscriptionId();
+        PersistableBundle carrierConfig =
+                PhoneGlobals.getInstance().getCarrierConfigForSubId(subId);
+        return carrierConfig.getBoolean(CarrierConfigManager.KEY_SUPPORT_DIRECT_FDN_DIALING_BOOL);
+    }
 }
diff --git a/src/com/android/phone/settings/fdn/FdnSetting.java b/src/com/android/phone/settings/fdn/FdnSetting.java
index ac43cce..c76f91d 100644
--- a/src/com/android/phone/settings/fdn/FdnSetting.java
+++ b/src/com/android/phone/settings/fdn/FdnSetting.java
@@ -468,6 +468,20 @@
         }
     }
 
+    /**
+    * Reflect the updated change PIN2 state in the UI.
+    */
+    private void updateChangePIN2() {
+        if (mPhone.getIccCard().getIccPin2Blocked()) {
+            // If the pin2 is blocked, the state of the change pin2 dialog
+            // should be set for puk2 use (that is, the user should be prompted
+            // to enter puk2 code instead of old pin2).
+            resetPinChangeStateForPUK2();
+        } else {
+            resetPinChangeState();
+        }
+    }
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -518,6 +532,7 @@
         super.onResume();
         mPhone = mSubscriptionInfoHelper.getPhone();
         updateEnableFDN();
+        updateChangePIN2();
     }
 
     /**
diff --git a/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java b/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java
new file mode 100644
index 0000000..ec0d3f6
--- /dev/null
+++ b/src/com/android/phone/vvm/CarrierVvmPackageInstalledReceiver.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.PersistableBundle;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.TelephonyManager;
+import android.telephony.VisualVoicemailService;
+import android.text.TextUtils;
+import android.util.ArraySet;
+
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Receives {@link Intent#ACTION_PACKAGE_ADDED} for the system dialer to inform it a carrier visual
+ * voicemail app has been installed. ACTION_PACKAGE_ADDED requires the receiver process to be
+ * running so the system dialer cannot receive it itself.
+ *
+ * Carrier VVM apps are usually regular apps, not a
+ * {@link VisualVoicemailService} nor {@link android.service.carrier.CarrierMessagingService} so it
+ * will not take precedence over the system dialer. The system dialer should disable VVM it self
+ * to let the carrier app take over since the installation is an explicit user interaction. Carrier
+ * customer support might also ask the user to switch to their app if they believe there's any
+ * issue in the system dialer so this transition should not require more user interaction.
+ *
+ * @see CarrierConfigManager#KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY
+ */
+public class CarrierVvmPackageInstalledReceiver extends BroadcastReceiver {
+
+    private static final String TAG = "VvmPkgInstalledRcvr";
+
+    /**
+     * Hidden broadcast to the system dialer
+     */
+    private static final String ACTION_CARRIER_VVM_PACKAGE_INSTALLED =
+            "com.android.internal.telephony.CARRIER_VVM_PACKAGE_INSTALLED";
+
+    public void register(Context context) {
+        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+        intentFilter.addDataScheme("package");
+        context.registerReceiver(this, intentFilter);
+    }
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (intent.getData() == null) {
+            return;
+        }
+        String packageName = intent.getData().getSchemeSpecificPart();
+        if (packageName == null) {
+            return;
+        }
+
+        TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+        String systemDialer = telecomManager.getSystemDialerPackage();
+        TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+        for (PhoneAccountHandle phoneAccountHandle : telecomManager.getCallCapablePhoneAccounts()) {
+            TelephonyManager pinnedTelephonyManager = telephonyManager
+                    .createForPhoneAccountHandle(phoneAccountHandle);
+
+            if (pinnedTelephonyManager == null) {
+                VvmLog.e(TAG, "cannot create TelephonyManager from " + phoneAccountHandle);
+                continue;
+            }
+
+            if (!getCarrierVvmPackages(telephonyManager).contains(packageName)) {
+                continue;
+            }
+
+            VvmLog.i(TAG, "Carrier VVM app " + packageName + " installed");
+
+            String vvmPackage = pinnedTelephonyManager.getVisualVoicemailPackageName();
+            if (!TextUtils.equals(vvmPackage, systemDialer)) {
+                // Non system dialer do not need to prioritize carrier vvm app.
+                VvmLog.i(TAG, "non system dialer " + vvmPackage + " ignored");
+                continue;
+            }
+
+            VvmLog.i(TAG, "sending broadcast to " + vvmPackage);
+            Intent broadcast = new Intent(ACTION_CARRIER_VVM_PACKAGE_INSTALLED);
+            broadcast.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+            broadcast.setPackage(vvmPackage);
+            context.sendBroadcast(broadcast);
+        }
+    }
+
+    private static Set<String> getCarrierVvmPackages(TelephonyManager pinnedTelephonyManager) {
+        Set<String> carrierPackages = new ArraySet<>();
+
+        PersistableBundle config = pinnedTelephonyManager.getCarrierConfig();
+        String singlePackage = config
+                .getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING);
+        if (!TextUtils.isEmpty(singlePackage)) {
+            carrierPackages.add(singlePackage);
+        }
+        String[] arrayPackages = config
+                .getStringArray(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY);
+        if (arrayPackages != null) {
+            Collections.addAll(carrierPackages, arrayPackages);
+        }
+
+        return carrierPackages;
+    }
+}
diff --git a/src/com/android/phone/vvm/PhoneAccountHandleConverter.java b/src/com/android/phone/vvm/PhoneAccountHandleConverter.java
new file mode 100644
index 0000000..cb05215
--- /dev/null
+++ b/src/com/android/phone/vvm/PhoneAccountHandleConverter.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm;
+
+import android.annotation.Nullable;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.SubscriptionManager;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+import com.android.phone.PhoneUtils;
+import com.android.phone.vvm.VvmLog;
+
+/**
+ * Utility to convert between PhoneAccountHandle and subId, which is a common operation in OMTP
+ * client
+ *
+ * TODO(b/28977379): remove dependency on PhoneUtils and use public APIs
+ */
+public class PhoneAccountHandleConverter {
+
+    private static final String TAG = "PhoneAccountHndCvtr";
+
+    @Nullable
+    public static PhoneAccountHandle fromSubId(int subId) {
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+            VvmLog.e(TAG, "invalid subId " + subId);
+            return null;
+        }
+        // Calling PhoneUtils.makePstnPhoneAccountHandle() with a phoneId might throw a NPE if the
+        // phone object cannot be found, so the Phone object should be created and checked here.
+        Phone phone = PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
+        if (phone == null) {
+            VvmLog.e(TAG, "Unable to find Phone for subId " + subId);
+            return null;
+        }
+        return PhoneUtils.makePstnPhoneAccountHandle(phone);
+    }
+
+    public static int toSubId(PhoneAccountHandle handle) {
+        return PhoneUtils.getSubIdForPhoneAccountHandle(handle);
+    }
+
+    private PhoneAccountHandleConverter() {
+    }
+}
diff --git a/src/com/android/phone/vvm/RemoteVvmTaskManager.java b/src/com/android/phone/vvm/RemoteVvmTaskManager.java
new file mode 100644
index 0000000..4fc8c57
--- /dev/null
+++ b/src/com/android/phone/vvm/RemoteVvmTaskManager.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm;
+
+import android.annotation.Nullable;
+import android.app.Service;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.PersistableBundle;
+import android.os.RemoteException;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.VisualVoicemailService;
+import android.telephony.VisualVoicemailSms;
+import android.text.TextUtils;
+
+import com.android.phone.Assert;
+import com.android.phone.R;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+/**
+ * Service to manage tasks issued to the {@link VisualVoicemailService}. This service will bind to
+ * the default dialer on a visual voicemail event if it implements the VisualVoicemailService. The
+ * service will hold all resource for the VisualVoicemailService until {@link
+ * VisualVoicemailService.VisualVoicemailTask#finish()} has been called on all issued tasks.
+ *
+ * If the service is already running it will be reused for new events. The service will stop itself
+ * after all events are handled.
+ */
+public class RemoteVvmTaskManager extends Service {
+
+    private static final String TAG = "RemoteVvmTaskManager";
+
+    private static final String ACTION_START_CELL_SERVICE_CONNECTED =
+            "ACTION_START_CELL_SERVICE_CONNECTED";
+    private static final String ACTION_START_SMS_RECEIVED = "ACTION_START_SMS_RECEIVED";
+    private static final String ACTION_START_SIM_REMOVED = "ACTION_START_SIM_REMOVED";
+
+    // TODO(b/35766990): Remove after VisualVoicemailService API is stabilized.
+    private static final String ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT =
+            "com.android.phone.vvm.ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT";
+    private static final String EXTRA_WHAT = "what";
+
+    // TODO(twyen): track task individually to have time outs.
+    private int mTaskReferenceCount;
+
+    private RemoteServiceConnection mConnection;
+
+    /**
+     * Handles incoming messages from the VisualVoicemailService.
+     */
+    private Messenger mMessenger;
+
+    public static void startCellServiceConnected(Context context,
+            PhoneAccountHandle phoneAccountHandle) {
+        Intent intent = new Intent(ACTION_START_CELL_SERVICE_CONNECTED, null, context,
+                RemoteVvmTaskManager.class);
+        intent.putExtra(VisualVoicemailService.DATA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+        context.startService(intent);
+    }
+
+    public static void startSmsReceived(Context context, VisualVoicemailSms sms) {
+        Intent intent = new Intent(ACTION_START_SMS_RECEIVED, null, context,
+                RemoteVvmTaskManager.class);
+        intent.putExtra(VisualVoicemailService.DATA_PHONE_ACCOUNT_HANDLE,
+                sms.getPhoneAccountHandle());
+        intent.putExtra(VisualVoicemailService.DATA_SMS, sms);
+        context.startService(intent);
+    }
+
+    public static void startSimRemoved(Context context, PhoneAccountHandle phoneAccountHandle) {
+        Intent intent = new Intent(ACTION_START_SIM_REMOVED, null, context,
+                RemoteVvmTaskManager.class);
+        intent.putExtra(VisualVoicemailService.DATA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
+        context.startService(intent);
+    }
+
+    public static boolean hasRemoteService(Context context, int subId) {
+        return getRemotePackage(context, subId) != null;
+    }
+
+    @Nullable
+    public static ComponentName getRemotePackage(Context context, int subId) {
+        ComponentName broadcastPackage = getBroadcastPackage(context);
+        if (broadcastPackage != null) {
+            return broadcastPackage;
+        }
+
+        Intent bindIntent = newBindIntent(context);
+
+        TelecomManager telecomManager = context.getSystemService(TelecomManager.class);
+        List<String> packages = new ArrayList<>();
+        packages.add(telecomManager.getDefaultDialerPackage());
+        PersistableBundle carrierConfig = context
+                .getSystemService(CarrierConfigManager.class).getConfigForSubId(subId);
+        packages.add(
+                carrierConfig.getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING));
+        String[] vvmPackages = carrierConfig
+                .getStringArray(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY);
+        if (vvmPackages != null && vvmPackages.length > 0) {
+            for (String packageName : vvmPackages) {
+                packages.add(packageName);
+            }
+        }
+        packages.add(context.getResources().getString(R.string.system_visual_voicemail_client));
+        packages.add(telecomManager.getSystemDialerPackage());
+        for (String packageName : packages) {
+            if (TextUtils.isEmpty(packageName)) {
+                continue;
+            }
+            bindIntent.setPackage(packageName);
+            ResolveInfo info = context.getPackageManager()
+                    .resolveService(bindIntent, PackageManager.MATCH_ALL);
+            if (info == null) {
+                continue;
+            }
+            if (info.serviceInfo == null) {
+                VvmLog.w(TAG,
+                        "Component " + info.getComponentInfo() + " is not a service, ignoring");
+                continue;
+            }
+            if (!android.Manifest.permission.BIND_VISUAL_VOICEMAIL_SERVICE
+                    .equals(info.serviceInfo.permission)) {
+                VvmLog.w(TAG, "package " + info.serviceInfo.packageName
+                        + " does not enforce BIND_VISUAL_VOICEMAIL_SERVICE, ignoring");
+                continue;
+            }
+
+            return info.getComponentInfo().getComponentName();
+
+        }
+        return null;
+    }
+
+    @Nullable
+    private static ComponentName getBroadcastPackage(Context context) {
+        Intent broadcastIntent = new Intent(ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT);
+        broadcastIntent.setPackage(
+                context.getSystemService(TelecomManager.class).getDefaultDialerPackage());
+        List<ResolveInfo> info = context.getPackageManager()
+                .queryBroadcastReceivers(broadcastIntent, PackageManager.MATCH_ALL);
+        if (info == null) {
+            return null;
+        }
+        if (info.isEmpty()) {
+            return null;
+        }
+        return info.get(0).getComponentInfo().getComponentName();
+    }
+
+    @Override
+    public void onCreate() {
+        Assert.isMainThread();
+        mMessenger = new Messenger(new Handler() {
+            @Override
+            public void handleMessage(Message msg) {
+                Assert.isMainThread();
+                switch (msg.what) {
+                    case VisualVoicemailService.MSG_TASK_ENDED:
+                        mTaskReferenceCount--;
+                        checkReference();
+                        break;
+                    default:
+                        VvmLog.wtf(TAG, "unexpected message " + msg.what);
+                }
+            }
+        });
+    }
+
+    @Override
+    public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
+        Assert.isMainThread();
+        mTaskReferenceCount++;
+
+        PhoneAccountHandle phoneAccountHandle = intent.getExtras()
+                .getParcelable(VisualVoicemailService.DATA_PHONE_ACCOUNT_HANDLE);
+        int subId = PhoneAccountHandleConverter.toSubId(phoneAccountHandle);
+        ComponentName remotePackage = getRemotePackage(this, subId);
+        if (remotePackage == null) {
+            VvmLog.i(TAG, "No service to handle " + intent.getAction() + ", ignoring");
+            checkReference();
+            return START_NOT_STICKY;
+        }
+
+        switch (intent.getAction()) {
+            case ACTION_START_CELL_SERVICE_CONNECTED:
+                send(remotePackage, VisualVoicemailService.MSG_ON_CELL_SERVICE_CONNECTED,
+                        intent.getExtras());
+                break;
+            case ACTION_START_SMS_RECEIVED:
+                send(remotePackage, VisualVoicemailService.MSG_ON_SMS_RECEIVED, intent.getExtras());
+                break;
+            case ACTION_START_SIM_REMOVED:
+                send(remotePackage, VisualVoicemailService.MSG_ON_SIM_REMOVED, intent.getExtras());
+                break;
+            default:
+                Assert.fail("Unexpected action +" + intent.getAction());
+                break;
+        }
+        // Don't rerun service if processed is killed.
+        return START_NOT_STICKY;
+    }
+
+    @Override
+    @Nullable
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    private int getTaskId() {
+        // TODO(twyen): generate unique IDs. Reference counting is used now so it doesn't matter.
+        return 1;
+    }
+
+    /**
+     * Class for interacting with the main interface of the service.
+     */
+    private class RemoteServiceConnection implements ServiceConnection {
+
+        private final Queue<Message> mTaskQueue = new LinkedList<>();
+
+        private boolean mConnected;
+
+        /**
+         * A handler in the VisualVoicemailService
+         */
+        private Messenger mRemoteMessenger;
+
+        public void enqueue(Message message) {
+            mTaskQueue.add(message);
+            if (mConnected) {
+                runQueue();
+            }
+        }
+
+        public boolean isConnected() {
+            return mConnected;
+        }
+
+        public void onServiceConnected(ComponentName className,
+                IBinder service) {
+            mRemoteMessenger = new Messenger(service);
+            mConnected = true;
+            runQueue();
+        }
+
+        public void onServiceDisconnected(ComponentName className) {
+            mConnection = null;
+            mConnected = false;
+            mRemoteMessenger = null;
+            VvmLog.e(TAG, "Service disconnected, " + mTaskReferenceCount + " tasks dropped.");
+            mTaskReferenceCount = 0;
+            checkReference();
+        }
+
+        private void runQueue() {
+            Assert.isMainThread();
+            Message message = mTaskQueue.poll();
+            while (message != null) {
+                message.replyTo = mMessenger;
+                message.arg1 = getTaskId();
+
+                try {
+                    mRemoteMessenger.send(message);
+                } catch (RemoteException e) {
+                    VvmLog.e(TAG, "Error sending message to remote service", e);
+                }
+                message = mTaskQueue.poll();
+            }
+        }
+    }
+
+    private void send(ComponentName remotePackage, int what, Bundle extras) {
+        Assert.isMainThread();
+
+        if (getBroadcastPackage(this) != null) {
+            /*
+             * Temporarily use a broadcast to notify dialer VVM events instead of using the
+             * VisualVoicemailService.
+             * b/35766990 The VisualVoicemailService is undergoing API changes. The dialer is in
+             * a different repository so it can not be updated in sync with android SDK. It is also
+             * hard to make a manifest service to work in the intermittent state.
+             */
+            VvmLog.i(TAG, "sending broadcast " + what + " to " + remotePackage);
+            Intent intent = new Intent(ACTION_VISUAL_VOICEMAIL_SERVICE_EVENT);
+            intent.putExtras(extras);
+            intent.putExtra(EXTRA_WHAT, what);
+            intent.setComponent(remotePackage);
+            sendBroadcast(intent);
+            return;
+        }
+
+        Message message = Message.obtain();
+        message.what = what;
+        message.setData(new Bundle(extras));
+        if (mConnection == null) {
+            mConnection = new RemoteServiceConnection();
+        }
+        mConnection.enqueue(message);
+
+        if (!mConnection.isConnected()) {
+            Intent intent = newBindIntent(this);
+            intent.setComponent(remotePackage);
+            VvmLog.i(TAG, "Binding to " + intent.getComponent());
+            bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+        }
+    }
+
+    private void checkReference() {
+        if (mConnection == null) {
+            return;
+        }
+        if (mTaskReferenceCount == 0) {
+            unbindService(mConnection);
+            mConnection = null;
+        }
+    }
+
+    private static Intent newBindIntent(Context context) {
+        Intent intent = new Intent();
+        intent.setAction(VisualVoicemailService.SERVICE_INTERFACE);
+        return intent;
+    }
+}
diff --git a/src/com/android/phone/vvm/VisualVoicemailPreferences.java b/src/com/android/phone/vvm/VisualVoicemailPreferences.java
new file mode 100644
index 0000000..b28cea4
--- /dev/null
+++ b/src/com/android/phone/vvm/VisualVoicemailPreferences.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.phone.vvm;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.telecom.PhoneAccountHandle;
+
+import com.android.phone.NeededForTesting;
+
+import java.util.Set;
+
+/**
+ * Save visual voicemail values in shared preferences to be retrieved later. Because a voicemail
+ * source is tied 1:1 to a phone account, the phone account handle is used in the key for each
+ * voicemail source and the associated data.
+ */
+public class VisualVoicemailPreferences {
+
+    private static final String VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX =
+            "visual_voicemail_";
+
+    private final SharedPreferences mPreferences;
+    private final PhoneAccountHandle mPhoneAccountHandle;
+
+    public VisualVoicemailPreferences(Context context, PhoneAccountHandle phoneAccountHandle) {
+        mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+        mPhoneAccountHandle = phoneAccountHandle;
+    }
+
+    public class Editor {
+
+        private final SharedPreferences.Editor mEditor;
+
+        private Editor() {
+            mEditor = mPreferences.edit();
+        }
+
+        public void apply() {
+            mEditor.apply();
+        }
+
+        public Editor putBoolean(String key, boolean value) {
+            mEditor.putBoolean(getKey(key), value);
+            return this;
+        }
+
+        @NeededForTesting
+        public Editor putFloat(String key, float value) {
+            mEditor.putFloat(getKey(key), value);
+            return this;
+        }
+
+        public Editor putInt(String key, int value) {
+            mEditor.putInt(getKey(key), value);
+            return this;
+        }
+
+        @NeededForTesting
+        public Editor putLong(String key, long value) {
+            mEditor.putLong(getKey(key), value);
+            return this;
+        }
+
+        public Editor putString(String key, String value) {
+            mEditor.putString(getKey(key), value);
+            return this;
+        }
+
+        @NeededForTesting
+        public Editor putStringSet(String key, Set<String> value) {
+            mEditor.putStringSet(getKey(key), value);
+            return this;
+        }
+    }
+
+    public Editor edit() {
+        return new Editor();
+    }
+
+    public boolean getBoolean(String key, boolean defValue) {
+        return getValue(key, defValue);
+    }
+
+    @NeededForTesting
+    public float getFloat(String key, float defValue) {
+        return getValue(key, defValue);
+    }
+
+    public int getInt(String key, int defValue) {
+        return getValue(key, defValue);
+    }
+
+    @NeededForTesting
+    public long getLong(String key, long defValue) {
+        return getValue(key, defValue);
+    }
+
+    public String getString(String key, String defValue) {
+        return getValue(key, defValue);
+    }
+
+    @Nullable
+    public String getString(String key) {
+        return getValue(key, null);
+    }
+
+    @NeededForTesting
+    public Set<String> getStringSet(String key, Set<String> defValue) {
+        return getValue(key, defValue);
+    }
+
+    public boolean contains(String key) {
+        return mPreferences.contains(getKey(key));
+    }
+
+    private <T> T getValue(String key, T defValue) {
+        if (!contains(key)) {
+            return defValue;
+        }
+        Object object = mPreferences.getAll().get(getKey(key));
+        if (object == null) {
+            return defValue;
+        }
+        return (T) object;
+    }
+
+    private String getKey(String key) {
+        return VISUAL_VOICEMAIL_SHARED_PREFS_KEY_PREFIX + key + "_" + mPhoneAccountHandle.getId();
+    }
+}
diff --git a/src/com/android/phone/vvm/VisualVoicemailSettingsUtil.java b/src/com/android/phone/vvm/VisualVoicemailSettingsUtil.java
new file mode 100644
index 0000000..8215261
--- /dev/null
+++ b/src/com/android/phone/vvm/VisualVoicemailSettingsUtil.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.phone.vvm;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+
+/**
+ * Save whether or not a particular account is enabled in shared to be retrieved later.
+ */
+public class VisualVoicemailSettingsUtil {
+
+    private static final String IS_ENABLED_KEY = "is_enabled";
+
+    private static final String DEFAULT_OLD_PIN_KEY = "default_old_pin";
+
+    public static Bundle dump(Context context, PhoneAccountHandle phoneAccountHandle){
+        Bundle result = new Bundle();
+        VisualVoicemailPreferences prefs = new VisualVoicemailPreferences(context,
+                phoneAccountHandle);
+        if (prefs.contains(IS_ENABLED_KEY)) {
+            result.putBoolean(TelephonyManager.EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL,
+                    prefs.getBoolean(IS_ENABLED_KEY, false));
+        }
+        result.putString(TelephonyManager.EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING,
+                prefs.getString(DEFAULT_OLD_PIN_KEY));
+        return result;
+    }
+}
diff --git a/src/com/android/phone/vvm/VisualVoicemailSmsFilterConfig.java b/src/com/android/phone/vvm/VisualVoicemailSmsFilterConfig.java
new file mode 100644
index 0000000..058f18e
--- /dev/null
+++ b/src/com/android/phone/vvm/VisualVoicemailSmsFilterConfig.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.phone.vvm;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.telephony.VisualVoicemailSmsFilterSettings;
+import android.util.ArraySet;
+
+import com.android.phone.vvm.RemoteVvmTaskManager;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Stores the config values needed for visual voicemail sms filtering. The values from
+ * OmtpVvmCarrierConfigHelper are stored here during activation instead. These values are read and
+ * written through TelephonyManager.
+ */
+public class VisualVoicemailSmsFilterConfig {
+
+    private static final String VVM_SMS_FILTER_COFIG_SHARED_PREFS_KEY_PREFIX =
+            "vvm_sms_filter_config_";
+    private static final String ENABLED_KEY = "_enabled";
+    private static final String PREFIX_KEY = "_prefix";
+    private static final String ORIGINATING_NUMBERS_KEY = "_originating_numbers";
+    private static final String DESTINATION_PORT_KEY = "_destination_port";
+    private static final String DEFAULT_PACKAGE = "com.android.phone";
+
+    public static void enableVisualVoicemailSmsFilter(Context context, String callingPackage,
+            int subId,
+            VisualVoicemailSmsFilterSettings settings) {
+        new Editor(context, callingPackage, subId)
+                .setBoolean(ENABLED_KEY, true)
+                .setString(PREFIX_KEY, settings.clientPrefix)
+                .setStringList(ORIGINATING_NUMBERS_KEY, settings.originatingNumbers)
+                .setInt(DESTINATION_PORT_KEY, settings.destinationPort)
+                .apply();
+    }
+
+    public static void disableVisualVoicemailSmsFilter(Context context, String callingPackage,
+            int subId) {
+        new Editor(context, callingPackage, subId)
+                .setBoolean(ENABLED_KEY, false)
+                .apply();
+    }
+
+    public static VisualVoicemailSmsFilterSettings getActiveVisualVoicemailSmsFilterSettings(
+            Context context, int subId) {
+        ComponentName componentName = RemoteVvmTaskManager.getRemotePackage(context, subId);
+        String packageName;
+        if (componentName == null) {
+            packageName = DEFAULT_PACKAGE;
+        } else {
+            packageName = componentName.getPackageName();
+        }
+        return getVisualVoicemailSmsFilterSettings(
+                context,
+                packageName,
+                subId);
+    }
+
+    @Nullable
+    public static VisualVoicemailSmsFilterSettings getVisualVoicemailSmsFilterSettings(
+            Context context,
+            String packageName, int subId) {
+        Reader reader = new Reader(context, packageName, subId);
+        if (!reader.getBoolean(ENABLED_KEY, false)) {
+            return null;
+        }
+        return new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix(reader.getString(PREFIX_KEY,
+                        VisualVoicemailSmsFilterSettings.DEFAULT_CLIENT_PREFIX))
+                .setOriginatingNumbers(reader.getStringSet(ORIGINATING_NUMBERS_KEY,
+                        VisualVoicemailSmsFilterSettings.DEFAULT_ORIGINATING_NUMBERS))
+                .setDestinationPort(reader.getInt(DESTINATION_PORT_KEY,
+                        VisualVoicemailSmsFilterSettings.DEFAULT_DESTINATION_PORT))
+                .build();
+    }
+
+    private static SharedPreferences getSharedPreferences(Context context) {
+        return PreferenceManager
+                .getDefaultSharedPreferences(context.createDeviceProtectedStorageContext());
+    }
+
+    private static String makePerPhoneAccountKeyPrefix(String packageName, int subId) {
+        // subId is persistent across reboot and upgrade, but not across devices.
+        // ICC id is better as a key but it involves more trouble to get one as subId is more
+        // commonly passed around.
+        return VVM_SMS_FILTER_COFIG_SHARED_PREFS_KEY_PREFIX + packageName + "_"
+                + subId;
+    }
+
+    private static class Editor {
+
+        private final SharedPreferences.Editor mPrefsEditor;
+        private final String mKeyPrefix;
+
+        public Editor(Context context, String packageName, int subId) {
+            mPrefsEditor = getSharedPreferences(context).edit();
+            mKeyPrefix = makePerPhoneAccountKeyPrefix(packageName, subId);
+        }
+
+        private Editor setInt(String key, int value) {
+            mPrefsEditor.putInt(makeKey(key), value);
+            return this;
+        }
+
+        private Editor setString(String key, String value) {
+            mPrefsEditor.putString(makeKey(key), value);
+            return this;
+        }
+
+        private Editor setBoolean(String key, boolean value) {
+            mPrefsEditor.putBoolean(makeKey(key), value);
+            return this;
+        }
+
+        private Editor setStringList(String key, List<String> value) {
+            mPrefsEditor.putStringSet(makeKey(key), new ArraySet(value));
+            return this;
+        }
+
+        public void apply() {
+            mPrefsEditor.apply();
+        }
+
+        private String makeKey(String key) {
+            return mKeyPrefix + key;
+        }
+    }
+
+
+    private static class Reader {
+
+        private final SharedPreferences mPrefs;
+        private final String mKeyPrefix;
+
+        public Reader(Context context, String packageName, int subId) {
+            mPrefs = getSharedPreferences(context);
+            mKeyPrefix = makePerPhoneAccountKeyPrefix(packageName, subId);
+        }
+
+        private int getInt(String key, int defaultValue) {
+            return mPrefs.getInt(makeKey(key), defaultValue);
+        }
+
+        private String getString(String key, String defaultValue) {
+            return mPrefs.getString(makeKey(key), defaultValue);
+        }
+
+        private boolean getBoolean(String key, boolean defaultValue) {
+            return mPrefs.getBoolean(makeKey(key), defaultValue);
+        }
+
+        private List<String> getStringSet(String key, List<String> defaultValue) {
+            Set<String> result = mPrefs.getStringSet(makeKey(key), null);
+            if (result == null) {
+                return defaultValue;
+            }
+            return new ArrayList<>(result);
+        }
+
+        private String makeKey(String key) {
+            return mKeyPrefix + key;
+        }
+    }
+}
diff --git a/src/com/android/phone/vvm/VvmDumpHandler.java b/src/com/android/phone/vvm/VvmDumpHandler.java
new file mode 100644
index 0000000..866927e
--- /dev/null
+++ b/src/com/android/phone/vvm/VvmDumpHandler.java
@@ -0,0 +1,36 @@
+package com.android.phone.vvm;
+
+import android.content.Context;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+public class VvmDumpHandler {
+
+    public static void dump(Context context, FileDescriptor fd, PrintWriter writer,
+            String[] args) {
+        TelephonyManager telephonyManager = TelephonyManager.from(context);
+        IndentingPrintWriter indentedWriter = new IndentingPrintWriter(writer, "  ");
+        indentedWriter.println("******* OmtpVvm *******");
+        indentedWriter.println("======= Configs =======");
+        indentedWriter.increaseIndent();
+        for (PhoneAccountHandle handle : TelecomManager.from(context)
+                .getCallCapablePhoneAccounts()) {
+            int subId = PhoneAccountHandleConverter.toSubId(handle);
+            indentedWriter.println(
+                    "VisualVoicemailPackageName:" + telephonyManager.createForSubscriptionId(subId)
+                            .getVisualVoicemailPackageName());
+            indentedWriter.println(
+                    "VisualVoicemailSmsFilterSettings(" + subId + "):" + telephonyManager
+                            .getActiveVisualVoicemailSmsFilterSettings(subId));
+        }
+        indentedWriter.decreaseIndent();
+        indentedWriter.println("======== Logs =========");
+        VvmLog.dump(fd, indentedWriter, args);
+    }
+}
diff --git a/src/com/android/phone/vvm/VvmLog.java b/src/com/android/phone/vvm/VvmLog.java
new file mode 100644
index 0000000..9ee58b3
--- /dev/null
+++ b/src/com/android/phone/vvm/VvmLog.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+package com.android.phone.vvm;
+
+import android.util.LocalLog;
+import android.util.Log;
+
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+/**
+ * Helper methods for adding to OMTP visual voicemail local logs.
+ */
+public class VvmLog {
+
+    private static final int MAX_OMTP_VVM_LOGS = 100;
+
+    private static final LocalLog sLocalLog = new LocalLog(MAX_OMTP_VVM_LOGS);
+
+    public static void log(String tag, String log) {
+        sLocalLog.log(tag + ": " + log);
+    }
+
+    public static void dump(FileDescriptor fd, PrintWriter printwriter, String[] args) {
+        IndentingPrintWriter indentingPrintWriter = new IndentingPrintWriter(printwriter, "  ");
+        indentingPrintWriter.increaseIndent();
+        sLocalLog.dump(fd, indentingPrintWriter, args);
+        indentingPrintWriter.decreaseIndent();
+    }
+
+    public static int e(String tag, String log) {
+        log(tag, log);
+        return Log.e(tag, log);
+    }
+
+    public static int e(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.e(tag, log, e);
+    }
+
+    public static int w(String tag, String log) {
+        log(tag, log);
+        return Log.w(tag, log);
+    }
+
+    public static int w(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.w(tag, log, e);
+    }
+
+    public static int i(String tag, String log) {
+        log(tag, log);
+        return Log.i(tag, log);
+    }
+
+    public static int i(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.i(tag, log, e);
+    }
+
+    public static int d(String tag, String log) {
+        log(tag, log);
+        return Log.d(tag, log);
+    }
+
+    public static int d(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.d(tag, log, e);
+    }
+
+    public static int v(String tag, String log) {
+        log(tag, log);
+        return Log.v(tag, log);
+    }
+
+    public static int v(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.v(tag, log, e);
+    }
+
+    public static int wtf(String tag, String log) {
+        log(tag, log);
+        return Log.wtf(tag, log);
+    }
+
+    public static int wtf(String tag, String log, Throwable e) {
+        log(tag, log + " " + e);
+        return Log.wtf(tag, log, e);
+    }
+}
diff --git a/src/com/android/phone/vvm/VvmSimStateTracker.java b/src/com/android/phone/vvm/VvmSimStateTracker.java
new file mode 100644
index 0000000..c648d9c
--- /dev/null
+++ b/src/com/android/phone/vvm/VvmSimStateTracker.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm;
+
+import android.annotation.Nullable;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.SystemProperties;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.CarrierConfigManager;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+
+import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.phone.PhoneUtils;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Tracks the status of all inserted SIMs. Will notify {@link RemoteVvmTaskManager} of when a SIM
+ * connected to the service for the first time after it was inserted or the system booted, and when
+ * the SIM is removed. Losing cell signal or entering airplane mode will not cause the connected
+ * event to be triggered again. Reinserting the SIM will trigger the connected event. Changing the
+ * carrier config will also trigger the connected event. Events will be delayed until the device has
+ * been fully booted (and left FBE mode).
+ */
+public class VvmSimStateTracker extends BroadcastReceiver {
+
+    private static final String TAG = "VvmSimStateTracker";
+
+    /**
+     * Map to keep track of currently inserted SIMs. If the SIM hasn't been connected to the service
+     * before the value will be a {@link ServiceStateListener} that is still waiting for the
+     * connection. A value of {@code null} means the SIM has been connected to the service before.
+     */
+    private static Map<PhoneAccountHandle, ServiceStateListener> sListeners = new ArrayMap<>();
+
+    /**
+     * Accounts that has events before the device is booted. The events should be regenerated after
+     * the device has fully booted.
+     */
+    private static Set<PhoneAccountHandle> sPreBootHandles = new ArraySet<>();
+
+    /**
+     * Waits for the account to become {@link ServiceState#STATE_IN_SERVICE} and notify the
+     * connected event. Will unregister itself once the event has been triggered.
+     */
+    private class ServiceStateListener extends PhoneStateListener {
+
+        private final PhoneAccountHandle mPhoneAccountHandle;
+        private final Context mContext;
+
+        public ServiceStateListener(Context context, PhoneAccountHandle phoneAccountHandle) {
+            mContext = context;
+            mPhoneAccountHandle = phoneAccountHandle;
+        }
+
+        public void listen() {
+            TelephonyManager telephonyManager = getTelephonyManager(mContext, mPhoneAccountHandle);
+            if(telephonyManager == null){
+                VvmLog.e(TAG, "Cannot create TelephonyManager from " + mPhoneAccountHandle);
+                return;
+            }
+            telephonyManager.listen(this, PhoneStateListener.LISTEN_SERVICE_STATE);
+        }
+
+        public void unlisten() {
+            // TelephonyManager does not need to be pinned to an account when removing a
+            // PhoneStateListener, and mPhoneAccountHandle might be invalid at this point
+            // (e.g. SIM removal)
+            mContext.getSystemService(TelephonyManager.class)
+                    .listen(this, PhoneStateListener.LISTEN_NONE);
+            sListeners.put(mPhoneAccountHandle, null);
+        }
+
+        @Override
+        public void onServiceStateChanged(ServiceState serviceState) {
+            if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
+                VvmLog.i(TAG, "in service");
+                sendConnected(mContext, mPhoneAccountHandle);
+                unlisten();
+            }
+        }
+    }
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+
+        final String action = intent.getAction();
+        if (action == null) {
+            VvmLog.w(TAG, "Null action for intent.");
+            return;
+        }
+        VvmLog.i(TAG, action);
+        switch (action) {
+            case Intent.ACTION_BOOT_COMPLETED:
+                onBootCompleted(context);
+                break;
+            case TelephonyIntents.ACTION_SIM_STATE_CHANGED:
+                if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(
+                        intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE))) {
+                    // checkRemovedSim will scan all known accounts with isPhoneAccountActive() to find
+                    // which SIM is removed.
+                    // ACTION_SIM_STATE_CHANGED only provides subId which cannot be converted to a
+                    // PhoneAccountHandle when the SIM is absent.
+                    checkRemovedSim(context);
+                }
+                break;
+            case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
+                int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
+                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+
+                if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+                    VvmLog.i(TAG, "Received SIM change for invalid subscription id.");
+                    checkRemovedSim(context);
+                    return;
+                }
+
+                PhoneAccountHandle phoneAccountHandle =
+                        PhoneAccountHandleConverter.fromSubId(subId);
+
+                if ("null".equals(phoneAccountHandle.getId())) {
+                    VvmLog.e(TAG,
+                            "null phone account handle ID, possible modem crash."
+                                    + " Ignoring carrier config changed event");
+                    return;
+                }
+                onCarrierConfigChanged(context, phoneAccountHandle);
+        }
+    }
+
+    private void onBootCompleted(Context context) {
+        for (PhoneAccountHandle phoneAccountHandle : sPreBootHandles) {
+            TelephonyManager telephonyManager = getTelephonyManager(context, phoneAccountHandle);
+            if (telephonyManager == null) {
+                continue;
+            }
+            if (telephonyManager.getServiceState().getState() == ServiceState.STATE_IN_SERVICE) {
+                sListeners.put(phoneAccountHandle, null);
+                sendConnected(context, phoneAccountHandle);
+            } else {
+                listenToAccount(context, phoneAccountHandle);
+            }
+        }
+        sPreBootHandles.clear();
+    }
+
+    private void sendConnected(Context context, PhoneAccountHandle phoneAccountHandle) {
+        VvmLog.i(TAG, "Service connected on " + phoneAccountHandle);
+        RemoteVvmTaskManager.startCellServiceConnected(context, phoneAccountHandle);
+    }
+
+    private void checkRemovedSim(Context context) {
+        SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
+        if (!isBootCompleted()) {
+            for (PhoneAccountHandle phoneAccountHandle : sPreBootHandles) {
+                if (!PhoneUtils.isPhoneAccountActive(subscriptionManager, phoneAccountHandle)) {
+                    sPreBootHandles.remove(phoneAccountHandle);
+                }
+            }
+            return;
+        }
+        Set<PhoneAccountHandle> removeList = new ArraySet<>();
+        for (PhoneAccountHandle phoneAccountHandle : sListeners.keySet()) {
+            if (!PhoneUtils.isPhoneAccountActive(subscriptionManager, phoneAccountHandle)) {
+                removeList.add(phoneAccountHandle);
+                ServiceStateListener listener = sListeners.get(phoneAccountHandle);
+                if (listener != null) {
+                    listener.unlisten();
+                }
+                sendSimRemoved(context, phoneAccountHandle);
+            }
+        }
+
+        for (PhoneAccountHandle phoneAccountHandle : removeList) {
+            sListeners.remove(phoneAccountHandle);
+        }
+    }
+
+    private boolean isBootCompleted() {
+        return SystemProperties.getBoolean("sys.boot_completed", false);
+    }
+
+    private void sendSimRemoved(Context context, PhoneAccountHandle phoneAccountHandle) {
+        VvmLog.i(TAG, "Sim removed on " + phoneAccountHandle);
+        RemoteVvmTaskManager.startSimRemoved(context, phoneAccountHandle);
+    }
+
+    private void onCarrierConfigChanged(Context context, PhoneAccountHandle phoneAccountHandle) {
+        if (!isBootCompleted()) {
+            sPreBootHandles.add(phoneAccountHandle);
+            return;
+        }
+        TelephonyManager telephonyManager = getTelephonyManager(context, phoneAccountHandle);
+        if(telephonyManager == null){
+            int subId = context.getSystemService(TelephonyManager.class).getSubIdForPhoneAccount(
+                    context.getSystemService(TelecomManager.class)
+                            .getPhoneAccount(phoneAccountHandle));
+            VvmLog.e(TAG, "Cannot create TelephonyManager from " + phoneAccountHandle + ", subId="
+                    + subId);
+            // TODO(b/33945549): investigate more why this is happening. The PhoneAccountHandle was
+            // just converted from a valid subId so createForPhoneAccountHandle shouldn't really
+            // return null.
+            return;
+        }
+        if (telephonyManager.getServiceState().getState()
+                == ServiceState.STATE_IN_SERVICE) {
+            sendConnected(context, phoneAccountHandle);
+            sListeners.put(phoneAccountHandle, null);
+        } else {
+            listenToAccount(context, phoneAccountHandle);
+        }
+    }
+
+    private void listenToAccount(Context context, PhoneAccountHandle phoneAccountHandle) {
+        ServiceStateListener listener = new ServiceStateListener(context, phoneAccountHandle);
+        listener.listen();
+        sListeners.put(phoneAccountHandle, listener);
+    }
+
+    @Nullable
+    private static TelephonyManager getTelephonyManager(Context context,
+            PhoneAccountHandle phoneAccountHandle) {
+        return context.getSystemService(TelephonyManager.class)
+                .createForPhoneAccountHandle(phoneAccountHandle);
+    }
+}
diff --git a/src/com/android/phone/vvm/VvmSmsReceiver.java b/src/com/android/phone/vvm/VvmSmsReceiver.java
new file mode 100644
index 0000000..4bffa97
--- /dev/null
+++ b/src/com/android/phone/vvm/VvmSmsReceiver.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.vvm;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.VoicemailContract;
+import android.telephony.SubscriptionManager;
+import android.telephony.VisualVoicemailSms;
+
+/**
+ * Receives the SMS filtered by {@link com.android.internal.telephony.VisualVoicemailSmsFilter} and
+ * redirect it to the visual voicemail client. The redirection is required to let telephony service
+ * handle tasks with {@link RemoteVvmTaskManager}
+ */
+public class VvmSmsReceiver extends BroadcastReceiver {
+
+    private static final String TAG = "VvmSmsReceiver";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        VisualVoicemailSms sms = intent.getExtras()
+                .getParcelable(VoicemailContract.EXTRA_VOICEMAIL_SMS);
+
+        if (sms.getPhoneAccountHandle() == null) {
+            // This should never happen
+            VvmLog.e(TAG, "Received message for null phone account");
+            return;
+        }
+
+        int subId = PhoneAccountHandleConverter.toSubId(sms.getPhoneAccountHandle());
+        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+            VvmLog.e(TAG, "Received message for invalid subId");
+            return;
+        }
+
+        if (RemoteVvmTaskManager.hasRemoteService(context, subId)) {
+            VvmLog.i(TAG, "Sending SMS received event to remote service");
+            RemoteVvmTaskManager.startSmsReceived(context, sms);
+        } else {
+            VvmLog.w(TAG, "Sending SMS received event to remote service");
+        };
+    }
+}
diff --git a/src/com/android/phone/vvm/omtp/LocalLogHelper.java b/src/com/android/phone/vvm/omtp/LocalLogHelper.java
deleted file mode 100644
index a3de74f..0000000
--- a/src/com/android/phone/vvm/omtp/LocalLogHelper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import com.android.internal.telephony.PhoneFactory;
-
-/**
- * Helper methods for adding to Telephony local logs.
- */
-public class LocalLogHelper {
-    public static final String KEY = "OmtpVvm";
-    private static final int MAX_OMTP_VVM_LOGS = 20;
-
-    public static void log(String tag, String log) {
-        try {
-            PhoneFactory.addLocalLog(KEY, MAX_OMTP_VVM_LOGS);
-        } catch (IllegalArgumentException e){
-        } finally {
-            PhoneFactory.localLog(KEY, tag + ": " + log);
-        }
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/OmtpConstants.java b/src/com/android/phone/vvm/omtp/OmtpConstants.java
deleted file mode 100644
index fa3cb63..0000000
--- a/src/com/android/phone/vvm/omtp/OmtpConstants.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Wrapper class to hold relevant OMTP constants as defined in the OMTP spec.
- * <p>
- * In essence this is a programmatic representation of the relevant portions of OMTP spec.
- */
-public class OmtpConstants {
-    public static final String SMS_FIELD_SEPARATOR = ";";
-    public static final String SMS_KEY_VALUE_SEPARATOR = "=";
-    public static final String SMS_PREFIX_SEPARATOR = ":";
-
-    public static final String CLIENT_PREFIX = "//VVM";
-    public static final String SYNC_SMS_PREFIX = CLIENT_PREFIX + ":SYNC:";
-    public static final String STATUS_SMS_PREFIX = CLIENT_PREFIX + ":STATUS:";
-
-    // This is the format designated by the OMTP spec.
-    public static final String DATE_TIME_FORMAT = "dd/MM/yyyy HH:mm Z";
-
-    /** OMTP protocol versions. */
-    public static final String PROTOCOL_VERSION1_1 = "11";
-    public static final String PROTOCOL_VERSION1_2 = "12";
-    public static final String PROTOCOL_VERSION1_3 = "13";
-
-    ///////////////////////// Client/Mobile originated SMS //////////////////////
-
-    /** Mobile Originated requests */
-    public static final String ACTIVATE_REQUEST = "Activate";
-    public static final String DEACTIVATE_REQUEST = "Deactivate";
-    public static final String STATUS_REQUEST = "Status";
-
-    /** fields that can be present in a Mobile Originated OMTP SMS */
-    public static final String CLIENT_TYPE = "ct";
-    public static final String APPLICATION_PORT = "pt";
-    public static final String PROTOCOL_VERSION = "pv";
-
-
-    //////////////////////////////// Sync SMS fields ////////////////////////////
-
-    /**
-     * Sync SMS fields.
-     * <p>
-     * Each string constant is the field's key in the SMS body which is used by the parser to
-     * identify the field's value, if present, in the SMS body.
-     */
-
-    /**
-     * The event that triggered this SYNC SMS.
-     * See {@link OmtpConstants#SYNC_TRIGGER_EVENT_VALUES}
-     */
-    public static final String SYNC_TRIGGER_EVENT = "ev";
-    public static final String MESSAGE_UID = "id";
-    public static final String MESSAGE_LENGTH = "l";
-    public static final String NUM_MESSAGE_COUNT = "c";
-    /** See {@link OmtpConstants#CONTENT_TYPE_VALUES} */
-    public static final String CONTENT_TYPE = "t";
-    public static final String SENDER = "s";
-    public static final String TIME = "dt";
-
-    /**
-     * SYNC message trigger events.
-     * <p>
-     * These are the possible values of {@link OmtpConstants#SYNC_TRIGGER_EVENT}.
-     */
-    public static final String NEW_MESSAGE = "NM";
-    public static final String MAILBOX_UPDATE = "MBU";
-    public static final String GREETINGS_UPDATE = "GU";
-
-    public static final String[] SYNC_TRIGGER_EVENT_VALUES = {
-        NEW_MESSAGE,
-        MAILBOX_UPDATE,
-        GREETINGS_UPDATE
-    };
-
-    /**
-     * Content types supported by OMTP VVM.
-     * <p>
-     * These are the possible values of {@link OmtpConstants#CONTENT_TYPE}.
-     */
-    public static final String VOICE = "v";
-    public static final String VIDEO = "o";
-    public static final String FAX = "f";
-    /** Voice message deposited by an external application */
-    public static final String INFOTAINMENT = "i";
-    /** Empty Call Capture - i.e. voicemail with no voice message. */
-    public static final String ECC = "e";
-
-    public static final String[] CONTENT_TYPE_VALUES = {VOICE, VIDEO, FAX, INFOTAINMENT, ECC};
-
-    ////////////////////////////// Status SMS fields ////////////////////////////
-
-    /**
-     * Status SMS fields.
-     * <p>
-     * Each string constant is the field's key in the SMS body which is used by the parser to
-     * identify the field's value, if present, in the SMS body.
-     */
-    /** See {@link OmtpConstants#PROVISIONING_STATUS_VALUES} */
-    public static final String PROVISIONING_STATUS = "st";
-    /** See {@link OmtpConstants#RETURN_CODE_VALUES} */
-    public static final String RETURN_CODE = "rc";
-    /** URL to send users to for activation VVM */
-    public static final String SUBSCRIPTION_URL = "rs";
-    /** IMAP4/SMTP server IP address or fully qualified domain name */
-    public static final String SERVER_ADDRESS = "srv";
-    /** Phone number to access voicemails through Telephony User Interface */
-    public static final String TUI_ACCESS_NUMBER = "tui";
-    /** Number to send client origination SMS */
-    public static final String CLIENT_SMS_DESTINATION_NUMBER = "dn";
-    public static final String IMAP_PORT = "ipt";
-    public static final String IMAP_USER_NAME = "u";
-    public static final String IMAP_PASSWORD = "pw";
-    public static final String SMTP_PORT = "spt";
-    public static final String SMTP_USER_NAME = "smtp_u";
-    public static final String SMTP_PASSWORD = "smtp_pw";
-
-    /**
-     * User provisioning status values.
-     * <p>
-     * Referred by {@link OmtpConstants#PROVISIONING_STATUS}.
-     */
-    // TODO: As per the spec the code could be either be with or w/o quotes  = "N"/N). Currently
-    // this only handles the w/o quotes values.
-    public static final String SUBSCRIBER_NEW = "N";
-    public static final String SUBSCRIBER_READY = "R";
-    public static final String SUBSCRIBER_PROVISIONED = "P";
-    public static final String SUBSCRIBER_UNKNOWN = "U";
-    public static final String SUBSCRIBER_BLOCKED = "B";
-
-    public static final String[] PROVISIONING_STATUS_VALUES = {
-        SUBSCRIBER_NEW,
-        SUBSCRIBER_READY,
-        SUBSCRIBER_PROVISIONED,
-        SUBSCRIBER_UNKNOWN,
-        SUBSCRIBER_BLOCKED
-    };
-
-    /**
-     * The return code included in a status message.
-     * <p>
-     * These are the possible values of {@link OmtpConstants#RETURN_CODE}.
-     */
-    public static final String SUCCESS = "0";
-    public static final String SYSTEM_ERROR = "1";
-    public static final String SUBSCRIBER_ERROR = "2";
-    public static final String MAILBOX_UNKNOWN = "3";
-    public static final String VVM_NOT_ACTIVATED = "4";
-    public static final String VVM_NOT_PROVISIONED = "5";
-    public static final String VVM_CLIENT_UKNOWN = "6";
-    public static final String VVM_MAILBOX_NOT_INITIALIZED = "7";
-
-    public static final String[] RETURN_CODE_VALUES = {
-        SUCCESS,
-        SYSTEM_ERROR,
-        SUBSCRIBER_ERROR,
-        MAILBOX_UNKNOWN,
-        VVM_NOT_ACTIVATED,
-        VVM_NOT_PROVISIONED,
-        VVM_CLIENT_UKNOWN,
-        VVM_MAILBOX_NOT_INITIALIZED,
-    };
-
-    /**
-     * A map of all the field keys to the possible values they can have.
-     */
-    public static final Map<String, String[]> possibleValuesMap = new HashMap<String, String[]>() {{
-        put(SYNC_TRIGGER_EVENT, SYNC_TRIGGER_EVENT_VALUES);
-        put(CONTENT_TYPE, CONTENT_TYPE_VALUES);
-        put(PROVISIONING_STATUS, PROVISIONING_STATUS_VALUES);
-        put(RETURN_CODE, RETURN_CODE_VALUES);
-    }};
-
-    /** Indicates the client is Google visual voicemail version 1.0. */
-    public static final String CLIENT_TYPE_GOOGLE_10 = "google.vvm.10";
-}
diff --git a/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java b/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java
deleted file mode 100644
index 9f39db1..0000000
--- a/src/com/android/phone/vvm/omtp/OmtpVvmCarrierConfigHelper.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import android.content.Context;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SmsManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.phone.vvm.omtp.sms.OmtpCvvmMessageSender;
-import com.android.phone.vvm.omtp.sms.OmtpMessageSender;
-import com.android.phone.vvm.omtp.sms.OmtpStandardMessageSender;
-
-/**
- * Handle activation and deactivation of a visual voicemail source. This class is necessary to
- * retrieve carrier vvm configuration details before sending the appropriate texts.
- */
-public class OmtpVvmCarrierConfigHelper {
-    private static final String TAG = "OmtpVvmCarrierConfigHelper";
-    private Context mContext;
-    private int mSubId;
-    private PersistableBundle mCarrierConfig;
-    private String mVvmType;
-
-    public OmtpVvmCarrierConfigHelper(Context context, int subId) {
-        mContext = context;
-        mSubId = subId;
-        mCarrierConfig = getCarrierConfig();
-        mVvmType = getVvmType();
-    }
-
-    public String getVvmType() {
-        if (mCarrierConfig == null) {
-            return null;
-        }
-
-        return mCarrierConfig.getString(
-                CarrierConfigManager.KEY_VVM_TYPE_STRING, null);
-    }
-
-    public String getCarrierVvmPackageName() {
-        if (mCarrierConfig == null) {
-            return null;
-        }
-
-        return mCarrierConfig.getString(
-                CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING, null);
-    }
-
-    public boolean isOmtpVvmType() {
-        return (TelephonyManager.VVM_TYPE_OMTP.equals(mVvmType) ||
-                TelephonyManager.VVM_TYPE_CVVM.equals(mVvmType));
-    }
-
-    /**
-     * For checking upon sim insertion whether visual voicemail should be enabled. This method does
-     * so by checking if the carrier's voicemail app is installed.
-     */
-    public boolean isEnabledByDefault() {
-        String packageName = mCarrierConfig.getString(
-                CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING);
-        if (packageName == null) {
-            return true;
-        }
-        try {
-            mContext.getPackageManager().getPackageInfo(packageName, 0);
-            return false;
-        } catch (NameNotFoundException e) {
-            return true;
-        }
-    }
-
-    public void startActivation() {
-        OmtpMessageSender messageSender = getMessageSender();
-        if (messageSender != null) {
-            Log.i(TAG, "Requesting VVM activation for subId: " + mSubId);
-            messageSender.requestVvmActivation(null);
-        }
-    }
-
-    public void startDeactivation() {
-        OmtpMessageSender messageSender = getMessageSender();
-        if (messageSender != null) {
-            Log.i(TAG, "Requesting VVM deactivation for subId: " + mSubId);
-            messageSender.requestVvmDeactivation(null);
-        }
-    }
-
-    private PersistableBundle getCarrierConfig() {
-        if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
-            Log.w(TAG, "Invalid subscriptionId or subscriptionId not provided in intent.");
-            return null;
-        }
-
-        CarrierConfigManager carrierConfigManager = (CarrierConfigManager)
-                mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        if (carrierConfigManager == null) {
-            Log.w(TAG, "No carrier config service found.");
-            return null;
-        }
-
-        return carrierConfigManager.getConfigForSubId(mSubId);
-    }
-
-    private OmtpMessageSender getMessageSender() {
-        if (mCarrierConfig == null) {
-            Log.w(TAG, "Empty carrier config.");
-            return null;
-        }
-
-        int applicationPort = mCarrierConfig.getInt(
-                CarrierConfigManager.KEY_VVM_PORT_NUMBER_INT, 0);
-        String destinationNumber = mCarrierConfig.getString(
-                CarrierConfigManager.KEY_VVM_DESTINATION_NUMBER_STRING);
-        if (TextUtils.isEmpty(destinationNumber)) {
-            Log.w(TAG, "No destination number for this carrier.");
-            return null;
-        }
-
-        OmtpMessageSender messageSender = null;
-        SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(mSubId);
-        switch (mVvmType) {
-            case TelephonyManager.VVM_TYPE_OMTP:
-                messageSender = new OmtpStandardMessageSender(smsManager, (short) applicationPort,
-                        destinationNumber, null, OmtpConstants.PROTOCOL_VERSION1_1, null);
-                break;
-            case TelephonyManager.VVM_TYPE_CVVM:
-                messageSender = new OmtpCvvmMessageSender(smsManager, (short) applicationPort,
-                        destinationNumber);
-                break;
-            default:
-                Log.w(TAG, "Unexpected visual voicemail type: " + mVvmType);
-        }
-
-        return messageSender;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/SimChangeReceiver.java b/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
deleted file mode 100644
index a3255e3..0000000
--- a/src/com/android/phone/vvm/omtp/SimChangeReceiver.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.UserHandle;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.util.Log;
-
-import com.android.internal.telephony.IccCardConstants;
-import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.TelephonyIntents;
-import com.android.phone.PhoneUtils;
-import com.android.phone.R;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-
-/**
- * This class listens to the {@link CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED} and
- * {@link TelephonyIntents#ACTION_SIM_STATE_CHANGED} to determine when a SIM is added, replaced,
- * or removed.
- *
- * When a SIM is added, send an activate SMS. When a SIM is removed, remove the sync accounts and
- * change the status in the voicemail_status table.
- */
-public class SimChangeReceiver extends BroadcastReceiver {
-    private final String TAG = "SimChangeReceiver";
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        if (UserHandle.myUserId() != UserHandle.USER_OWNER) {
-            Log.v(TAG, "Received broadcast for user that is not owner.");
-            return;
-        }
-
-        final String action = intent.getAction();
-        if (action == null) {
-            Log.w(TAG, "Null action for intent.");
-            return;
-        }
-
-        switch (action) {
-            case TelephonyIntents.ACTION_SIM_STATE_CHANGED:
-                if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(
-                        intent.getStringExtra(IccCardConstants.INTENT_KEY_ICC_STATE))) {
-                    Log.i(TAG, "Sim removed, removing inactive accounts");
-                    OmtpVvmSourceManager.getInstance(context).removeInactiveSources();
-                }
-                break;
-            case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
-                int subId = intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY,
-                        SubscriptionManager.INVALID_SUBSCRIPTION_ID);
-                OmtpVvmCarrierConfigHelper carrierConfigHelper =
-                        new OmtpVvmCarrierConfigHelper(context, subId);
-
-                if (carrierConfigHelper.isOmtpVvmType()) {
-                    PhoneAccountHandle phoneAccount = PhoneUtils.makePstnPhoneAccountHandle(
-                            SubscriptionManager.getPhoneId(subId));
-
-                    boolean isUserSet = VisualVoicemailSettingsUtil.isVisualVoicemailUserSet(
-                            context, phoneAccount);
-                    boolean isEnabledInSettings =
-                            VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(context,
-                            phoneAccount);
-                    boolean isSupported =
-                            context.getResources().getBoolean(R.bool.allow_visual_voicemail);
-                    boolean isEnabled = isSupported && (isUserSet ? isEnabledInSettings :
-                        carrierConfigHelper.isEnabledByDefault());
-
-                    if (!isUserSet) {
-                        // Preserve the previous setting for "isVisualVoicemailEnabled" if it is
-                        // set by the user, otherwise, set this value for the first time.
-                        VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(context, phoneAccount,
-                                isEnabled, /** isUserSet */ false);
-                    }
-
-                    if (isEnabled) {
-                        LocalLogHelper.log(TAG, "Sim state or carrier config changed: requesting"
-                                + " activation for " + phoneAccount.getId());
-
-                        // Add a phone state listener so that changes to the communication channels
-                        // can be recorded.
-                        OmtpVvmSourceManager.getInstance(context).addPhoneStateListener(
-                                phoneAccount);
-                        carrierConfigHelper.startActivation();
-                    } else {
-                        // It may be that the source was not registered to begin with but we want
-                        // to run through the steps to remove the source just in case.
-                        OmtpVvmSourceManager.getInstance(context).removeSource(phoneAccount);
-                        Log.v(TAG, "Sim change for disabled account.");
-                    }
-                }
-                break;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java b/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java
deleted file mode 100644
index 4ec740e..0000000
--- a/src/com/android/phone/vvm/omtp/VvmPackageInstallReceiver.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.telecom.PhoneAccountHandle;
-
-import com.android.phone.PhoneUtils;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-
-import java.util.Set;
-
-/**
- * When a new package is installed, check if it matches any of the vvm carrier apps of the currently
- * enabled dialer vvm sources.
- */
-public class VvmPackageInstallReceiver extends BroadcastReceiver {
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        if (intent.getData() == null) {
-            return;
-        }
-
-        String packageName = intent.getData().getSchemeSpecificPart();
-        if (packageName == null) {
-            return;
-        }
-
-        OmtpVvmSourceManager vvmSourceManager = OmtpVvmSourceManager.getInstance(context);
-        Set<PhoneAccountHandle> phoneAccounts = vvmSourceManager.getOmtpVvmSources();
-        for (PhoneAccountHandle phoneAccount : phoneAccounts) {
-            if (VisualVoicemailSettingsUtil.isVisualVoicemailUserSet(context, phoneAccount)) {
-                // Skip the check if this voicemail source's setting is overridden by the user.
-                continue;
-            }
-
-            OmtpVvmCarrierConfigHelper carrierConfigHelper = new OmtpVvmCarrierConfigHelper(
-                    context, PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount));
-            if (packageName.equals(carrierConfigHelper.getCarrierVvmPackageName())) {
-                VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(
-                        context, phoneAccount, false, false);
-                OmtpVvmSourceManager.getInstance(context).removeSource(phoneAccount);
-                carrierConfigHelper.startDeactivation();
-            }
-        }
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java b/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java
deleted file mode 100644
index 1b2e34e..0000000
--- a/src/com/android/phone/vvm/omtp/VvmPhoneStateListener.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp;
-
-import android.content.Context;
-import android.content.Intent;
-import android.provider.VoicemailContract;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
-import android.util.Log;
-
-import com.android.phone.PhoneGlobals;
-import com.android.phone.PhoneUtils;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
-import com.android.phone.vvm.omtp.sync.VoicemailStatusQueryHelper;
-
-/**
- * Check if service is lost and indicate this in the voicemail status.
- */
-public class VvmPhoneStateListener extends PhoneStateListener {
-    private static final String TAG = "VvmPhoneStateListener";
-
-    private PhoneAccountHandle mPhoneAccount;
-    private Context mContext;
-    private int mPreviousState = -1;
-
-    public VvmPhoneStateListener(Context context, PhoneAccountHandle accountHandle) {
-        super(PhoneUtils.getSubIdForPhoneAccountHandle(accountHandle));
-        mContext = context;
-        mPhoneAccount = accountHandle;
-    }
-
-    @Override
-    public void onServiceStateChanged(ServiceState serviceState) {
-        int state = serviceState.getState();
-        if (state == mPreviousState || (state != ServiceState.STATE_IN_SERVICE
-                && mPreviousState != ServiceState.STATE_IN_SERVICE)) {
-            // Only interested in state changes or transitioning into or out of "in service".
-            // Otherwise just quit.
-            mPreviousState = state;
-            return;
-        }
-
-        if (state == ServiceState.STATE_IN_SERVICE) {
-            VoicemailStatusQueryHelper voicemailStatusQueryHelper =
-                    new VoicemailStatusQueryHelper(mContext);
-            if (voicemailStatusQueryHelper.isVoicemailSourceConfigured(mPhoneAccount)) {
-                if (!voicemailStatusQueryHelper.isNotificationsChannelActive(mPhoneAccount)) {
-                    Log.v(TAG, "Notifications channel is active for " + mPhoneAccount.getId());
-                    VoicemailContract.Status.setStatus(mContext, mPhoneAccount,
-                            VoicemailContract.Status.CONFIGURATION_STATE_OK,
-                            VoicemailContract.Status.DATA_CHANNEL_STATE_OK,
-                            VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
-                    PhoneGlobals.getInstance().clearMwiIndicator(
-                            PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount));
-                }
-            }
-
-            if (OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(mPhoneAccount)) {
-                Log.v(TAG, "Signal returned: requesting resync for " + mPhoneAccount.getId());
-                LocalLogHelper.log(TAG,
-                        "Signal returned: requesting resync for " + mPhoneAccount.getId());
-                // If the source is already registered, run a full sync in case something was missed
-                // while signal was down.
-                Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
-                        mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
-                        true /* firstAttempt */);
-                mContext.startService(serviceIntent);
-            } else {
-                Log.v(TAG, "Signal returned: reattempting activation for " + mPhoneAccount.getId());
-                LocalLogHelper.log(TAG,
-                        "Signal returned: reattempting activation for " + mPhoneAccount.getId());
-                // Otherwise initiate an activation because this means that an OMTP source was
-                // recognized but either the activation text was not successfully sent or a response
-                // was not received.
-                OmtpVvmCarrierConfigHelper carrierConfigHelper = new OmtpVvmCarrierConfigHelper(
-                        mContext, PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount));
-                carrierConfigHelper.startActivation();
-            }
-        } else {
-            Log.v(TAG, "Notifications channel is inactive for " + mPhoneAccount.getId());
-            mContext.stopService(OmtpVvmSyncService.getSyncIntent(
-                    mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
-                    true /* firstAttempt */));
-
-            if (!OmtpVvmSourceManager.getInstance(mContext).isVvmSourceRegistered(mPhoneAccount)) {
-                return;
-            }
-
-            VoicemailContract.Status.setStatus(mContext, mPhoneAccount,
-                    VoicemailContract.Status.CONFIGURATION_STATE_OK,
-                    VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION,
-                    VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
-        }
-        mPreviousState = state;
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java b/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java
deleted file mode 100644
index 0f9a41f..0000000
--- a/src/com/android/phone/vvm/omtp/fetch/FetchVoicemailReceiver.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.fetch;
-
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.phone.PhoneUtils;
-import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.imap.ImapHelper;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-public class FetchVoicemailReceiver extends BroadcastReceiver {
-    private static final String TAG = "FetchVoicemailReceiver";
-
-    final static String[] PROJECTION = new String[] {
-        Voicemails.SOURCE_DATA,      // 0
-        Voicemails.PHONE_ACCOUNT_ID, // 1
-    };
-
-    public static final int SOURCE_DATA = 0;
-    public static final int PHONE_ACCOUNT_ID = 1;
-
-    // Timeout used to call ConnectivityManager.requestNetwork
-    private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 60 * 1000;
-
-    // Number of retries
-    private static final int NETWORK_RETRY_COUNT = 3;
-
-    private ContentResolver mContentResolver;
-    private Uri mUri;
-    private NetworkRequest mNetworkRequest;
-    private OmtpVvmNetworkRequestCallback mNetworkCallback;
-    private Context mContext;
-    private String mUid;
-    private ConnectivityManager mConnectivityManager;
-    private PhoneAccountHandle mPhoneAccount;
-    private int mRetryCount = NETWORK_RETRY_COUNT;
-
-    @Override
-    public void onReceive(final Context context, Intent intent) {
-        if (VoicemailContract.ACTION_FETCH_VOICEMAIL.equals(intent.getAction())) {
-            mContext = context;
-            mContentResolver = context.getContentResolver();
-            mUri = intent.getData();
-
-            if (mUri == null) {
-                Log.w(TAG, VoicemailContract.ACTION_FETCH_VOICEMAIL + " intent sent with no data");
-                return;
-            }
-
-            if (!context.getPackageName().equals(
-                    mUri.getQueryParameter(VoicemailContract.PARAM_KEY_SOURCE_PACKAGE))) {
-                // Ignore if the fetch request is for a voicemail not from this package.
-                return;
-            }
-
-            Cursor cursor = mContentResolver.query(mUri, PROJECTION, null, null, null);
-            if (cursor == null) {
-                return;
-            }
-            try {
-                if (cursor.moveToFirst()) {
-                    mUid = cursor.getString(SOURCE_DATA);
-                    String accountId = cursor.getString(PHONE_ACCOUNT_ID);
-                    if (TextUtils.isEmpty(accountId)) {
-                        TelephonyManager telephonyManager = (TelephonyManager)
-                                context.getSystemService(Context.TELEPHONY_SERVICE);
-                        accountId = telephonyManager.getSimSerialNumber();
-
-                        if (TextUtils.isEmpty(accountId)) {
-                            Log.e(TAG, "Account null and no default sim found.");
-                            return;
-                        }
-                    }
-
-                    mPhoneAccount = PhoneUtils.makePstnPhoneAccountHandle(accountId);
-                    if (!OmtpVvmSourceManager.getInstance(context)
-                            .isVvmSourceRegistered(mPhoneAccount)) {
-                        Log.w(TAG, "Account not registered - cannot retrieve message.");
-                        return;
-                    }
-
-                    int subId = PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount);
-                    OmtpVvmCarrierConfigHelper carrierConfigHelper =
-                            new OmtpVvmCarrierConfigHelper(context, subId);
-
-                    if (TelephonyManager.VVM_TYPE_CVVM.equals(carrierConfigHelper.getVvmType())) {
-                        fetchVoicemail(null);
-                    } else {
-                        mNetworkRequest = new NetworkRequest.Builder()
-                                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
-                                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
-                                .setNetworkSpecifier(Integer.toString(subId))
-                                .build();
-
-                        mNetworkCallback = new OmtpVvmNetworkRequestCallback();
-                        requestNetwork();
-                    }
-                }
-            } finally {
-                cursor.close();
-            }
-        }
-    }
-
-    private class OmtpVvmNetworkRequestCallback extends ConnectivityManager.NetworkCallback {
-        @Override
-        public void onAvailable(final Network network) {
-            fetchVoicemail(network);
-        }
-
-        @Override
-        public void onLost(Network network) {
-            releaseNetwork();
-        }
-
-        @Override
-        public void onUnavailable() {
-            releaseNetwork();
-        }
-    }
-
-    private void fetchVoicemail(final Network network) {
-        Executor executor = Executors.newCachedThreadPool();
-        executor.execute(new Runnable() {
-            @Override
-            public void run() {
-                while (mRetryCount > 0) {
-                    ImapHelper imapHelper = new ImapHelper(mContext, mPhoneAccount, network);
-                    if (!imapHelper.isSuccessfullyInitialized()) {
-                        Log.w(TAG, "Can't retrieve Imap credentials.");
-                        // releaseNetwork() will check if the network callback exists
-                        releaseNetwork();
-                        return;
-                    }
-
-                    boolean success = imapHelper.fetchVoicemailPayload(
-                            new VoicemailFetchedCallback(mContext, mUri), mUid);
-                    if (!success && mRetryCount > 0) {
-                        mRetryCount--;
-                    } else {
-                        releaseNetwork();
-                        return;
-                    }
-                }
-            }
-        });
-    }
-
-    private void requestNetwork() {
-        getConnectivityManager().requestNetwork(
-                mNetworkRequest, mNetworkCallback, NETWORK_REQUEST_TIMEOUT_MILLIS);
-    }
-
-    private void releaseNetwork() {
-        if (mNetworkCallback != null) {
-            getConnectivityManager().unregisterNetworkCallback(mNetworkCallback);
-        }
-    }
-
-    private ConnectivityManager getConnectivityManager() {
-        if (mConnectivityManager == null) {
-            mConnectivityManager = (ConnectivityManager) mContext.getSystemService(
-                    Context.CONNECTIVITY_SERVICE);
-        }
-        return mConnectivityManager;
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/fetch/VoicemailFetchedCallback.java b/src/com/android/phone/vvm/omtp/fetch/VoicemailFetchedCallback.java
deleted file mode 100644
index eb6a175..0000000
--- a/src/com/android/phone/vvm/omtp/fetch/VoicemailFetchedCallback.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.fetch;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.net.Uri;
-import android.provider.VoicemailContract.Voicemails;
-import android.util.Log;
-
-import com.android.phone.vvm.omtp.imap.VoicemailPayload;
-
-import libcore.io.IoUtils;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * Callback for when a voicemail payload is fetched. It copies the returned stream to the data
- * file corresponding to the voicemail.
- */
-public class VoicemailFetchedCallback {
-    private static final String TAG = "VoicemailFetchedCallback";
-
-    private ContentResolver mContentResolver;
-    private Uri mUri;
-
-    VoicemailFetchedCallback(Context context, Uri uri) {
-        mContentResolver = context.getContentResolver();
-        mUri = uri;
-    }
-
-    /**
-     * Saves the voicemail payload data into the voicemail provider then sets the "has_content" bit
-     * of the voicemail to "1".
-     *
-     * @param voicemailPayload The object containing the content data for the voicemail
-     */
-    public void setVoicemailContent(VoicemailPayload voicemailPayload) {
-        Log.d(TAG, String.format("Writing new voicemail content: %s", mUri));
-        OutputStream outputStream = null;
-
-        try {
-            outputStream = mContentResolver.openOutputStream(mUri);
-            byte[] inputBytes = voicemailPayload.getBytes();
-            if (inputBytes != null) {
-                outputStream.write(inputBytes);
-            }
-        } catch (IOException e) {
-            Log.w(TAG, String.format("File not found for %s", mUri));
-            return;
-        } finally {
-            IoUtils.closeQuietly(outputStream);
-        }
-
-        // Update mime_type & has_content after we are done with file update.
-        ContentValues values = new ContentValues();
-        values.put(Voicemails.MIME_TYPE, voicemailPayload.getMimeType());
-        values.put(Voicemails.HAS_CONTENT, true);
-        int updatedCount = mContentResolver.update(mUri, values, null, null);
-        if (updatedCount != 1) {
-            Log.e(TAG, "Updating voicemail should have updated 1 row, was: " + updatedCount);
-        }
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java b/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
deleted file mode 100644
index 1c2ae32..0000000
--- a/src/com/android/phone/vvm/omtp/imap/ImapHelper.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.imap;
-
-import android.content.Context;
-import android.net.Network;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.Voicemail;
-import android.telephony.TelephonyManager;
-import android.util.Base64;
-
-import com.android.phone.PhoneUtils;
-import com.android.phone.common.mail.Address;
-import com.android.phone.common.mail.Body;
-import com.android.phone.common.mail.BodyPart;
-import com.android.phone.common.mail.FetchProfile;
-import com.android.phone.common.mail.Flag;
-import com.android.phone.common.mail.Message;
-import com.android.phone.common.mail.MessagingException;
-import com.android.phone.common.mail.Multipart;
-import com.android.phone.common.mail.TempDirectory;
-import com.android.phone.common.mail.internet.MimeMessage;
-import com.android.phone.common.mail.store.ImapFolder;
-import com.android.phone.common.mail.store.ImapStore;
-import com.android.phone.common.mail.store.imap.ImapConstants;
-import com.android.phone.common.mail.utils.LogUtils;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.fetch.VoicemailFetchedCallback;
-
-import libcore.io.IoUtils;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A helper interface to abstract commands sent across IMAP interface for a given account.
- */
-public class ImapHelper {
-    private final String TAG = "ImapHelper";
-
-    private ImapFolder mFolder;
-    private ImapStore mImapStore;
-    private Context mContext;
-    private PhoneAccountHandle mPhoneAccount;
-
-    public ImapHelper(Context context, PhoneAccountHandle phoneAccount, Network network) {
-        try {
-            mContext = context;
-            mPhoneAccount = phoneAccount;
-            TempDirectory.setTempDirectory(context);
-
-            String username = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
-                    OmtpConstants.IMAP_USER_NAME, phoneAccount);
-            String password = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
-                    OmtpConstants.IMAP_PASSWORD, phoneAccount);
-            String serverName = VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
-                    OmtpConstants.SERVER_ADDRESS, phoneAccount);
-            int port = Integer.parseInt(
-                    VisualVoicemailSettingsUtil.getVisualVoicemailCredentials(context,
-                            OmtpConstants.IMAP_PORT, phoneAccount));
-            int auth = ImapStore.FLAG_NONE;
-
-            OmtpVvmCarrierConfigHelper carrierConfigHelper = new OmtpVvmCarrierConfigHelper(context,
-                    PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount));
-            if (TelephonyManager.VVM_TYPE_CVVM.equals(carrierConfigHelper.getVvmType())) {
-                // TODO: move these into the carrier config app
-                port = 993;
-                auth = ImapStore.FLAG_SSL;
-            }
-
-            mImapStore = new ImapStore(
-                    context, username, password, port, serverName, auth, network);
-        } catch (NumberFormatException e) {
-            LogUtils.w(TAG, "Could not parse port number");
-        }
-    }
-
-    /**
-     * If mImapStore is null, this means that there was a missing or badly formatted port number,
-     * which means there aren't sufficient credentials for login. If mImapStore is succcessfully
-     * initialized, then ImapHelper is ready to go.
-     */
-    public boolean isSuccessfullyInitialized() {
-        return mImapStore != null;
-    }
-
-    /** The caller thread will block until the method returns. */
-    public boolean markMessagesAsRead(List<Voicemail> voicemails) {
-        return setFlags(voicemails, Flag.SEEN);
-    }
-
-    /** The caller thread will block until the method returns. */
-    public boolean markMessagesAsDeleted(List<Voicemail> voicemails) {
-        return setFlags(voicemails, Flag.DELETED);
-    }
-
-    /**
-     * Set flags on the server for a given set of voicemails.
-     *
-     * @param voicemails The voicemails to set flags for.
-     * @param flags The flags to set on the voicemails.
-     * @return {@code true} if the operation completes successfully, {@code false} otherwise.
-     */
-    private boolean setFlags(List<Voicemail> voicemails, String... flags) {
-        if (voicemails.size() == 0) {
-            return false;
-        }
-        try {
-            mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
-            if (mFolder != null) {
-                mFolder.setFlags(convertToImapMessages(voicemails), flags, true);
-                return true;
-            }
-            return false;
-        } catch (MessagingException e) {
-            LogUtils.e(TAG, e, "Messaging exception");
-            return false;
-        } finally {
-            closeImapFolder();
-        }
-    }
-
-    /**
-     * Fetch a list of voicemails from the server.
-     *
-     * @return A list of voicemail objects containing data about voicemails stored on the server.
-     */
-    public List<Voicemail> fetchAllVoicemails() {
-        List<Voicemail> result = new ArrayList<Voicemail>();
-        Message[] messages;
-        try {
-            mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
-            if (mFolder == null) {
-                // This means we were unable to successfully open the folder.
-                return null;
-            }
-
-            // This method retrieves lightweight messages containing only the uid of the message.
-            messages = mFolder.getMessages(null);
-
-            for (Message message : messages) {
-                // Get the voicemail details.
-                Voicemail voicemail = fetchVoicemail(message);
-                if (voicemail != null) {
-                    result.add(voicemail);
-                }
-            }
-            return result;
-        } catch (MessagingException e) {
-            LogUtils.e(TAG, e, "Messaging Exception");
-            return null;
-        } finally {
-            closeImapFolder();
-        }
-    }
-
-    /**
-     * Fetches the structure of the given message and returns the voicemail parsed from it.
-     *
-     * @throws MessagingException if fetching the structure of the message fails
-     */
-    private Voicemail fetchVoicemail(Message message)
-            throws MessagingException {
-        LogUtils.d(TAG, "Fetching message structure for " + message.getUid());
-
-        MessageStructureFetchedListener listener = new MessageStructureFetchedListener();
-
-        FetchProfile fetchProfile = new FetchProfile();
-        fetchProfile.addAll(Arrays.asList(FetchProfile.Item.FLAGS, FetchProfile.Item.ENVELOPE,
-                FetchProfile.Item.STRUCTURE));
-
-        // The IMAP folder fetch method will call "messageRetrieved" on the listener when the
-        // message is successfully retrieved.
-        mFolder.fetch(new Message[] {message}, fetchProfile, listener);
-        return listener.getVoicemail();
-    }
-
-
-    public boolean fetchVoicemailPayload(VoicemailFetchedCallback callback, final String uid) {
-        Message message;
-        try {
-            mFolder = openImapFolder(ImapFolder.MODE_READ_WRITE);
-            if (mFolder == null) {
-                // This means we were unable to successfully open the folder.
-                return false;
-            }
-            message = mFolder.getMessage(uid);
-            VoicemailPayload voicemailPayload = fetchVoicemailPayload(message);
-
-            if (voicemailPayload == null) {
-                return false;
-            }
-
-            callback.setVoicemailContent(voicemailPayload);
-            return true;
-        } catch (MessagingException e) {
-        } finally {
-            closeImapFolder();
-        }
-        return false;
-    }
-
-    /**
-     * Fetches the body of the given message and returns the parsed voicemail payload.
-     *
-     * @throws MessagingException if fetching the body of the message fails
-     */
-    private VoicemailPayload fetchVoicemailPayload(Message message)
-            throws MessagingException {
-        LogUtils.d(TAG, "Fetching message body for " + message.getUid());
-
-        MessageBodyFetchedListener listener = new MessageBodyFetchedListener();
-
-        FetchProfile fetchProfile = new FetchProfile();
-        fetchProfile.add(FetchProfile.Item.BODY);
-
-        mFolder.fetch(new Message[] {message}, fetchProfile, listener);
-        return listener.getVoicemailPayload();
-    }
-
-    /**
-     * Listener for the message structure being fetched.
-     */
-    private final class MessageStructureFetchedListener
-            implements ImapFolder.MessageRetrievalListener {
-        private Voicemail mVoicemail;
-
-        public MessageStructureFetchedListener() {
-        }
-
-        public Voicemail getVoicemail() {
-            return mVoicemail;
-        }
-
-        @Override
-        public void messageRetrieved(Message message) {
-            LogUtils.d(TAG, "Fetched message structure for " + message.getUid());
-            LogUtils.d(TAG, "Message retrieved: " + message);
-            try {
-                mVoicemail = getVoicemailFromMessage(message);
-                if (mVoicemail == null) {
-                    LogUtils.d(TAG, "This voicemail does not have an attachment...");
-                    return;
-                }
-            } catch (MessagingException e) {
-                LogUtils.e(TAG, e, "Messaging Exception");
-                closeImapFolder();
-            }
-        }
-
-        /**
-         * Convert an IMAP message to a voicemail object.
-         *
-         * @param message The IMAP message.
-         * @return The voicemail object corresponding to an IMAP message.
-         * @throws MessagingException
-         */
-        private Voicemail getVoicemailFromMessage(Message message) throws MessagingException {
-            if (!message.getMimeType().startsWith("multipart/")) {
-                LogUtils.w(TAG, "Ignored non multi-part message");
-                return null;
-            }
-
-            Multipart multipart = (Multipart) message.getBody();
-            for (int i = 0; i < multipart.getCount(); ++i) {
-                BodyPart bodyPart = multipart.getBodyPart(i);
-                String bodyPartMimeType = bodyPart.getMimeType().toLowerCase();
-                LogUtils.d(TAG, "bodyPart mime type: " + bodyPartMimeType);
-
-                if (bodyPartMimeType.startsWith("audio/")) {
-                    // Found an audio attachment, this is a valid voicemail.
-                    long time = message.getSentDate().getTime();
-                    String number = getNumber(message.getFrom());
-                    boolean isRead = Arrays.asList(message.getFlags()).contains(Flag.SEEN);
-
-                    return Voicemail.createForInsertion(time, number)
-                            .setPhoneAccount(mPhoneAccount)
-                            .setSourcePackage(mContext.getPackageName())
-                            .setSourceData(message.getUid())
-                            .setIsRead(isRead)
-                            .build();
-                }
-            }
-            // No attachment found, this is not a voicemail.
-            return null;
-        }
-
-        /**
-         * The "from" field of a visual voicemail IMAP message is the number of the caller who left
-         * the message. Extract this number from the list of "from" addresses.
-         *
-         * @param fromAddresses A list of addresses that comprise the "from" line.
-         * @return The number of the voicemail sender.
-         */
-        private String getNumber(Address[] fromAddresses) {
-            if (fromAddresses != null && fromAddresses.length > 0) {
-                if (fromAddresses.length != 1) {
-                    LogUtils.w(TAG, "More than one from addresses found. Using the first one.");
-                }
-                String sender = fromAddresses[0].getAddress();
-                int atPos = sender.indexOf('@');
-                if (atPos != -1) {
-                    // Strip domain part of the address.
-                    sender = sender.substring(0, atPos);
-                }
-                return sender;
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Listener for the message body being fetched.
-     */
-    private final class MessageBodyFetchedListener implements ImapFolder.MessageRetrievalListener {
-        private VoicemailPayload mVoicemailPayload;
-
-        /** Returns the fetch voicemail payload. */
-        public VoicemailPayload getVoicemailPayload() {
-            return mVoicemailPayload;
-        }
-
-        @Override
-        public void messageRetrieved(Message message) {
-            LogUtils.d(TAG, "Fetched message body for " + message.getUid());
-            LogUtils.d(TAG, "Message retrieved: " + message);
-            try {
-                mVoicemailPayload = getVoicemailPayloadFromMessage(message);
-            } catch (MessagingException e) {
-                LogUtils.e(TAG, "Messaging Exception:", e);
-            } catch (IOException e) {
-                LogUtils.e(TAG, "IO Exception:", e);
-            }
-        }
-
-        private VoicemailPayload getVoicemailPayloadFromMessage(Message message)
-                throws MessagingException, IOException {
-            Multipart multipart = (Multipart) message.getBody();
-            for (int i = 0; i < multipart.getCount(); ++i) {
-                BodyPart bodyPart = multipart.getBodyPart(i);
-                String bodyPartMimeType = bodyPart.getMimeType().toLowerCase();
-                LogUtils.d(TAG, "bodyPart mime type: " + bodyPartMimeType);
-
-                if (bodyPartMimeType.startsWith("audio/")) {
-                    byte[] bytes = getAudioDataFromBody(bodyPart.getBody());
-                    LogUtils.d(TAG, String.format("Fetched %s bytes of data", bytes.length));
-                    return new VoicemailPayload(bodyPartMimeType, bytes);
-                }
-            }
-            LogUtils.e(TAG, "No audio attachment found on this voicemail");
-            return null;
-        }
-
-        private byte[] getAudioDataFromBody(Body body) throws IOException, MessagingException {
-            ByteArrayOutputStream out = new ByteArrayOutputStream();
-            BufferedOutputStream bufferedOut = new BufferedOutputStream(out);
-            try {
-                body.writeTo(bufferedOut);
-            } finally {
-                IoUtils.closeQuietly(bufferedOut);
-            }
-            return Base64.decode(out.toByteArray(), Base64.DEFAULT);
-        }
-    }
-
-    private ImapFolder openImapFolder(String modeReadWrite) {
-        try {
-            if (mImapStore == null) {
-                return null;
-            }
-            ImapFolder folder = new ImapFolder(mImapStore, ImapConstants.INBOX);
-            folder.open(modeReadWrite);
-            return folder;
-        } catch (MessagingException e) {
-            LogUtils.e(TAG, e, "Messaging Exception");
-        }
-        return null;
-    }
-
-    private Message[] convertToImapMessages(List<Voicemail> voicemails) {
-        Message[] messages = new Message[voicemails.size()];
-        for (int i = 0; i < voicemails.size(); ++i) {
-            messages[i] = new MimeMessage();
-            messages[i].setUid(voicemails.get(i).getSourceData());
-        }
-        return messages;
-    }
-
-    private void closeImapFolder() {
-        if (mFolder != null) {
-            mFolder.close(true);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java b/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java
deleted file mode 100644
index 0ffa018..0000000
--- a/src/com/android/phone/vvm/omtp/imap/VoicemailPayload.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.vvm.omtp.imap;
-
-/**
- * The payload for a voicemail, usually audio data.
- */
-public class VoicemailPayload {
-    private final String mMimeType;
-    private final byte[] mBytes;
-
-    public VoicemailPayload(String mimeType, byte[] bytes) {
-        mMimeType = mimeType;
-        mBytes = bytes;
-    }
-
-    public byte[] getBytes() {
-        return mBytes;
-    }
-
-    public String getMimeType() {
-        return mMimeType;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpCvvmMessageSender.java b/src/com/android/phone/vvm/omtp/sms/OmtpCvvmMessageSender.java
deleted file mode 100644
index ef4e40b..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpCvvmMessageSender.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2015 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.annotation.Nullable;
-import android.app.PendingIntent;
-import android.telephony.SmsManager;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-/**
- * An implementation of the OmtpMessageSender for T-Mobile.
- */
-public class OmtpCvvmMessageSender extends OmtpMessageSender {
-    public OmtpCvvmMessageSender(SmsManager smsManager, short applicationPort,
-            String destinationNumber) {
-        super(smsManager, applicationPort, destinationNumber);
-    }
-
-    @Override
-    public void requestVvmActivation(@Nullable PendingIntent sentIntent) {
-        sendCvvmMessage(OmtpConstants.ACTIVATE_REQUEST, sentIntent);
-    }
-
-    @Override
-    public void requestVvmDeactivation(@Nullable PendingIntent sentIntent) {
-        sendCvvmMessage(OmtpConstants.DEACTIVATE_REQUEST, sentIntent);
-    }
-
-    @Override
-    public void requestVvmStatus(@Nullable PendingIntent sentIntent) {
-        sendCvvmMessage(OmtpConstants.STATUS_REQUEST, sentIntent);
-    }
-
-    private void sendCvvmMessage(String request, PendingIntent sentIntent) {
-        StringBuilder sb = new StringBuilder().append(request);
-        sb.append(OmtpConstants.SMS_PREFIX_SEPARATOR);
-        appendField(sb, "dt", "6");
-        sendSms(sb.toString(), sentIntent);
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
deleted file mode 100644
index 3eefbee..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageReceiver.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Telephony;
-import android.provider.VoicemailContract;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.Voicemail;
-import android.telephony.SmsMessage;
-import android.telephony.SubscriptionManager;
-import android.util.Log;
-
-import com.android.internal.telephony.PhoneConstants;
-import com.android.phone.PhoneGlobals;
-import com.android.phone.PhoneUtils;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.vvm.omtp.LocalLogHelper;
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSourceManager;
-import com.android.phone.vvm.omtp.sync.OmtpVvmSyncService;
-import com.android.phone.vvm.omtp.sync.VoicemailsQueryHelper;
-
-/**
- * Receive SMS messages and send for processing by the OMTP visual voicemail source.
- */
-public class OmtpMessageReceiver extends BroadcastReceiver {
-    private static final String TAG = "OmtpMessageReceiver";
-
-    private Context mContext;
-    private PhoneAccountHandle mPhoneAccount;
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        mContext = context;
-        mPhoneAccount = PhoneUtils.makePstnPhoneAccountHandle(
-                intent.getExtras().getInt(PhoneConstants.PHONE_KEY));
-
-        if (mPhoneAccount == null) {
-            Log.w(TAG, "Received message for null phone account");
-            return;
-        }
-
-        if (!VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(mContext, mPhoneAccount)) {
-            Log.v(TAG, "Received vvm message for disabled vvm source.");
-            return;
-        }
-
-        SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
-        StringBuilder messageBody = new StringBuilder();
-
-        for (int i = 0; i < messages.length; i++) {
-            if (messages[i].mWrappedSmsMessage != null) {
-                messageBody.append(messages[i].getMessageBody());
-            }
-        }
-
-        WrappedMessageData messageData = OmtpSmsParser.parse(messageBody.toString());
-        if (messageData != null) {
-            if (messageData.getPrefix() == OmtpConstants.SYNC_SMS_PREFIX) {
-                SyncMessage message = new SyncMessage(messageData);
-
-                Log.v(TAG, "Received SYNC sms for " + mPhoneAccount.getId() +
-                        " with event" + message.getSyncTriggerEvent());
-                LocalLogHelper.log(TAG, "Received SYNC sms for " + mPhoneAccount.getId() +
-                        " with event" + message.getSyncTriggerEvent());
-                processSync(message);
-            } else if (messageData.getPrefix() == OmtpConstants.STATUS_SMS_PREFIX) {
-                Log.v(TAG, "Received STATUS sms for " + mPhoneAccount.getId());
-                LocalLogHelper.log(TAG, "Received Status sms for " + mPhoneAccount.getId());
-                StatusMessage message = new StatusMessage(messageData);
-                updateSource(message);
-            } else {
-                Log.e(TAG, "This should never have happened");
-            }
-        }
-        // Let this fall through: this is not a message we're interested in.
-    }
-
-    /**
-     * A sync message has two purposes: to signal a new voicemail message, and to indicate the
-     * voicemails on the server have changed remotely (usually through the TUI). Save the new
-     * message to the voicemail provider if it is the former case and perform a full sync in the
-     * latter case.
-     *
-     * @param message The sync message to extract data from.
-     */
-    private void processSync(SyncMessage message) {
-        switch (message.getSyncTriggerEvent()) {
-            case OmtpConstants.NEW_MESSAGE:
-                Voicemail voicemail = Voicemail.createForInsertion(
-                        message.getTimestampMillis(), message.getSender())
-                        .setPhoneAccount(mPhoneAccount)
-                        .setSourceData(message.getId())
-                        .setDuration(message.getLength())
-                        .setSourcePackage(mContext.getPackageName())
-                        .build();
-                VoicemailsQueryHelper queryHelper = new VoicemailsQueryHelper(mContext);
-                queryHelper.insertIfUnique(voicemail);
-                break;
-            case OmtpConstants.MAILBOX_UPDATE:
-                Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
-                        mContext, OmtpVvmSyncService.SYNC_DOWNLOAD_ONLY, mPhoneAccount,
-                        true /* firstAttempt */);
-                mContext.startService(serviceIntent);
-                break;
-            case OmtpConstants.GREETINGS_UPDATE:
-                // Not implemented in V1
-                break;
-           default:
-               Log.e(TAG, "Unrecognized sync trigger event: " + message.getSyncTriggerEvent());
-               break;
-        }
-    }
-
-    private void updateSource(StatusMessage message) {
-        OmtpVvmSourceManager vvmSourceManager =
-                OmtpVvmSourceManager.getInstance(mContext);
-
-        if (OmtpConstants.SUCCESS.equals(message.getReturnCode())) {
-            VoicemailContract.Status.setStatus(mContext, mPhoneAccount,
-                    VoicemailContract.Status.CONFIGURATION_STATE_OK,
-                    VoicemailContract.Status.DATA_CHANNEL_STATE_OK,
-                    VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_OK);
-
-            // Save the IMAP credentials in preferences so they are persistent and can be retrieved.
-            VisualVoicemailSettingsUtil.setVisualVoicemailCredentialsFromStatusMessage(
-                    mContext,
-                    mPhoneAccount,
-                    message);
-
-            // Add the source to indicate that it is active.
-            vvmSourceManager.addSource(mPhoneAccount);
-
-            Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
-                    mContext, OmtpVvmSyncService.SYNC_FULL_SYNC, mPhoneAccount,
-                    true /* firstAttempt */);
-            mContext.startService(serviceIntent);
-
-            PhoneGlobals.getInstance().clearMwiIndicator(
-                    PhoneUtils.getSubIdForPhoneAccountHandle(mPhoneAccount));
-        } else {
-            Log.w(TAG, "Visual voicemail not available for subscriber.");
-            // Override default isEnabled setting to false since visual voicemail is unable to
-            // be accessed for some reason.
-            VisualVoicemailSettingsUtil.setVisualVoicemailEnabled(mContext, mPhoneAccount,
-                    /* isEnabled */ false, /* isUserSet */ true);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java b/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java
deleted file mode 100644
index 9080292..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpMessageSender.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2015 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.annotation.Nullable;
-import android.app.PendingIntent;
-import android.telephony.SmsManager;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-import com.android.services.telephony.Log;
-
-import java.io.UnsupportedEncodingException;
-
-/**
- * Send client originated OMTP messages to the OMTP server.
- * <p>
- * Uses {@link PendingIntent} instead of a call back to notify when the message is
- * sent. This is primarily to keep the implementation simple and reuse what the underlying
- * {@link SmsManager} interface provides.
- * <p>
- * Provides simple APIs to send different types of mobile originated OMTP SMS to the VVM server.
- */
-public abstract class OmtpMessageSender {
-    protected static final String TAG = "OmtpMessageSender";
-    protected short mApplicationPort;
-    protected String mDestinationNumber;
-    protected SmsManager mSmsManager;
-
-    public OmtpMessageSender(SmsManager smsManager, short applicationPort,
-            String destinationNumber) {
-        mSmsManager = smsManager;
-        mApplicationPort = applicationPort;
-        mDestinationNumber = destinationNumber;
-    }
-
-    /**
-     * Sends a request to the VVM server to activate VVM for the current subscriber.
-     *
-     * @param sentIntent If not NULL this PendingIntent is broadcast when the message is
-     *            successfully sent, or failed.
-     */
-    public void requestVvmActivation(@Nullable PendingIntent sentIntent) {}
-
-    /**
-     * Sends a request to the VVM server to deactivate VVM for the current subscriber.
-     *
-     * @param sentIntent If not NULL this PendingIntent is broadcast when the message is
-     *            successfully sent, or failed.
-     */
-    public void requestVvmDeactivation(@Nullable PendingIntent sentIntent) {}
-
-    /**
-     * Send a request to the VVM server to get account status of the current subscriber.
-     *
-     * @param sentIntent If not NULL this PendingIntent is broadcast when the message is
-     *            successfully sent, or failed.
-     */
-    public void requestVvmStatus(@Nullable PendingIntent sentIntent) {}
-
-    protected void sendSms(String text, PendingIntent sentIntent) {
-        // If application port is set to 0 then send simple text message, else send data message.
-        if (mApplicationPort == 0) {
-            Log.v(TAG, String.format("Sending TEXT sms '%s' to %s", text, mDestinationNumber));
-            mSmsManager.sendTextMessageWithSelfPermissions(mDestinationNumber, null, text,
-                    sentIntent, null);
-        } else {
-            byte[] data;
-            try {
-                data = text.getBytes("UTF-8");
-            } catch (UnsupportedEncodingException e) {
-                throw new IllegalStateException("Failed to encode: " + text);
-            }
-            Log.v(TAG, String.format("Sending BINARY sms '%s' to %s:%d", text, mDestinationNumber,
-                    mApplicationPort));
-            mSmsManager.sendDataMessageWithSelfPermissions(mDestinationNumber, null,
-                    mApplicationPort, data, sentIntent, null);
-        }
-    }
-
-    protected void appendField(StringBuilder sb, String field, Object value) {
-        sb.append(field).append(OmtpConstants.SMS_KEY_VALUE_SEPARATOR).append(value);
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpSmsParser.java b/src/com/android/phone/vvm/omtp/sms/OmtpSmsParser.java
deleted file mode 100644
index 54a2a02..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpSmsParser.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.util.ArrayMap;
-import android.util.Log;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-import java.util.Map;
-
-/**
- * OMTP SMS parser interface, for parsing SYNC and STATUS SMS sent by OMTP visual voicemail server.
- */
-public class OmtpSmsParser {
-    private static String TAG = "OmtpSmsParser";
-    /**
-     * Parses the supplied SMS body and returns back a structured OMTP message.
-     * Returns null if unable to parse the SMS body.
-     */
-    public static WrappedMessageData parse(String smsBody) {
-        if (smsBody == null) {
-            return null;
-        }
-
-        WrappedMessageData messageData = null;
-        if (smsBody.startsWith(OmtpConstants.SYNC_SMS_PREFIX)) {
-            messageData = new WrappedMessageData(OmtpConstants.SYNC_SMS_PREFIX,
-                    parseSmsBody(smsBody.substring(OmtpConstants.SYNC_SMS_PREFIX.length())));
-            // Check for a mandatory field.
-            String triggerEvent = messageData.extractString(OmtpConstants.SYNC_TRIGGER_EVENT);
-            if (triggerEvent == null) {
-                Log.e(TAG, "Missing mandatory field: " + OmtpConstants.SYNC_TRIGGER_EVENT);
-                return null;
-            }
-        } else if (smsBody.startsWith(OmtpConstants.STATUS_SMS_PREFIX)) {
-            messageData = new WrappedMessageData(OmtpConstants.STATUS_SMS_PREFIX,
-                    parseSmsBody(smsBody.substring(OmtpConstants.STATUS_SMS_PREFIX.length())));
-        }
-
-        return messageData;
-    }
-
-    /**
-     * Converts a String of key/value pairs into a Map object. The WrappedMessageData object
-     * contains helper functions to retrieve the values.
-     *
-     * e.g. "//VVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1"
-     * => "WrappedMessageData [mFields={st=R, ipt=1, srv=1, dn=1, u=eg@example.com, pw=1, rc=0}]"
-     *
-     * @param message The sms string with the prefix removed.
-     * @return A WrappedMessageData object containing the map.
-     */
-    private static Map<String, String> parseSmsBody(String message) {
-        Map<String, String> keyValues = new ArrayMap<String, String>();
-        String[] entries = message.split(OmtpConstants.SMS_FIELD_SEPARATOR);
-        for (String entry : entries) {
-            String[] keyValue = entry.split(OmtpConstants.SMS_KEY_VALUE_SEPARATOR);
-            if (keyValue.length != 2) {
-                continue;
-            }
-            keyValues.put(keyValue[0].trim(), keyValue[1].trim());
-        }
-
-        return keyValues;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/OmtpStandardMessageSender.java b/src/com/android/phone/vvm/omtp/sms/OmtpStandardMessageSender.java
deleted file mode 100644
index 05276e1..0000000
--- a/src/com/android/phone/vvm/omtp/sms/OmtpStandardMessageSender.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2015 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.annotation.Nullable;
-import android.app.PendingIntent;
-import android.telephony.SmsManager;
-import android.text.TextUtils;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-/**
- * A implementation of the OmtpMessageSender using the standard OMTP sms protocol.
- */
-public class OmtpStandardMessageSender extends OmtpMessageSender {
-    private final String mClientType;
-    private final String mProtocolVersion;
-    private final String mClientPrefix;
-
-    /**
-     * Creates a new instance of OmtpStandardMessageSender.
-     *
-     * @param smsManager SMS sending library. There is a different SmsManager for each SIM.
-     * @param applicationPort If set to a value > 0 then a binary sms is sent to this port number.
-     *            Otherwise, a standard text SMS is sent.
-     * @param destinationNumber Destination number to be used.
-     * @param clientType The "ct" field to be set in the MO message. This is the value used by the
-     *            VVM server to identify the client. Certain VVM servers require a specific agreed
-     *            value for this field.
-     * @param protocolVersion OMTP protocol version.
-     * @param clientPrefix The client prefix requested to be used by the server in its MT messages.
-     */
-    public OmtpStandardMessageSender(SmsManager smsManager, short applicationPort,
-            String destinationNumber, String clientType, String protocolVersion,
-            String clientPrefix) {
-        super(smsManager, applicationPort, destinationNumber);
-        mClientType = clientType;
-        mProtocolVersion = protocolVersion;
-        mClientPrefix = clientPrefix;
-    }
-
-    // Activate message:
-    // V1.1: Activate:pv=<value>;ct=<value>
-    // V1.2: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
-    // V1.3: Activate:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
-    @Override
-    public void requestVvmActivation(@Nullable PendingIntent sentIntent) {
-        StringBuilder sb = new StringBuilder().append(OmtpConstants.ACTIVATE_REQUEST);
-
-        appendProtocolVersionAndClientType(sb);
-        if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_2) ||
-                TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
-            appendApplicationPort(sb);
-            appendClientPrefix(sb);
-        }
-
-        sendSms(sb.toString(), sentIntent);
-    }
-
-    // Deactivate message:
-    // V1.1: Deactivate:pv=<value>;ct=<string>
-    // V1.2: Deactivate:pv=<value>;ct=<string>
-    // V1.3: Deactivate:pv=<value>;ct=<string>
-    @Override
-    public void requestVvmDeactivation(@Nullable PendingIntent sentIntent) {
-        StringBuilder sb = new StringBuilder().append(OmtpConstants.DEACTIVATE_REQUEST);
-        appendProtocolVersionAndClientType(sb);
-
-        sendSms(sb.toString(), sentIntent);
-    }
-
-    // Status message:
-    // V1.1: STATUS
-    // V1.2: STATUS
-    // V1.3: STATUS:pv=<value>;ct=<value>;pt=<value>;<Clientprefix>
-    @Override
-    public void requestVvmStatus(@Nullable PendingIntent sentIntent) {
-        StringBuilder sb = new StringBuilder().append(OmtpConstants.STATUS_REQUEST);
-
-        if (TextUtils.equals(mProtocolVersion, OmtpConstants.PROTOCOL_VERSION1_3)) {
-            appendProtocolVersionAndClientType(sb);
-            appendApplicationPort(sb);
-            appendClientPrefix(sb);
-        }
-
-        sendSms(sb.toString(), sentIntent);
-    }
-
-    private void appendProtocolVersionAndClientType(StringBuilder sb) {
-        sb.append(OmtpConstants.SMS_PREFIX_SEPARATOR);
-        appendField(sb, OmtpConstants.PROTOCOL_VERSION, mProtocolVersion);
-        sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
-        appendField(sb, OmtpConstants.CLIENT_TYPE, mClientType);
-    }
-
-    private void appendApplicationPort(StringBuilder sb) {
-        sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
-        appendField(sb, OmtpConstants.APPLICATION_PORT, mApplicationPort);
-    }
-
-    private void appendClientPrefix(StringBuilder sb) {
-        sb.append(OmtpConstants.SMS_FIELD_SEPARATOR);
-        sb.append(mClientPrefix);
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sms/StatusMessage.java b/src/com/android/phone/vvm/omtp/sms/StatusMessage.java
deleted file mode 100644
index 7e4faac..0000000
--- a/src/com/android/phone/vvm/omtp/sms/StatusMessage.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.telecom.Log;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-/**
- * Structured data representation of OMTP STATUS message.
- *
- * The getters will return null if the field was not set in the message body or it could not be
- * parsed.
- */
-public class StatusMessage {
-    // NOTE: Following Status SMS fields are not yet parsed, as they do not seem
-    // to be useful for initial omtp source implementation.
-    // lang, g_len, vs_len, pw_len, pm, gm, vtc, vt
-
-    private final String mProvisioningStatus;
-    private final String mStatusReturnCode;
-    private final String mSubscriptionUrl;
-    private final String mServerAddress;
-    private final String mTuiAccessNumber;
-    private final String mClientSmsDestinationNumber;
-    private final String mImapPort;
-    private final String mImapUserName;
-    private final String mImapPassword;
-    private final String mSmtpPort;
-    private final String mSmtpUserName;
-    private final String mSmtpPassword;
-
-    @Override
-    public String toString() {
-        return "StatusMessage [mProvisioningStatus=" + mProvisioningStatus
-                + ", mStatusReturnCode=" + mStatusReturnCode
-                + ", mSubscriptionUrl=" + mSubscriptionUrl
-                + ", mServerAddress=" + mServerAddress
-                + ", mTuiAccessNumber=" + mTuiAccessNumber
-                + ", mClientSmsDestinationNumber=" + mClientSmsDestinationNumber
-                + ", mImapPort=" + mImapPort
-                + ", mImapUserName=" + mImapUserName
-                + ", mImapPassword=" + Log.pii(mImapPassword)
-                + ", mSmtpPort=" + mSmtpPort
-                + ", mSmtpUserName=" + mSmtpUserName
-                + ", mSmtpPassword=" + Log.pii(mSmtpPassword) + "]";
-    }
-
-    public StatusMessage(WrappedMessageData wrappedData) {
-        mProvisioningStatus = wrappedData.extractString(OmtpConstants.PROVISIONING_STATUS);
-        mStatusReturnCode = wrappedData.extractString(OmtpConstants.RETURN_CODE);
-        mSubscriptionUrl = wrappedData.extractString(OmtpConstants.SUBSCRIPTION_URL);
-        mServerAddress = wrappedData.extractString(OmtpConstants.SERVER_ADDRESS);
-        mTuiAccessNumber = wrappedData.extractString(OmtpConstants.TUI_ACCESS_NUMBER);
-        mClientSmsDestinationNumber = wrappedData.extractString(
-                OmtpConstants.CLIENT_SMS_DESTINATION_NUMBER);
-        mImapPort = wrappedData.extractString(OmtpConstants.IMAP_PORT);
-        mImapUserName = wrappedData.extractString(OmtpConstants.IMAP_USER_NAME);
-        mImapPassword = wrappedData.extractString(OmtpConstants.IMAP_PASSWORD);
-        mSmtpPort = wrappedData.extractString(OmtpConstants.SMTP_PORT);
-        mSmtpUserName = wrappedData.extractString(OmtpConstants.SMTP_USER_NAME);
-        mSmtpPassword = wrappedData.extractString(OmtpConstants.SMTP_PASSWORD);
-    }
-
-    /**
-     * @return the subscriber's VVM provisioning status.
-     */
-    public String getProvisioningStatus() {
-        return mProvisioningStatus;
-    }
-
-    /**
-     * @return the return-code of the status SMS.
-     */
-    public String getReturnCode() {
-        return mStatusReturnCode;
-    }
-
-    /**
-     * @return the URL of the voicemail server. This is the URL to send the users to for subscribing
-     * to the visual voicemail service.
-     */
-    public String getSubscriptionUrl() {
-        return mSubscriptionUrl;
-    }
-
-    /**
-     * @return the voicemail server address. Either server IP address or fully qualified domain
-     * name.
-     */
-    public String getServerAddress() {
-        return mServerAddress;
-    }
-
-    /**
-     * @return the Telephony User Interface number to call to access voicemails directly from the
-     * IVR.
-     */
-    public String getTuiAccessNumber() {
-        return mTuiAccessNumber;
-    }
-
-    /**
-     * @return the number to which client originated SMSes should be sent to.
-     */
-    public String getClientSmsDestinationNumber() {
-        return mClientSmsDestinationNumber;
-    }
-
-    /**
-     * @return the IMAP server port to talk to.
-     */
-    public String getImapPort() {
-        return mImapPort;
-    }
-
-    /**
-     * @return the IMAP user name to be used for authentication.
-     */
-    public String getImapUserName() {
-        return mImapUserName;
-    }
-
-    /**
-     * @return the IMAP password to be used for authentication.
-     */
-    public String getImapPassword() {
-        return mImapPassword;
-    }
-
-    /**
-     * @return the SMTP server port to talk to.
-     */
-    public String getSmtpPort() {
-        return mSmtpPort;
-    }
-
-    /**
-     * @return the SMTP user name to be used for SMTP authentication.
-     */
-    public String getSmtpUserName() {
-        return mSmtpUserName;
-    }
-
-    /**
-     * @return the SMTP password to be used for SMTP authentication.
-     */
-    public String getSmtpPassword() {
-        return mSmtpPassword;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/SyncMessage.java b/src/com/android/phone/vvm/omtp/sms/SyncMessage.java
deleted file mode 100644
index 6829981..0000000
--- a/src/com/android/phone/vvm/omtp/sms/SyncMessage.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-/**
- * Structured data representation of an OMTP SYNC message.
- *
- * Getters will return null if the field was not set in the message body or it could not be parsed.
- */
-public class SyncMessage {
-    // Sync event that triggered this message.
-    private final String mSyncTriggerEvent;
-    // Total number of new messages on the server.
-    private final Integer mNewMessageCount;
-    // UID of the new message.
-    private final String mMessageId;
-    // Length of the message.
-    private final Integer mMessageLength;
-    // Content type (voice, video, fax...) of the new message.
-    private final String mContentType;
-    // Sender of the new message.
-    private final String mSender;
-    // Timestamp (in millis) of the new message.
-    private final Long mMsgTimeMillis;
-
-    @Override
-    public String toString() {
-        return "SyncMessage [mSyncTriggerEvent=" + mSyncTriggerEvent
-                + ", mNewMessageCount=" + mNewMessageCount
-                + ", mMessageId=" + mMessageId
-                + ", mMessageLength=" + mMessageLength
-                + ", mContentType=" + mContentType
-                + ", mSender=" + mSender
-                + ", mMsgTimeMillis=" + mMsgTimeMillis + "]";
-    }
-
-    public SyncMessage(WrappedMessageData wrappedData) {
-        mSyncTriggerEvent = wrappedData.extractString(OmtpConstants.SYNC_TRIGGER_EVENT);
-        mMessageId = wrappedData.extractString(OmtpConstants.MESSAGE_UID);
-        mMessageLength = wrappedData.extractInteger(OmtpConstants.MESSAGE_LENGTH);
-        mContentType = wrappedData.extractString(OmtpConstants.CONTENT_TYPE);
-        mSender = wrappedData.extractString(OmtpConstants.SENDER);
-        mNewMessageCount = wrappedData.extractInteger(OmtpConstants.NUM_MESSAGE_COUNT);
-        mMsgTimeMillis = wrappedData.extractTime(OmtpConstants.TIME);
-    }
-
-    /**
-     * @return the event that triggered the sync message. This is a mandatory field and must always
-     * be set.
-     */
-    public String getSyncTriggerEvent() {
-        return mSyncTriggerEvent;
-    }
-
-    /**
-     * @return the number of new messages stored on the voicemail server.
-     */
-    public int getNewMessageCount() {
-        return mNewMessageCount != null ? mNewMessageCount : 0;
-    }
-
-    /**
-     * @return the message ID of the new message.
-     * <p>
-     * Expected to be set only for
-     * {@link com.android.phone.vvm.omtp.OmtpConstants#NEW_MESSAGE}
-     */
-    public String getId() {
-        return mMessageId;
-    }
-
-    /**
-     * @return the content type of the new message.
-     * <p>
-     * Expected to be set only for
-     * {@link com.android.phone.vvm.omtp.OmtpConstants#NEW_MESSAGE}
-     */
-    public String getContentType() {
-        return mContentType;
-    }
-
-    /**
-     * @return the message length of the new message.
-     * <p>
-     * Expected to be set only for
-     * {@link com.android.phone.vvm.omtp.OmtpConstants#NEW_MESSAGE}
-     */
-    public int getLength() {
-        return mMessageLength != null ? mMessageLength : 0;
-    }
-
-    /**
-     * @return the sender's phone number of the new message specified as MSISDN.
-     * <p>
-     * Expected to be set only for
-     * {@link com.android.phone.vvm.omtp.OmtpConstants#NEW_MESSAGE}
-     */
-    public String getSender() {
-        return mSender;
-    }
-
-    /**
-     * @return the timestamp as milliseconds for the new message.
-     * <p>
-     * Expected to be set only for
-     * {@link com.android.phone.vvm.omtp.OmtpConstants#NEW_MESSAGE}
-     */
-    public long getTimestampMillis() {
-        return mMsgTimeMillis != null ? mMsgTimeMillis : 0;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sms/WrappedMessageData.java b/src/com/android/phone/vvm/omtp/sms/WrappedMessageData.java
deleted file mode 100644
index b4c86d4..0000000
--- a/src/com/android/phone/vvm/omtp/sms/WrappedMessageData.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sms;
-
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import android.util.Log;
-
-import com.android.phone.vvm.omtp.OmtpConstants;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Class wrapping the raw OMTP message data, internally represented as as map of all key-value pairs
- * found in the SMS body.
- * <p>
- * Provides convenience methods to extract parse fields of different types.
- * <p>
- * All the methods return null if either the field was not present or it could not be parsed.
- */
-public class WrappedMessageData {
-    private final String TAG = "WrappedMessageData";
-    private final String mPrefix;
-    private final Map<String, String> mFields;
-
-    @Override
-    public String toString() {
-        return "WrappedMessageData [mFields=" + mFields + "]";
-    }
-
-    WrappedMessageData(String prefix, Map<String, String> keyValues) {
-        mPrefix = prefix;
-        mFields = new ArrayMap<String, String>();
-        mFields.putAll(keyValues);
-    }
-
-    /**
-     * @return The String prefix of the message, designating whether this is the message data of a
-     * STATUS or SYNC sms.
-     */
-    String getPrefix() {
-        return mPrefix;
-    }
-
-    /**
-     * Extracts the requested field from underlying data and returns the String value as is.
-     *
-     * @param field The requested field.
-     * @return the parsed string value, or null if the field was not present or not valid.
-     */
-    String extractString(final String field) {
-        String value = mFields.get(field);
-        if (value == null) {
-            return null;
-        }
-
-        String[] possibleValues = OmtpConstants.possibleValuesMap.get(field);
-        if (possibleValues == null) {
-            return value;
-        }
-        for (int i = 0; i < possibleValues.length; i++) {
-            if (TextUtils.equals(value, possibleValues[i])) {
-                return value;
-            }
-        }
-        Log.e(TAG, "extractString - value \"" + value +
-                "\" of field \"" + field + "\" is not allowed.");
-        return null;
-    }
-
-    /**
-     * Extracts the requested field from underlying data and parses it as an {@link Integer}.
-     *
-     * @param field The requested field.
-     * @return the parsed integer value, or null if the field was not present.
-     */
-    Integer extractInteger(final String field) {
-        String value = mFields.get(field);
-        if (value == null) {
-            return null;
-        }
-
-        try {
-            return Integer.decode(value);
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "extractInteger - could not parse integer: " + value);
-            return null;
-        }
-    }
-
-    /**
-     * Extracts the requested field from underlying data and parses it as a date/time represented in
-     * {@link OmtpConstants#DATE_TIME_FORMAT} format.
-     *
-     * @param field The requested field.
-     * @return the parsed string value, or null if the field was not present.
-     */
-    Long extractTime(final String field) {
-        String value = mFields.get(field);
-        if (value == null) {
-            return null;
-        }
-
-        try {
-            return new SimpleDateFormat(
-                    OmtpConstants.DATE_TIME_FORMAT, Locale.US).parse(value).getTime();
-        } catch (ParseException e) {
-            Log.e(TAG, "extractTime - could not parse time: " + value);
-            return null;
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
deleted file mode 100644
index 0520098..0000000
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSourceManager.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sync;
-
-import android.content.Context;
-import android.provider.VoicemailContract;
-import android.telecom.PhoneAccountHandle;
-import android.telephony.PhoneStateListener;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import com.android.internal.telephony.Phone;
-import com.android.phone.PhoneUtils;
-import com.android.phone.vvm.omtp.VvmPhoneStateListener;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * A singleton class designed to remember the active OMTP visual voicemail sources. Because a
- * voicemail source is tied 1:1 to a phone account, the phone account handle is used as the key
- * for each voicemail source and the associated data.
- */
-public class OmtpVvmSourceManager {
-    public static final String TAG = "OmtpVvmSourceManager";
-
-    private static OmtpVvmSourceManager sInstance = new OmtpVvmSourceManager();
-
-    private Context mContext;
-    private SubscriptionManager mSubscriptionManager;
-    private TelephonyManager mTelephonyManager;
-    // Each phone account is associated with a phone state listener for updates to whether the
-    // device is able to sync.
-    private Set<PhoneAccountHandle> mActiveVvmSources;
-    private Map<PhoneAccountHandle, PhoneStateListener> mPhoneStateListenerMap;
-
-    /**
-     * Private constructor. Instance should only be acquired through getInstance().
-     */
-    private OmtpVvmSourceManager() {}
-
-    public static OmtpVvmSourceManager getInstance(Context context) {
-        sInstance.setup(context);
-        return sInstance;
-    }
-
-    /**
-     * Set the context and system services so they do not need to be retrieved every time.
-     * @param context The context to get the subscription and telephony manager for.
-     */
-    private void setup(Context context) {
-        if (mContext == null) {
-            mContext = context;
-            mSubscriptionManager = SubscriptionManager.from(context);
-            mTelephonyManager = (TelephonyManager)
-                    mContext.getSystemService(Context.TELEPHONY_SERVICE);
-            mActiveVvmSources = Collections.newSetFromMap(
-                    new ConcurrentHashMap<PhoneAccountHandle, Boolean>(8, 0.9f, 1));
-            mPhoneStateListenerMap =
-                    new ConcurrentHashMap<PhoneAccountHandle, PhoneStateListener>(8, 0.9f, 1);
-        }
-    }
-
-    public void addSource(PhoneAccountHandle phoneAccount) {
-        mActiveVvmSources.add(phoneAccount);
-    }
-
-    /**
-     * When a voicemail source is removed, we don't always know which one was removed. Check the
-     * list of registered phone accounts against the active subscriptions list and remove the
-     * inactive sources.
-     */
-    public void removeInactiveSources() {
-        for (PhoneAccountHandle phoneAccount : mActiveVvmSources) {
-            if (!PhoneUtils.isPhoneAccountActive(mSubscriptionManager, phoneAccount)) {
-                removeSource(phoneAccount);
-            }
-        }
-
-        // Remove any orphaned phone state listeners as well.
-        for (PhoneAccountHandle phoneAccount : mPhoneStateListenerMap.keySet()) {
-            if (!PhoneUtils.isPhoneAccountActive(mSubscriptionManager, phoneAccount)) {
-                removePhoneStateListener(phoneAccount);
-            }
-        }
-    }
-
-    public void removeSource(Phone phone) {
-        removeSource(PhoneUtils.makePstnPhoneAccountHandle(phone));
-    }
-
-    public void removeSource(PhoneAccountHandle phoneAccount) {
-        VoicemailContract.Status.setStatus(mContext, phoneAccount,
-                VoicemailContract.Status.CONFIGURATION_STATE_NOT_CONFIGURED,
-                VoicemailContract.Status.DATA_CHANNEL_STATE_NO_CONNECTION,
-                VoicemailContract.Status.NOTIFICATION_CHANNEL_STATE_NO_CONNECTION);
-        removePhoneStateListener(phoneAccount);
-        mActiveVvmSources.remove(phoneAccount);
-        OmtpVvmSyncService.cancelAllRetries(mContext, phoneAccount);
-    }
-
-    public void addPhoneStateListener(Phone phone) {
-        addPhoneStateListener(PhoneUtils.makePstnPhoneAccountHandle(phone));
-    }
-
-    public void addPhoneStateListener(PhoneAccountHandle phoneAccount) {
-        if (!mPhoneStateListenerMap.containsKey(phoneAccount)) {
-            VvmPhoneStateListener phoneStateListener = new VvmPhoneStateListener(mContext,
-                    PhoneUtils.makePstnPhoneAccountHandle(phoneAccount.getId()));
-            mPhoneStateListenerMap.put(phoneAccount, phoneStateListener);
-            mTelephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
-        }
-    }
-
-    public void removePhoneStateListener(PhoneAccountHandle phoneAccount) {
-        PhoneStateListener phoneStateListener =
-                mPhoneStateListenerMap.remove(phoneAccount);
-        mTelephonyManager.listen(phoneStateListener, 0);
-    }
-
-    public Set<PhoneAccountHandle> getOmtpVvmSources() {
-        return mActiveVvmSources;
-    }
-
-    /**
-     * Check if a certain account is registered.
-     *
-     * @param phoneAccount The account to look for.
-     * @return {@code true} if the account is in the list of registered OMTP voicemail sources.
-     * {@code false} otherwise.
-     */
-    public boolean isVvmSourceRegistered(PhoneAccountHandle phoneAccount) {
-        if (phoneAccount == null) {
-            return false;
-        }
-
-        return mActiveVvmSources.contains(phoneAccount);
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java b/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java
deleted file mode 100644
index ba3d236..0000000
--- a/src/com/android/phone/vvm/omtp/sync/OmtpVvmSyncService.java
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sync;
-
-import android.app.AlarmManager;
-import android.app.IntentService;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.provider.VoicemailContract;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.Voicemail;
-import android.telephony.TelephonyManager;
-import android.util.Log;
-
-import com.android.phone.PhoneUtils;
-import com.android.phone.settings.VisualVoicemailSettingsUtil;
-import com.android.phone.vvm.omtp.LocalLogHelper;
-import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
-import com.android.phone.vvm.omtp.imap.ImapHelper;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Sync OMTP visual voicemail.
- */
-public class OmtpVvmSyncService extends IntentService {
-    private static final String TAG = OmtpVvmSyncService.class.getSimpleName();
-
-    /** Signifies a sync with both uploading to the server and downloading from the server. */
-    public static final String SYNC_FULL_SYNC = "full_sync";
-    /** Only upload to the server. */
-    public static final String SYNC_UPLOAD_ONLY = "upload_only";
-    /** Only download from the server. */
-    public static final String SYNC_DOWNLOAD_ONLY = "download_only";
-    /** The account to sync. */
-    public static final String EXTRA_PHONE_ACCOUNT = "phone_account";
-
-    // Timeout used to call ConnectivityManager.requestNetwork
-    private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 60 * 1000;
-
-    // Minimum time allowed between full syncs
-    private static final int MINIMUM_FULL_SYNC_INTERVAL_MILLIS = 60 * 1000;
-
-    // Number of retries
-    private static final int NETWORK_RETRY_COUNT = 6;
-
-    private VoicemailsQueryHelper mQueryHelper;
-    private ConnectivityManager mConnectivityManager;
-
-    public OmtpVvmSyncService() {
-        super("OmtpVvmSyncService");
-    }
-
-    public static Intent getSyncIntent(Context context, String action,
-            PhoneAccountHandle phoneAccount, boolean firstAttempt) {
-        if (firstAttempt) {
-            if (phoneAccount != null) {
-                VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(context,
-                        phoneAccount);
-            } else {
-                OmtpVvmSourceManager vvmSourceManager =
-                        OmtpVvmSourceManager.getInstance(context);
-                Set<PhoneAccountHandle> sources = vvmSourceManager.getOmtpVvmSources();
-                for (PhoneAccountHandle source : sources) {
-                    VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(context, source);
-                }
-            }
-        }
-
-        Intent serviceIntent = new Intent(context, OmtpVvmSyncService.class);
-        serviceIntent.setAction(action);
-        if (phoneAccount != null) {
-            serviceIntent.putExtra(EXTRA_PHONE_ACCOUNT, phoneAccount);
-        }
-
-        cancelRetriesForIntent(context, serviceIntent);
-        return serviceIntent;
-    }
-
-    /**
-     * Cancel all retry syncs for an account.
-     * @param context The context the service runs in.
-     * @param phoneAccount The phone account for which to cancel syncs.
-     */
-    public static void cancelAllRetries(Context context, PhoneAccountHandle phoneAccount) {
-        cancelRetriesForIntent(context, getSyncIntent(context, SYNC_FULL_SYNC, phoneAccount,
-                false));
-    }
-
-    /**
-     * A helper method to cancel all pending alarms for intents that would be identical to the given
-     * intent.
-     * @param context The context the service runs in.
-     * @param intent The intent to search and cancel.
-     */
-    private static void cancelRetriesForIntent(Context context, Intent intent) {
-        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-        alarmManager.cancel(PendingIntent.getService(context, 0, intent, 0));
-
-        Intent copyIntent = new Intent(intent);
-        if (SYNC_FULL_SYNC.equals(copyIntent.getAction())) {
-            // A full sync action should also cancel both of the other types of syncs
-            copyIntent.setAction(SYNC_DOWNLOAD_ONLY);
-            alarmManager.cancel(PendingIntent.getService(context, 0, copyIntent, 0));
-            copyIntent.setAction(SYNC_UPLOAD_ONLY);
-            alarmManager.cancel(PendingIntent.getService(context, 0, copyIntent, 0));
-        }
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        mQueryHelper = new VoicemailsQueryHelper(this);
-    }
-
-    @Override
-    protected void onHandleIntent(Intent intent) {
-        if (intent == null) {
-            Log.d(TAG, "onHandleIntent: could not handle null intent");
-            return;
-        }
-
-        String action = intent.getAction();
-
-        PhoneAccountHandle phoneAccount = intent.getParcelableExtra(EXTRA_PHONE_ACCOUNT);
-
-        LocalLogHelper.log(TAG, "Sync requested: " + action +
-                " for all accounts: " + String.valueOf(phoneAccount == null));
-
-        if (phoneAccount != null) {
-            Log.v(TAG, "Sync requested: " + action + " - for account: " + phoneAccount);
-            setupAndSendRequest(phoneAccount, action);
-        } else {
-            Log.v(TAG, "Sync requested: " + action + " - for all accounts");
-            OmtpVvmSourceManager vvmSourceManager =
-                    OmtpVvmSourceManager.getInstance(this);
-            Set<PhoneAccountHandle> sources = vvmSourceManager.getOmtpVvmSources();
-            for (PhoneAccountHandle source : sources) {
-                setupAndSendRequest(source, action);
-            }
-        }
-    }
-
-    private void setupAndSendRequest(PhoneAccountHandle phoneAccount, String action) {
-        if (!VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(this, phoneAccount)) {
-            Log.v(TAG, "Sync requested for disabled account");
-            return;
-        }
-
-        if (SYNC_FULL_SYNC.equals(action)) {
-            long lastSyncTime = VisualVoicemailSettingsUtil.getVisualVoicemailLastFullSyncTime(
-                    this, phoneAccount);
-            long currentTime = System.currentTimeMillis();
-            if (currentTime - lastSyncTime < MINIMUM_FULL_SYNC_INTERVAL_MILLIS) {
-                // If it's been less than a minute since the last sync, bail.
-                Log.v(TAG, "Avoiding duplicate full sync: synced recently for "
-                        + phoneAccount.getId());
-                return;
-            }
-            VisualVoicemailSettingsUtil.setVisualVoicemailLastFullSyncTime(
-                    this, phoneAccount, currentTime);
-        }
-
-        int subId = PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount);
-        OmtpVvmCarrierConfigHelper carrierConfigHelper =
-                new OmtpVvmCarrierConfigHelper(this, subId);
-
-        if (TelephonyManager.VVM_TYPE_CVVM.equals(carrierConfigHelper.getVvmType())) {
-            doSync(null, null, phoneAccount, action);
-        } else {
-            OmtpVvmNetworkRequestCallback networkCallback = new OmtpVvmNetworkRequestCallback(
-                    phoneAccount, action);
-            requestNetwork(networkCallback);
-        }
-    }
-
-    private class OmtpVvmNetworkRequestCallback extends ConnectivityManager.NetworkCallback {
-        PhoneAccountHandle mPhoneAccount;
-        String mAction;
-        NetworkRequest mNetworkRequest;
-
-        public OmtpVvmNetworkRequestCallback(PhoneAccountHandle phoneAccount,
-                String action) {
-            mPhoneAccount = phoneAccount;
-            mAction = action;
-            mNetworkRequest = new NetworkRequest.Builder()
-                    .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
-                    .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
-                    .setNetworkSpecifier(
-                            Integer.toString(
-                                    PhoneUtils.getSubIdForPhoneAccountHandle(phoneAccount)))
-                    .build();
-        }
-
-        public NetworkRequest getNetworkRequest() {
-            return mNetworkRequest;
-        }
-
-        @Override
-        public void onAvailable(final Network network) {
-            doSync(network, this, mPhoneAccount, mAction);
-        }
-
-        @Override
-        public void onLost(Network network) {
-            releaseNetwork(this);
-        }
-
-        @Override
-        public void onUnavailable() {
-            releaseNetwork(this);
-        }
-    }
-
-    private void doSync(Network network, OmtpVvmNetworkRequestCallback callback,
-            PhoneAccountHandle phoneAccount, String action) {
-        int retryCount = NETWORK_RETRY_COUNT;
-
-        boolean uploadSuccess;
-        boolean downloadSuccess;
-
-        while (retryCount > 0) {
-            uploadSuccess = true;
-            downloadSuccess = true;
-
-            ImapHelper imapHelper = new ImapHelper(this, phoneAccount, network);
-            if (!imapHelper.isSuccessfullyInitialized()) {
-                Log.w(TAG, "Can't retrieve Imap credentials.");
-                releaseNetwork(callback);
-                VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(this,
-                        phoneAccount);
-                return;
-            }
-
-            if (SYNC_FULL_SYNC.equals(action) || SYNC_UPLOAD_ONLY.equals(action)) {
-                uploadSuccess = upload(imapHelper);
-            }
-            if (SYNC_FULL_SYNC.equals(action) || SYNC_DOWNLOAD_ONLY.equals(action)) {
-                downloadSuccess = download(imapHelper);
-            }
-
-            Log.v(TAG, "upload succeeded: ["+  String.valueOf(uploadSuccess)
-                    + "] download succeeded: [" + String.valueOf(downloadSuccess) + "]");
-
-            // Need to check again for whether visual voicemail is enabled because it could have
-            // been disabled while waiting for the response from the network.
-            if (VisualVoicemailSettingsUtil.isVisualVoicemailEnabled(this, phoneAccount) &&
-                    (!uploadSuccess || !downloadSuccess)) {
-                retryCount--;
-                // Re-adjust so that only the unsuccessful action needs to be retried.
-                // No need to re-adjust if both are unsuccessful. It means the full sync
-                // failed so the action remains unchanged.
-                if (uploadSuccess) {
-                    action = SYNC_DOWNLOAD_ONLY;
-                } else if (downloadSuccess) {
-                    action = SYNC_UPLOAD_ONLY;
-                }
-
-                Log.v(TAG, "Retrying " + action);
-                LocalLogHelper.log(TAG, "Immediately retrying " + action);
-            } else {
-                // Nothing more to do here, just exit.
-                releaseNetwork(callback);
-
-                VisualVoicemailSettingsUtil.resetVisualVoicemailRetryInterval(this, phoneAccount);
-                return;
-            }
-        }
-
-        releaseNetwork(callback);
-        setRetryAlarm(phoneAccount, action);
-    }
-
-    private void requestNetwork(OmtpVvmNetworkRequestCallback networkCallback) {
-        getConnectivityManager().requestNetwork(networkCallback.getNetworkRequest(),
-                networkCallback, NETWORK_REQUEST_TIMEOUT_MILLIS);
-    }
-
-    private void releaseNetwork(NetworkCallback networkCallback) {
-        if (networkCallback != null) {
-            getConnectivityManager().unregisterNetworkCallback(networkCallback);
-        }
-    }
-
-    private ConnectivityManager getConnectivityManager() {
-        if (mConnectivityManager == null) {
-            mConnectivityManager = (ConnectivityManager) this.getSystemService(
-                    Context.CONNECTIVITY_SERVICE);
-        }
-        return mConnectivityManager;
-    }
-
-    private void setRetryAlarm(PhoneAccountHandle phoneAccount, String action) {
-        Intent serviceIntent = new Intent(this, OmtpVvmSyncService.class);
-        serviceIntent.setAction(action);
-        serviceIntent.putExtra(OmtpVvmSyncService.EXTRA_PHONE_ACCOUNT, phoneAccount);
-        PendingIntent pendingIntent = PendingIntent.getService(this, 0, serviceIntent, 0);
-        long retryInterval = VisualVoicemailSettingsUtil.getVisualVoicemailRetryInterval(this,
-                phoneAccount);
-
-        Log.v(TAG, "Retrying "+ action + " in " + retryInterval + "ms");
-        LocalLogHelper.log(TAG, "Retrying "+ action + " in " + retryInterval + "ms");
-
-        AlarmManager alarmManager = (AlarmManager)
-                this.getSystemService(Context.ALARM_SERVICE);
-        alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + retryInterval,
-                pendingIntent);
-
-        VisualVoicemailSettingsUtil.setVisualVoicemailRetryInterval(this, phoneAccount,
-                retryInterval * 2);
-    }
-
-    private boolean upload(ImapHelper imapHelper) {
-        List<Voicemail> readVoicemails = mQueryHelper.getReadVoicemails();
-        List<Voicemail> deletedVoicemails = mQueryHelper.getDeletedVoicemails();
-
-        boolean success = true;
-
-        if (deletedVoicemails.size() > 0) {
-            if (imapHelper.markMessagesAsDeleted(deletedVoicemails)) {
-                // We want to delete selectively instead of all the voicemails for this provider
-                // in case the state changed since the IMAP query was completed.
-                mQueryHelper.deleteFromDatabase(deletedVoicemails);
-            } else {
-                success = false;
-            }
-        }
-
-        if (readVoicemails.size() > 0) {
-            if (imapHelper.markMessagesAsRead(readVoicemails)) {
-                mQueryHelper.markReadInDatabase(readVoicemails);
-            } else {
-                success = false;
-            }
-        }
-
-        return success;
-    }
-
-    private boolean download(ImapHelper imapHelper) {
-        List<Voicemail> serverVoicemails = imapHelper.fetchAllVoicemails();
-        List<Voicemail> localVoicemails = mQueryHelper.getAllVoicemails();
-
-        if (localVoicemails == null || serverVoicemails == null) {
-            // Null value means the query failed.
-            return false;
-        }
-
-        Map<String, Voicemail> remoteMap = buildMap(serverVoicemails);
-
-        // Go through all the local voicemails and check if they are on the server.
-        // They may be read or deleted on the server but not locally. Perform the
-        // appropriate local operation if the status differs from the server. Remove
-        // the messages that exist both locally and on the server to know which server
-        // messages to insert locally.
-        for (int i = 0; i < localVoicemails.size(); i++) {
-            Voicemail localVoicemail = localVoicemails.get(i);
-            Voicemail remoteVoicemail = remoteMap.remove(localVoicemail.getSourceData());
-            if (remoteVoicemail == null) {
-                mQueryHelper.deleteFromDatabase(localVoicemail);
-            } else {
-                if (remoteVoicemail.isRead() != localVoicemail.isRead()) {
-                    mQueryHelper.markReadInDatabase(localVoicemail);
-                }
-            }
-        }
-
-        // The leftover messages are messages that exist on the server but not locally.
-        for (Voicemail remoteVoicemail : remoteMap.values()) {
-            VoicemailContract.Voicemails.insert(this, remoteVoicemail);
-        }
-
-        return true;
-    }
-
-    /**
-     * Builds a map from provider data to message for the given collection of voicemails.
-     */
-    private Map<String, Voicemail> buildMap(List<Voicemail> messages) {
-        Map<String, Voicemail> map = new HashMap<String, Voicemail>();
-        for (Voicemail message : messages) {
-            map.put(message.getSourceData(), message);
-        }
-        return map;
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java b/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java
deleted file mode 100644
index c2e6178..0000000
--- a/src/com/android/phone/vvm/omtp/sync/VoicemailProviderChangeReceiver.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sync;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.VoicemailContract;
-
-/**
- * Receives changes to the voicemail provider so they can be sent to the voicemail server.
- */
-public class VoicemailProviderChangeReceiver extends BroadcastReceiver {
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        boolean isSelfChanged = intent.getBooleanExtra(VoicemailContract.EXTRA_SELF_CHANGE, false);
-        OmtpVvmSourceManager vvmSourceManager =
-                OmtpVvmSourceManager.getInstance(context);
-        if (vvmSourceManager.getOmtpVvmSources().size() > 0 && !isSelfChanged) {
-            Intent serviceIntent = OmtpVvmSyncService.getSyncIntent(
-                    context, OmtpVvmSyncService.SYNC_UPLOAD_ONLY, null, true /* firstAttempt */);
-            context.startService(serviceIntent);
-        }
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sync/VoicemailStatusQueryHelper.java b/src/com/android/phone/vvm/omtp/sync/VoicemailStatusQueryHelper.java
deleted file mode 100644
index 66f3e9d..0000000
--- a/src/com/android/phone/vvm/omtp/sync/VoicemailStatusQueryHelper.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sync;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Status;
-import android.telecom.PhoneAccountHandle;
-
-/**
- * Construct queries to interact with the voicemail status table.
- */
-public class VoicemailStatusQueryHelper {
-
-    final static String[] PROJECTION = new String[] {
-            Status._ID,                        // 0
-            Status.CONFIGURATION_STATE,        // 1
-            Status.NOTIFICATION_CHANNEL_STATE, // 2
-            Status.SOURCE_PACKAGE              // 3
-   };
-
-    public static final int _ID = 0;
-    public static final int CONFIGURATION_STATE = 1;
-    public static final int NOTIFICATION_CHANNEL_STATE = 2;
-    public static final int SOURCE_PACKAGE = 3;
-
-    private Context mContext;
-    private ContentResolver mContentResolver;
-    private Uri mSourceUri;
-
-    public VoicemailStatusQueryHelper(Context context) {
-        mContext = context;
-        mContentResolver = context.getContentResolver();
-        mSourceUri = VoicemailContract.Status.buildSourceUri(mContext.getPackageName());
-    }
-
-    /**
-     * Check if the configuration state for the voicemail source is "ok", meaning that the
-     * source is set up.
-     *
-     * @param phoneAccount The phone account for the voicemail source to check.
-     * @return {@code true} if the voicemail source is configured, {@code} false otherwise,
-     * including if the voicemail source is not registered in the table.
-     */
-    public boolean isVoicemailSourceConfigured(PhoneAccountHandle phoneAccount) {
-        return isFieldEqualTo(phoneAccount, CONFIGURATION_STATE, Status.CONFIGURATION_STATE_OK);
-    }
-
-    /**
-     * Check if the notifications channel of a voicemail source is active. That is, when a new
-     * voicemail is available, if the server able to notify the device.
-     *
-     * @return {@code true} if notifications channel is active, {@code false} otherwise.
-     */
-    public boolean isNotificationsChannelActive(PhoneAccountHandle phoneAccount) {
-        return isFieldEqualTo(phoneAccount, NOTIFICATION_CHANNEL_STATE,
-                Status.NOTIFICATION_CHANNEL_STATE_OK);
-    }
-
-    /**
-     * Check if a field for an entry in the status table is equal to a specific value.
-     *
-     * @param phoneAccount The phone account of the voicemail source to query for.
-     * @param columnIndex The column index of the field in the returned query.
-     * @param value The value to compare against.
-     * @return {@code true} if the stored value is equal to the provided value. {@code false}
-     * otherwise.
-     */
-    private boolean isFieldEqualTo(PhoneAccountHandle phoneAccount, int columnIndex, int value) {
-        Cursor cursor = null;
-        if (phoneAccount != null) {
-            String phoneAccountComponentName = phoneAccount.getComponentName().flattenToString();
-            String phoneAccountId = phoneAccount.getId();
-            if (phoneAccountComponentName == null || phoneAccountId == null) {
-                return false;
-            }
-            try {
-                String whereClause =
-                        Status.PHONE_ACCOUNT_COMPONENT_NAME + "=? AND " +
-                        Status.PHONE_ACCOUNT_ID + "=? AND " + Status.SOURCE_PACKAGE + "=?";
-                String[] whereArgs = { phoneAccountComponentName, phoneAccountId,
-                        mContext.getPackageName()};
-                cursor = mContentResolver.query(
-                        mSourceUri, PROJECTION, whereClause, whereArgs, null);
-                if (cursor != null && cursor.moveToFirst()) {
-                    return cursor.getInt(columnIndex) == value;
-                }
-            }
-            finally {
-                if (cursor != null) {
-                    cursor.close();
-                }
-            }
-        }
-        return false;
-    }
-}
diff --git a/src/com/android/phone/vvm/omtp/sync/VoicemailsQueryHelper.java b/src/com/android/phone/vvm/omtp/sync/VoicemailsQueryHelper.java
deleted file mode 100644
index 8e2c76a..0000000
--- a/src/com/android/phone/vvm/omtp/sync/VoicemailsQueryHelper.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-package com.android.phone.vvm.omtp.sync;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.VoicemailContract;
-import android.provider.VoicemailContract.Voicemails;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.Voicemail;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Construct queries to interact with the voicemails table.
- */
-public class VoicemailsQueryHelper {
-    private static final String TAG = "VoicemailsQueryHelper";
-
-    final static String[] PROJECTION = new String[] {
-            Voicemails._ID,              // 0
-            Voicemails.SOURCE_DATA,      // 1
-            Voicemails.IS_READ,          // 2
-            Voicemails.DELETED,          // 3
-    };
-
-    public static final int _ID = 0;
-    public static final int SOURCE_DATA = 1;
-    public static final int IS_READ = 2;
-    public static final int DELETED = 3;
-
-    final static String READ_SELECTION = Voicemails.DIRTY + "=1 AND "
-                + Voicemails.DELETED + "!=1 AND " + Voicemails.IS_READ + "=1";
-    final static String DELETED_SELECTION = Voicemails.DELETED + "=1";
-
-    private Context mContext;
-    private ContentResolver mContentResolver;
-    private Uri mSourceUri;
-
-    public VoicemailsQueryHelper(Context context) {
-        mContext = context;
-        mContentResolver = context.getContentResolver();
-        mSourceUri = VoicemailContract.Voicemails.buildSourceUri(mContext.getPackageName());
-    }
-
-    /**
-     * Get all the local read voicemails that have not been synced to the server.
-     *
-     * @return A list of read voicemails.
-     */
-    public List<Voicemail> getReadVoicemails() {
-        return getLocalVoicemails(READ_SELECTION);
-    }
-
-    /**
-     * Get all the locally deleted voicemails that have not been synced to the server.
-     *
-     * @return A list of deleted voicemails.
-     */
-    public List<Voicemail> getDeletedVoicemails() {
-        return getLocalVoicemails(DELETED_SELECTION);
-    }
-
-    /**
-     * Get all voicemails locally stored.
-     *
-     * @return A list of all locally stored voicemails.
-     */
-    public List<Voicemail> getAllVoicemails() {
-        return getLocalVoicemails(null);
-    }
-
-    /**
-     * Utility method to make queries to the voicemail database.
-     *
-     * @param selection A filter declaring which rows to return. {@code null} returns all rows.
-     * @return A list of voicemails according to the selection statement.
-     */
-    private List<Voicemail> getLocalVoicemails(String selection) {
-        Cursor cursor = mContentResolver.query(mSourceUri, PROJECTION, selection, null, null);
-        if (cursor == null) {
-            return null;
-        }
-        try {
-            List<Voicemail> voicemails = new ArrayList<Voicemail>();
-            while (cursor.moveToNext()) {
-                final long id = cursor.getLong(_ID);
-                final String sourceData = cursor.getString(SOURCE_DATA);
-                final boolean isRead = cursor.getInt(IS_READ) == 1;
-                Voicemail voicemail = Voicemail
-                        .createForUpdate(id, sourceData)
-                        .setIsRead(isRead).build();
-                voicemails.add(voicemail);
-            }
-            return voicemails;
-        } finally {
-            cursor.close();
-        }
-    }
-
-    /**
-     * Deletes a list of voicemails from the voicemail content provider.
-     *
-     * @param voicemails The list of voicemails to delete
-     * @return The number of voicemails deleted
-     */
-    public int deleteFromDatabase(List<Voicemail> voicemails) {
-        int count = voicemails.size();
-        if (count == 0) {
-            return 0;
-        }
-
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < count; i++) {
-            if (i > 0) {
-                sb.append(",");
-            }
-            sb.append(voicemails.get(i).getId());
-        }
-
-        String selectionStatement = String.format(Voicemails._ID + " IN (%s)", sb.toString());
-        return mContentResolver.delete(Voicemails.CONTENT_URI, selectionStatement, null);
-    }
-
-    /**
-     * Utility method to delete a single voicemail.
-     */
-    public void deleteFromDatabase(Voicemail voicemail) {
-        mContentResolver.delete(Voicemails.CONTENT_URI, Voicemails._ID + "=?",
-                new String[] { Long.toString(voicemail.getId()) });
-    }
-
-    /**
-     * Sends an update command to the voicemail content provider for a list of voicemails.
-     * From the view of the provider, since the updater is the owner of the entry, a blank
-     * "update" means that the voicemail source is indicating that the server has up-to-date
-     * information on the voicemail. This flips the "dirty" bit to "0".
-     *
-     * @param voicemails The list of voicemails to update
-     * @return The number of voicemails updated
-     */
-    public int markReadInDatabase(List<Voicemail> voicemails) {
-        int count = voicemails.size();
-        for (int i = 0; i < count; i++) {
-            markReadInDatabase(voicemails.get(i));
-        }
-        return count;
-    }
-
-    /**
-     * Utility method to mark single message as read.
-     */
-    public void markReadInDatabase(Voicemail voicemail) {
-        Uri uri = ContentUris.withAppendedId(mSourceUri, voicemail.getId());
-        ContentValues contentValues = new ContentValues();
-        contentValues.put(Voicemails.IS_READ, "1");
-        mContentResolver.update(uri, contentValues, null, null);
-    }
-
-    /**
-     * Check if a particular voicemail has already been inserted. If not, insert the new voicemail.
-     * @param voicemail The voicemail to insert.
-     */
-    public void insertIfUnique(Voicemail voicemail) {
-        if (isVoicemailUnique(voicemail)) {
-            VoicemailContract.Voicemails.insert(mContext, voicemail);
-        } else {
-            Log.w(TAG, "Voicemail already exists.");
-        }
-    }
-
-    /**
-     * Voicemail is unique if the tuple of (phone account component name, phone account id, source
-     * data) is unique. If the phone account is missing, we also consider this unique since it's
-     * simply an "unknown" account.
-     * @param voicemail The voicemail to check if it is unique.
-     * @return {@code true} if the voicemail is unique, {@code false} otherwise.
-     */
-    private boolean isVoicemailUnique(Voicemail voicemail) {
-        Cursor cursor = null;
-        PhoneAccountHandle phoneAccount = voicemail.getPhoneAccount();
-        if (phoneAccount != null) {
-            String phoneAccountComponentName = phoneAccount.getComponentName().flattenToString();
-            String phoneAccountId = phoneAccount.getId();
-            String sourceData = voicemail.getSourceData();
-            if (phoneAccountComponentName == null || phoneAccountId == null || sourceData == null) {
-                return true;
-            }
-            try {
-                String whereClause =
-                        Voicemails.PHONE_ACCOUNT_COMPONENT_NAME + "=? AND " +
-                        Voicemails.PHONE_ACCOUNT_ID + "=? AND " + Voicemails.SOURCE_DATA + "=?";
-                String[] whereArgs = { phoneAccountComponentName, phoneAccountId, sourceData };
-                cursor = mContentResolver.query(
-                        mSourceUri, PROJECTION, whereClause, whereArgs, null);
-                if (cursor.getCount() == 0) {
-                    return true;
-                } else {
-                    return false;
-                }
-            }
-            finally {
-                if (cursor != null) {
-                    cursor.close();
-                }
-            }
-        }
-        return true;
-    }
-}
diff --git a/src/com/android/services/telephony/CdmaConference.java b/src/com/android/services/telephony/CdmaConference.java
index 5926a9f..19572e9 100755
--- a/src/com/android/services/telephony/CdmaConference.java
+++ b/src/com/android/services/telephony/CdmaConference.java
@@ -17,7 +17,6 @@
 package com.android.services.telephony;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.os.PersistableBundle;
 import android.telecom.Conference;
 import android.telecom.Connection;
@@ -36,14 +35,18 @@
  */
 public class CdmaConference extends Conference {
     private int mCapabilities;
+    private int mProperties;
 
     public CdmaConference(PhoneAccountHandle phoneAccount) {
         super(phoneAccount);
         setActive();
+
+        mProperties = Connection.PROPERTY_GENERIC_CONFERENCE;
+        setConnectionProperties(mProperties);
     }
 
     public void updateCapabilities(int capabilities) {
-        capabilities |= Connection.CAPABILITY_MUTE | Connection.CAPABILITY_GENERIC_CONFERENCE;
+        capabilities |= Connection.CAPABILITY_MUTE;
         setConnectionCapabilities(capabilities);
     }
 
diff --git a/src/com/android/services/telephony/CdmaConferenceController.java b/src/com/android/services/telephony/CdmaConferenceController.java
index 8a26365..846df61 100644
--- a/src/com/android/services/telephony/CdmaConferenceController.java
+++ b/src/com/android/services/telephony/CdmaConferenceController.java
@@ -16,9 +16,12 @@
 
 package com.android.services.telephony;
 
+import com.android.phone.PhoneUtils;
+
 import android.os.Handler;
 import android.telecom.Connection;
 import android.telecom.DisconnectCause;
+import android.telecom.PhoneAccountHandle;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,7 +35,7 @@
  *    indication given to us as to what state they are in.
  *
  * To make life easier on the user we do the following: Whenever there exist 2 or more calls, we
- * say that we are in a conference call with {@link Connection#CAPABILITY_GENERIC_CONFERENCE}.
+ * say that we are in a conference call with {@link Connection#PROPERTY_GENERIC_CONFERENCE}.
  * Generic indicates that this is a simple conference that doesn't support conference management.
  * The conference call will also support "MERGE" to begin with and stop supporting it the first time
  * we are asked to actually execute a merge. I emphasize when "we are asked" because we get no
@@ -87,6 +90,12 @@
     private CdmaConference mConference;
 
     void add(final CdmaConnection connection) {
+        if (mCdmaConnections.contains(connection)) {
+            // Adding a duplicate realistically shouldn't happen.
+            Log.w(this, "add - connection already tracked; connection=%s", connection);
+            return;
+        }
+
         if (!mCdmaConnections.isEmpty() && connection.isOutgoing()) {
             // There already exists a connection, so this will probably result in a conference once
             // it is added. For outgoing connections which are added while another connection
@@ -113,8 +122,18 @@
                 }
             }, ADD_OUTGOING_CONNECTION_DELAY_MILLIS);
         } else {
-            // This is the first connection, or it is incoming, so let it flow through.
-            addInternal(connection);
+            // Post the call to addInternal to the handler with no delay.
+            // Why you ask?  In TelephonyConnectionService#
+            // onCreateIncomingConnection(PhoneAccountHandle, ConnectionRequest) or
+            // TelephonyConnectionService#onCreateOutgoingConnection(PhoneAccountHandle,
+            // ConnectionRequest) we can create a new connection it will trigger a call to
+            // TelephonyConnectionService#addConnectionToConferenceController, which will cause us
+            // to get here.  HOWEVER, at this point ConnectionService#addConnection has not yet run,
+            // so if we end up calling ConnectionService#addConference, the connection service will
+            // not yet know about the new connection, so it won't get added to the conference.
+            // Posting to the handler ensures addConnection has a chance to happen before we add the
+            // conference.
+            mHandler.post(() -> addInternal(connection));
         }
     }
 
@@ -124,7 +143,14 @@
         recalculateConference();
     }
 
-    private void remove(CdmaConnection connection) {
+    void remove(CdmaConnection connection) {
+        if (!mCdmaConnections.contains(connection)) {
+            // Debug only since TelephonyConnectionService tries to clean up the connections tracked
+            // when the original connection changes.  It does this proactively.
+            Log.d(this, "remove - connection not tracked; connection=%s", connection);
+            return;
+        }
+
         connection.removeConnectionListener(mConnectionListener);
         mCdmaConnections.remove(connection);
         recalculateConference();
@@ -144,15 +170,18 @@
         if (conferenceConnections.size() >= 2) {
             boolean isNewlyCreated = false;
 
+            CdmaConnection newConnection = mCdmaConnections.get(mCdmaConnections.size() - 1);
+
             // There are two or more CDMA connections. Do the following:
             // 1) Create a new conference connection if it doesn't exist.
             if (mConference == null) {
                 Log.i(this, "Creating new Cdma conference call");
-                mConference = new CdmaConference(null);
+                PhoneAccountHandle phoneAccountHandle =
+                        PhoneUtils.makePstnPhoneAccountHandle(newConnection.getPhone());
+                mConference = new CdmaConference(phoneAccountHandle);
                 isNewlyCreated = true;
             }
 
-            CdmaConnection newConnection = mCdmaConnections.get(mCdmaConnections.size() - 1);
             if (newConnection.isOutgoing()) {
                 // Only an outgoing call can be merged with an ongoing call.
                 mConference.updateCapabilities(Connection.CAPABILITY_MERGE_CONFERENCE);
diff --git a/src/com/android/services/telephony/CdmaConnection.java b/src/com/android/services/telephony/CdmaConnection.java
index d13f66f..ffa9dbc 100644
--- a/src/com/android/services/telephony/CdmaConnection.java
+++ b/src/com/android/services/telephony/CdmaConnection.java
@@ -26,6 +26,7 @@
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
+import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 import com.android.internal.telephony.Phone;
 import com.android.phone.settings.SettingsConstants;
 
@@ -63,8 +64,7 @@
     /**
      * {@code True} if the CDMA connection should allow mute.
      */
-    private final boolean mAllowMute;
-    private final boolean mIsOutgoing;
+    private boolean mAllowMute;
     // Queue of pending short-DTMF characters.
     private final Queue<Character> mDtmfQueue = new LinkedList<>();
     private final EmergencyTonePlayer mEmergencyTonePlayer;
@@ -77,13 +77,15 @@
             Connection connection,
             EmergencyTonePlayer emergencyTonePlayer,
             boolean allowMute,
-            boolean isOutgoing) {
-        super(connection);
+            boolean isOutgoing,
+            String telecomCallId) {
+        super(connection, telecomCallId, isOutgoing);
         mEmergencyTonePlayer = emergencyTonePlayer;
         mAllowMute = allowMute;
-        mIsOutgoing = isOutgoing;
         mIsCallWaiting = connection != null && connection.getState() == Call.State.WAITING;
-        if (mIsCallWaiting) {
+        boolean isImsCall = getOriginalConnection() instanceof ImsPhoneConnection;
+        // Start call waiting timer for CDMA waiting call.
+        if (mIsCallWaiting && !isImsCall) {
             startCallWaitingTimer();
         }
     }
@@ -145,7 +147,7 @@
     @Override
     public TelephonyConnection cloneConnection() {
         CdmaConnection cdmaConnection = new CdmaConnection(getOriginalConnection(),
-                mEmergencyTonePlayer, mAllowMute, mIsOutgoing);
+                mEmergencyTonePlayer, mAllowMute, mIsOutgoing, getTelecomCallId());
         return cdmaConnection;
     }
 
@@ -180,7 +182,7 @@
     }
 
     @Override
-    public void performConference(TelephonyConnection otherConnection) {
+    public void performConference(android.telecom.Connection otherConnection) {
         if (isImsConnection()) {
             super.performConference(otherConnection);
         } else {
@@ -190,9 +192,9 @@
 
     void forceAsDialing(boolean isDialing) {
         if (isDialing) {
-            setDialing();
+            setStateOverride(Call.State.DIALING);
         } else {
-            updateState(true);
+            resetStateOverride();
         }
     }
 
@@ -285,4 +287,15 @@
                 PhoneNumberUtils.isLocalEmergencyNumber(
                     phone.getContext(), getAddress().getSchemeSpecificPart());
     }
+
+    /**
+     * Called when ECM mode is exited; set the connection to allow mute and update the connection
+     * capabilities.
+     */
+    @Override
+    protected void handleExitedEcmMode() {
+        // We allow mute upon existing ECM mode and rebuild the capabilities.
+        mAllowMute = true;
+        super.handleExitedEcmMode();
+    }
 }
diff --git a/src/com/android/services/telephony/ConferenceParticipantConnection.java b/src/com/android/services/telephony/ConferenceParticipantConnection.java
index 4e7546d..19dda54 100644
--- a/src/com/android/services/telephony/ConferenceParticipantConnection.java
+++ b/src/com/android/services/telephony/ConferenceParticipantConnection.java
@@ -16,6 +16,8 @@
 
 package com.android.services.telephony;
 
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 
 import android.net.Uri;
@@ -23,6 +25,8 @@
 import android.telecom.ConferenceParticipant;
 import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.SubscriptionInfo;
 import android.text.TextUtils;
 
 /**
@@ -60,12 +64,14 @@
             ConferenceParticipant participant) {
 
         mParentConnection = parentConnection;
+
         int presentation = getParticipantPresentation(participant);
         Uri address;
         if (presentation != PhoneConstants.PRESENTATION_ALLOWED) {
             address = null;
         } else {
-            address = getParticipantAddress(participant);
+            String countryIso = getCountryIso(parentConnection.getCall().getPhone());
+            address = getParticipantAddress(participant.getHandle(), countryIso);
         }
         setAddress(address, presentation);
         setCallerDisplayName(participant.getDisplayName(), presentation);
@@ -173,8 +179,19 @@
         if (TextUtils.isEmpty(number)) {
             return PhoneConstants.PRESENTATION_RESTRICTED;
         }
+        // Per RFC3261, the host name portion can also potentially include extra information:
+        // E.g. sip:anonymous1@anonymous.invalid;legid=1
+        // In this case, hostName will be anonymous.invalid and there is an extra parameter for
+        // legid=1.
+        // Parameters are optional, and the address (e.g. test@test.com) will always be the first
+        // part, with any parameters coming afterwards.
+        String hostParts[] = number.split("[;]");
+        String addressPart = hostParts[0];
 
-        String numberParts[] = number.split("[@]");
+        // Get the number portion from the address part.
+        // This will typically be formatted similar to: 6505551212@test.com
+        String numberParts[] = addressPart.split("[@]");
+
         // If we can't parse the host name out of the URI, then there is probably other data
         // present, and is likely a valid SIP URI.
         if (numberParts.length != 2) {
@@ -196,19 +213,19 @@
      * Conference event package data contains SIP URIs, so we try to extract the phone number and
      * format into a typical tel: style URI.
      *
-     * @param participant The conference participant.
+     * @param address The conference participant's address.
+     * @param countryIso The country ISO of the current subscription; used when formatting the
+     *                   participant phone number to E.164 format.
      * @return The participant's address URI.
      */
-    private Uri getParticipantAddress(ConferenceParticipant participant) {
-        Uri address = participant.getHandle();
+    @VisibleForTesting
+    public static Uri getParticipantAddress(Uri address, String countryIso) {
         if (address == null) {
             return address;
         }
-
-        // If the participant's address is already a TEL scheme, just return it as is.
-        if (PhoneAccount.SCHEME_TEL.equals(address.getScheme())) {
-            return address;
-        }
+        // Even if address is already in tel: format, still parse it and rebuild.
+        // This is to recognize tel URIs such as:
+        // tel:6505551212;phone-context=ims.mnc012.mcc034.3gppnetwork.org
 
         // Conference event package participants are identified using SIP URIs (see RFC3261).
         // A valid SIP uri has the format: sip:user:password@host:port;uri-parameters?headers
@@ -233,7 +250,44 @@
         }
         number = numberParts[0];
 
-        return Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null);
+        // Attempt to format the number in E.164 format and use that as part of the TEL URI.
+        // RFC2806 recommends to format telephone numbers using E.164 since it is independent of
+        // how the dialing of said numbers takes place.
+        // If conversion to E.164 fails, the returned value is null.  In that case, fallback to the
+        // number which was in the CEP data.
+        String formattedNumber = null;
+        if (!TextUtils.isEmpty(countryIso)) {
+            formattedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        }
+
+        return Uri.fromParts(PhoneAccount.SCHEME_TEL,
+                formattedNumber != null ? formattedNumber : number, null);
+    }
+
+    /**
+     * Given a {@link Phone} instance, determines the country ISO associated with the phone's
+     * subscription.
+     *
+     * @param phone The phone instance.
+     * @return The country ISO.
+     */
+    private String getCountryIso(Phone phone) {
+        if (phone == null) {
+            return null;
+        }
+
+        int subId = phone.getSubId();
+
+        SubscriptionInfo subInfo = TelecomAccountRegistry.getInstance(null).
+                getSubscriptionManager().getActiveSubscriptionInfo(subId);
+
+        if (subInfo == null) {
+            return null;
+        }
+        // The SubscriptionInfo reports ISO country codes in lower case.  Convert to upper case,
+        // since ultimately we use this ISO when formatting the CEP phone number, and the phone
+        // number formatting library expects uppercase ISO country codes.
+        return subInfo.getCountryIso().toUpperCase();
     }
 
     /**
@@ -248,6 +302,10 @@
         sb.append(System.identityHashCode(this));
         sb.append(" endPoint:");
         sb.append(Log.pii(mEndpoint));
+        sb.append(" address:");
+        sb.append(Log.pii(getAddress()));
+        sb.append(" addressPresentation:");
+        sb.append(getAddressPresentation());
         sb.append(" parentConnection:");
         sb.append(Log.pii(mParentConnection.getAddress()));
         sb.append(" state:");
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index 235c4b9..a420100 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -20,18 +20,17 @@
 import android.media.ToneGenerator;
 import android.telecom.DisconnectCause;
 
+import com.android.phone.ImsUtil;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.common.R;
-import com.android.phone.ImsUtil;
 
 public class DisconnectCauseUtil {
 
    /**
-    * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more generic
-    * {@link android.telecom.DisconnectCause}.object, possibly populated with a localized message
-    * and tone.
+    * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
+    * generic {@link android.telecom.DisconnectCause} object, possibly populated with a localized
+    * message and tone.
     *
-    * @param context The context.
     * @param telephonyDisconnectCause The code for the reason for the disconnect.
     */
     public static DisconnectCause toTelecomDisconnectCause(int telephonyDisconnectCause) {
@@ -39,11 +38,10 @@
     }
 
    /**
-    * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more generic
-    * {@link android.telecom.DisconnectCause}.object, possibly populated with a localized message
-    * and tone.
+    * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
+    * generic {@link android.telecom.DisconnectCause}.object, possibly populated with a localized
+    * message and tone.
     *
-    * @param context The context.
     * @param telephonyDisconnectCause The code for the reason for the disconnect.
     * @param reason Description of the reason for the disconnect, not intended for the user to see..
     */
@@ -54,7 +52,7 @@
                 toTelecomDisconnectCauseCode(telephonyDisconnectCause),
                 toTelecomDisconnectCauseLabel(context, telephonyDisconnectCause),
                 toTelecomDisconnectCauseDescription(context, telephonyDisconnectCause),
-                toTelecomDisconnectReason(telephonyDisconnectCause, reason),
+                toTelecomDisconnectReason(context,telephonyDisconnectCause, reason),
                 toTelecomDisconnectCauseTone(telephonyDisconnectCause));
     }
 
@@ -92,6 +90,7 @@
             case android.telephony.DisconnectCause.EMERGENCY_ONLY:
             case android.telephony.DisconnectCause.FDN_BLOCKED:
             case android.telephony.DisconnectCause.LIMIT_EXCEEDED:
+            case android.telephony.DisconnectCause.VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED:
                 return DisconnectCause.RESTRICTED;
 
             case android.telephony.DisconnectCause.CDMA_ACCESS_FAILURE:
@@ -115,6 +114,8 @@
             case android.telephony.DisconnectCause.OUT_OF_NETWORK:
             case android.telephony.DisconnectCause.OUT_OF_SERVICE:
             case android.telephony.DisconnectCause.POWER_OFF:
+            case android.telephony.DisconnectCause.LOW_BATTERY:
+            case android.telephony.DisconnectCause.DIAL_LOW_BATTERY:
             case android.telephony.DisconnectCause.SERVER_ERROR:
             case android.telephony.DisconnectCause.SERVER_UNREACHABLE:
             case android.telephony.DisconnectCause.TIMED_OUT:
@@ -124,6 +125,13 @@
             case android.telephony.DisconnectCause.DIAL_MODIFIED_TO_SS:
             case android.telephony.DisconnectCause.DIAL_MODIFIED_TO_DIAL:
             case android.telephony.DisconnectCause.ERROR_UNSPECIFIED:
+            case android.telephony.DisconnectCause.MAXIMUM_NUMBER_OF_CALLS_REACHED:
+            case android.telephony.DisconnectCause.DATA_DISABLED:
+            case android.telephony.DisconnectCause.DATA_LIMIT_REACHED:
+            case android.telephony.DisconnectCause.DIALED_CALL_FORWARDING_WHILE_ROAMING:
+            case android.telephony.DisconnectCause.IMEI_NOT_ACCEPTED:
+            case android.telephony.DisconnectCause.WIFI_LOST:
+            case android.telephony.DisconnectCause.IMS_ACCESS_BLOCKED:
                 return DisconnectCause.ERROR;
 
             case android.telephony.DisconnectCause.DIALED_MMI:
@@ -136,6 +144,12 @@
             case android.telephony.DisconnectCause.NOT_DISCONNECTED:
                 return DisconnectCause.UNKNOWN;
 
+            case android.telephony.DisconnectCause.CALL_PULLED:
+                return DisconnectCause.CALL_PULLED;
+
+            case android.telephony.DisconnectCause.ANSWERED_ELSEWHERE:
+                return DisconnectCause.ANSWERED_ELSEWHERE;
+
             default:
                 Log.w("DisconnectCauseUtil.toTelecomDisconnectCauseCode",
                         "Unrecognized Telephony DisconnectCause "
@@ -200,6 +214,14 @@
                 resourceId = R.string.callFailed_powerOff;
                 break;
 
+            case android.telephony.DisconnectCause.LOW_BATTERY:
+                resourceId = R.string.callFailed_low_battery;
+                break;
+
+            case android.telephony.DisconnectCause.DIAL_LOW_BATTERY:
+                resourceId = R.string.dialFailed_low_battery;
+                break;
+
             case android.telephony.DisconnectCause.ICC_ERROR:
                 resourceId = R.string.callFailed_simError;
                 break;
@@ -213,6 +235,22 @@
                 resourceId = R.string.callFailed_unobtainable_number;
                 break;
 
+            case android.telephony.DisconnectCause.CALL_PULLED:
+                resourceId = R.string.callEnded_pulled;
+                break;
+
+            case android.telephony.DisconnectCause.MAXIMUM_NUMBER_OF_CALLS_REACHED:
+                resourceId = R.string.callFailed_maximum_reached;
+                break;
+
+            case android.telephony.DisconnectCause.DATA_DISABLED:
+                resourceId = R.string.callFailed_data_disabled;
+                break;
+
+            case android.telephony.DisconnectCause.DATA_LIMIT_REACHED:
+                resourceId = R.string.callFailed_data_limit_reached;
+                break;
+
             default:
                 break;
         }
@@ -280,7 +318,9 @@
                 // TODO: Offer the option to turn the radio on, and automatically retry the call
                 // once network registration is complete.
 
-                if (ImsUtil.isWfcModeWifiOnly(context)) {
+                if (ImsUtil.shouldPromoteWfc(context)) {
+                    resourceId = R.string.incall_error_promote_wfc;
+                } else if (ImsUtil.isWfcModeWifiOnly(context)) {
                     resourceId = R.string.incall_error_wfc_only_no_wireless_network;
                 } else if (ImsUtil.isWfcEnabled(context)) {
                     resourceId = R.string.incall_error_power_off_wfc;
@@ -289,6 +329,14 @@
                 }
                 break;
 
+            case android.telephony.DisconnectCause.LOW_BATTERY:
+                resourceId = R.string.callFailed_low_battery;
+                break;
+
+            case android.telephony.DisconnectCause.DIAL_LOW_BATTERY:
+                resourceId = R.string.dialFailed_low_battery;
+                break;
+
             case android.telephony.DisconnectCause.CDMA_NOT_EMERGENCY:
                 // Only emergency calls are allowed when in emergency callback mode.
                 resourceId = R.string.incall_error_ecm_emergency_only;
@@ -302,7 +350,9 @@
 
             case android.telephony.DisconnectCause.OUT_OF_SERVICE:
                 // No network connection.
-                if (ImsUtil.isWfcModeWifiOnly(context)) {
+                if (ImsUtil.shouldPromoteWfc(context)) {
+                    resourceId = R.string.incall_error_promote_wfc;
+                } else if (ImsUtil.isWfcModeWifiOnly(context)) {
                     resourceId = R.string.incall_error_wfc_only_no_wireless_network;
                 } else if (ImsUtil.isWfcEnabled(context)) {
                     resourceId = R.string.incall_error_out_of_service_wfc;
@@ -324,18 +374,81 @@
                 resourceId = R.string.incall_error_missing_voicemail_number;
                 break;
 
+            case android.telephony.DisconnectCause.VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED:
+                resourceId = R.string.callFailed_video_call_tty_enabled;
+                break;
+
+            case android.telephony.DisconnectCause.CALL_PULLED:
+                resourceId = R.string.callEnded_pulled;
+                break;
+
+            case android.telephony.DisconnectCause.MAXIMUM_NUMBER_OF_CALLS_REACHED:
+                resourceId = R.string.callFailed_maximum_reached;
+
             case android.telephony.DisconnectCause.OUTGOING_CANCELED:
                 // We don't want to show any dialog for the canceled case since the call was
                 // either canceled by the user explicitly (end-call button pushed immediately)
                 // or some other app canceled the call and immediately issued a new CALL to
                 // replace it.
+                break;
+
+            case android.telephony.DisconnectCause.DATA_DISABLED:
+                resourceId = R.string.callFailed_data_disabled;
+                break;
+
+            case android.telephony.DisconnectCause.DATA_LIMIT_REACHED:
+                resourceId = R.string.callFailed_data_limit_reached_description;
+                break;
+            case android.telephony.DisconnectCause.DIALED_CALL_FORWARDING_WHILE_ROAMING:
+                resourceId = com.android.internal.R.string.mmiErrorWhileRoaming;
+                break;
+
+            case android.telephony.DisconnectCause.IMEI_NOT_ACCEPTED:
+                resourceId = R.string.callFailed_imei_not_accepted;
+                break;
+
+            case android.telephony.DisconnectCause.WIFI_LOST:
+                resourceId = R.string.callFailed_wifi_lost;
+                break;
+
             default:
                 break;
         }
         return resourceId == null ? "" : context.getResources().getString(resourceId);
     }
 
-    private static String toTelecomDisconnectReason(int telephonyDisconnectCause, String reason) {
+    /**
+     * Maps the telephony {@link android.telephony.DisconnectCause} into a reason string which is
+     * returned in the Telecom {@link DisconnectCause#getReason()}.
+     *
+     * @param context The current context.
+     * @param telephonyDisconnectCause The {@link android.telephony.DisconnectCause} code.
+     * @param reason A reason provided by the caller; only used if a more specific reason cannot
+     *               be determined here.
+     * @return The disconnect reason.
+     */
+    private static String toTelecomDisconnectReason(Context context, int telephonyDisconnectCause,
+            String reason) {
+
+        if (context == null) {
+            return "";
+        }
+
+        switch (telephonyDisconnectCause) {
+            case android.telephony.DisconnectCause.POWER_OFF:
+                // Airplane mode (radio off)
+                // intentional fall-through
+            case android.telephony.DisconnectCause.OUT_OF_SERVICE:
+                // No network connection.
+                if (ImsUtil.shouldPromoteWfc(context)) {
+                    return android.telecom.DisconnectCause.REASON_WIFI_ON_BUT_WFC_OFF;
+                }
+                break;
+            case android.telephony.DisconnectCause.IMS_ACCESS_BLOCKED:
+                return DisconnectCause.REASON_IMS_ACCESS_BLOCKED;
+        }
+
+        // If no specific code-mapping found, then fall back to using the reason.
         String causeAsString = android.telephony.DisconnectCause.toString(telephonyDisconnectCause);
         if (reason == null) {
             return causeAsString;
@@ -371,6 +484,7 @@
             case android.telephony.DisconnectCause.ERROR_UNSPECIFIED:
             case android.telephony.DisconnectCause.LOCAL:
             case android.telephony.DisconnectCause.NORMAL:
+            case android.telephony.DisconnectCause.VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED:
                 return ToneGenerator.TONE_PROP_PROMPT;
 
             case android.telephony.DisconnectCause.IMS_MERGED_SUCCESSFULLY:
diff --git a/src/com/android/services/telephony/EmergencyCallHelper.java b/src/com/android/services/telephony/EmergencyCallHelper.java
deleted file mode 100644
index c64a649..0000000
--- a/src/com/android/services/telephony/EmergencyCallHelper.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony;
-
-import android.content.Context;
-
-import android.content.Intent;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.telephony.ServiceState;
-
-import com.android.internal.os.SomeArgs;
-import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
-
-/**
- * Helper class that implements special behavior related to emergency calls. Specifically, this
- * class handles the case of the user trying to dial an emergency number while the radio is off
- * (i.e. the device is in airplane mode), by forcibly turning the radio back on, waiting for it to
- * come up, and then retrying the emergency call.
- */
-public class EmergencyCallHelper {
-
-    /**
-     * Receives the result of the EmergencyCallHelper's attempt to turn on the radio.
-     */
-    interface Callback {
-        void onComplete(boolean isRadioReady);
-    }
-
-    // Number of times to retry the call, and time between retry attempts.
-    public static final int MAX_NUM_RETRIES = 5;
-    public static final long TIME_BETWEEN_RETRIES_MILLIS = 5000;  // msec
-
-    // Handler message codes; see handleMessage()
-    private static final int MSG_START_SEQUENCE = 1;
-    private static final int MSG_SERVICE_STATE_CHANGED = 2;
-    private static final int MSG_RETRY_TIMEOUT = 3;
-
-    private final Context mContext;
-
-    private final Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_START_SEQUENCE:
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    Phone phone = (Phone) args.arg1;
-                    EmergencyCallHelper.Callback callback =
-                            (EmergencyCallHelper.Callback) args.arg2;
-                    args.recycle();
-
-                    startSequenceInternal(phone, callback);
-                    break;
-                case MSG_SERVICE_STATE_CHANGED:
-                    onServiceStateChanged((ServiceState) ((AsyncResult) msg.obj).result);
-                    break;
-                case MSG_RETRY_TIMEOUT:
-                    onRetryTimeout();
-                    break;
-                default:
-                    Log.wtf(this, "handleMessage: unexpected message: %d.", msg.what);
-                    break;
-            }
-        }
-    };
-
-
-    private Callback mCallback;  // The callback to notify upon completion.
-    private Phone mPhone;  // The phone that will attempt to place the call.
-    private int mNumRetriesSoFar;
-
-    public EmergencyCallHelper(Context context) {
-        Log.d(this, "EmergencyCallHelper constructor.");
-        mContext = context;
-    }
-
-    /**
-     * Starts the "turn on radio" sequence. This is the (single) external API of the
-     * EmergencyCallHelper class.
-     *
-     * This method kicks off the following sequence:
-     * - Power on the radio.
-     * - Listen for the service state change event telling us the radio has come up.
-     * - Retry if we've gone {@link #TIME_BETWEEN_RETRIES_MILLIS} without any response from the
-     *   radio.
-     * - Finally, clean up any leftover state.
-     *
-     * This method is safe to call from any thread, since it simply posts a message to the
-     * EmergencyCallHelper's handler (thus ensuring that the rest of the sequence is entirely
-     * serialized, and runs only on the handler thread.)
-     */
-    public void startTurnOnRadioSequence(Phone phone, Callback callback) {
-        Log.d(this, "startTurnOnRadioSequence");
-
-        SomeArgs args = SomeArgs.obtain();
-        args.arg1 = phone;
-        args.arg2 = callback;
-        mHandler.obtainMessage(MSG_START_SEQUENCE, args).sendToTarget();
-    }
-
-    /**
-     * Actual implementation of startTurnOnRadioSequence(), guaranteed to run on the handler thread.
-     * @see #startTurnOnRadioSequence
-     */
-    private void startSequenceInternal(Phone phone, Callback callback) {
-        Log.d(this, "startSequenceInternal()");
-
-        // First of all, clean up any state left over from a prior emergency call sequence. This
-        // ensures that we'll behave sanely if another startTurnOnRadioSequence() comes in while
-        // we're already in the middle of the sequence.
-        cleanup();
-
-        mPhone = phone;
-        mCallback = callback;
-
-
-        // No need to check the current service state here, since the only reason to invoke this
-        // method in the first place is if the radio is powered-off. So just go ahead and turn the
-        // radio on.
-
-        powerOnRadio();  // We'll get an onServiceStateChanged() callback
-                         // when the radio successfully comes up.
-
-        // Next step: when the SERVICE_STATE_CHANGED event comes in, we'll retry the call; see
-        // onServiceStateChanged(). But also, just in case, start a timer to make sure we'll retry
-        // the call even if the SERVICE_STATE_CHANGED event never comes in for some reason.
-        startRetryTimer();
-    }
-
-    /**
-     * Handles the SERVICE_STATE_CHANGED event. Normally this event tells us that the radio has
-     * finally come up. In that case, it's now safe to actually place the emergency call.
-     */
-    private void onServiceStateChanged(ServiceState state) {
-        Log.d(this, "onServiceStateChanged(), new state = %s.", state);
-
-        // Possible service states:
-        // - STATE_IN_SERVICE        // Normal operation
-        // - STATE_OUT_OF_SERVICE    // Still searching for an operator to register to,
-        //                           // or no radio signal
-        // - STATE_EMERGENCY_ONLY    // Phone is locked; only emergency numbers are allowed
-        // - STATE_POWER_OFF         // Radio is explicitly powered off (airplane mode)
-
-        if (isOkToCall(state.getState(), mPhone.getState())) {
-            // Woo hoo!  It's OK to actually place the call.
-            Log.d(this, "onServiceStateChanged: ok to call!");
-
-            onComplete(true);
-            cleanup();
-        } else {
-            // The service state changed, but we're still not ready to call yet. (This probably was
-            // the transition from STATE_POWER_OFF to STATE_OUT_OF_SERVICE, which happens
-            // immediately after powering-on the radio.)
-            //
-            // So just keep waiting; we'll probably get to either STATE_IN_SERVICE or
-            // STATE_EMERGENCY_ONLY very shortly. (Or even if that doesn't happen, we'll at least do
-            // another retry when the RETRY_TIMEOUT event fires.)
-            Log.d(this, "onServiceStateChanged: not ready to call yet, keep waiting.");
-        }
-    }
-
-    private boolean isOkToCall(int serviceState, PhoneConstants.State phoneState) {
-        // Once we reach either STATE_IN_SERVICE or STATE_EMERGENCY_ONLY, it's finally OK to place
-        // the emergency call.
-        return ((phoneState == PhoneConstants.State.OFFHOOK)
-                || (serviceState == ServiceState.STATE_IN_SERVICE)
-                || (serviceState == ServiceState.STATE_EMERGENCY_ONLY)) ||
-
-                // Allow STATE_OUT_OF_SERVICE if we are at the max number of retries.
-                (mNumRetriesSoFar == MAX_NUM_RETRIES &&
-                 serviceState == ServiceState.STATE_OUT_OF_SERVICE);
-    }
-
-    /**
-     * Handles the retry timer expiring.
-     */
-    private void onRetryTimeout() {
-        PhoneConstants.State phoneState = mPhone.getState();
-        int serviceState = mPhone.getServiceState().getState();
-        Log.d(this, "onRetryTimeout():  phone state = %s, service state = %d, retries = %d.",
-               phoneState, serviceState, mNumRetriesSoFar);
-
-        // - If we're actually in a call, we've succeeded.
-        // - Otherwise, if the radio is now on, that means we successfully got out of airplane mode
-        //   but somehow didn't get the service state change event.  In that case, try to place the
-        //   call.
-        // - If the radio is still powered off, try powering it on again.
-
-        if (isOkToCall(serviceState, phoneState)) {
-            Log.d(this, "onRetryTimeout: Radio is on. Cleaning up.");
-
-            // Woo hoo -- we successfully got out of airplane mode.
-            onComplete(true);
-            cleanup();
-        } else {
-            // Uh oh; we've waited the full TIME_BETWEEN_RETRIES_MILLIS and the radio is still not
-            // powered-on.  Try again.
-
-            mNumRetriesSoFar++;
-            Log.d(this, "mNumRetriesSoFar is now " + mNumRetriesSoFar);
-
-            if (mNumRetriesSoFar > MAX_NUM_RETRIES) {
-                Log.w(this, "Hit MAX_NUM_RETRIES; giving up.");
-                cleanup();
-            } else {
-                Log.d(this, "Trying (again) to turn on the radio.");
-                powerOnRadio();  // Again, we'll (hopefully) get an onServiceStateChanged() callback
-                                 // when the radio successfully comes up.
-                startRetryTimer();
-            }
-        }
-    }
-
-    /**
-     * Attempt to power on the radio (i.e. take the device out of airplane mode.)
-     * Additionally, start listening for service state changes; we'll eventually get an
-     * onServiceStateChanged() callback when the radio successfully comes up.
-     */
-    private void powerOnRadio() {
-        Log.d(this, "powerOnRadio().");
-
-        // We're about to turn on the radio, so arrange to be notified when the sequence is
-        // complete.
-        registerForServiceStateChanged();
-
-        // If airplane mode is on, we turn it off the same way that the Settings activity turns it
-        // off.
-        if (Settings.Global.getInt(mContext.getContentResolver(),
-                                   Settings.Global.AIRPLANE_MODE_ON, 0) > 0) {
-            Log.d(this, "==> Turning off airplane mode.");
-
-            // Change the system setting
-            Settings.Global.putInt(mContext.getContentResolver(),
-                                   Settings.Global.AIRPLANE_MODE_ON, 0);
-
-            // Post the broadcast intend for change in airplane mode
-            // TODO: We really should not be in charge of sending this broadcast.
-            //     If changing the setting is sufficent to trigger all of the rest of the logic,
-            //     then that should also trigger the broadcast intent.
-            Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
-            intent.putExtra("state", false);
-            mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
-        } else {
-            // Otherwise, for some strange reason the radio is off (even though the Settings
-            // database doesn't think we're in airplane mode.)  In this case just turn the radio
-            // back on.
-            Log.d(this, "==> (Apparently) not in airplane mode; manually powering radio on.");
-            mPhone.setRadioPower(true);
-        }
-    }
-
-    /**
-     * Clean up when done with the whole sequence: either after successfully turning on the radio,
-     * or after bailing out because of too many failures.
-     *
-     * The exact cleanup steps are:
-     * - Notify callback if we still hadn't sent it a response.
-     * - Double-check that we're not still registered for any telephony events
-     * - Clean up any extraneous handler messages (like retry timeouts) still in the queue
-     *
-     * Basically this method guarantees that there will be no more activity from the
-     * EmergencyCallHelper until someone kicks off the whole sequence again with another call to
-     * {@link #startTurnOnRadioSequence}
-     *
-     * TODO: Do the work for the comment below:
-     * Note we don't call this method simply after a successful call to placeCall(), since it's
-     * still possible the call will disconnect very quickly with an OUT_OF_SERVICE error.
-     */
-    private void cleanup() {
-        Log.d(this, "cleanup()");
-
-        // This will send a failure call back if callback has yet to be invoked.  If the callback
-        // was already invoked, it's a no-op.
-        onComplete(false);
-
-        unregisterForServiceStateChanged();
-        cancelRetryTimer();
-
-        // Used for unregisterForServiceStateChanged() so we null it out here instead.
-        mPhone = null;
-        mNumRetriesSoFar = 0;
-    }
-
-    private void startRetryTimer() {
-        cancelRetryTimer();
-        mHandler.sendEmptyMessageDelayed(MSG_RETRY_TIMEOUT, TIME_BETWEEN_RETRIES_MILLIS);
-    }
-
-    private void cancelRetryTimer() {
-        mHandler.removeMessages(MSG_RETRY_TIMEOUT);
-    }
-
-    private void registerForServiceStateChanged() {
-        // Unregister first, just to make sure we never register ourselves twice.  (We need this
-        // because Phone.registerForServiceStateChanged() does not prevent multiple registration of
-        // the same handler.)
-        unregisterForServiceStateChanged();
-        mPhone.registerForServiceStateChanged(mHandler, MSG_SERVICE_STATE_CHANGED, null);
-    }
-
-    private void unregisterForServiceStateChanged() {
-        // This method is safe to call even if we haven't set mPhone yet.
-        if (mPhone != null) {
-            mPhone.unregisterForServiceStateChanged(mHandler);  // Safe even if unnecessary
-        }
-        mHandler.removeMessages(MSG_SERVICE_STATE_CHANGED);  // Clean up any pending messages too
-    }
-
-    private void onComplete(boolean isRadioReady) {
-        if (mCallback != null) {
-            Callback tempCallback = mCallback;
-            mCallback = null;
-            tempCallback.onComplete(isRadioReady);
-        }
-    }
-}
diff --git a/src/com/android/services/telephony/GsmConnection.java b/src/com/android/services/telephony/GsmConnection.java
index 1273c60..ca547fa 100644
--- a/src/com/android/services/telephony/GsmConnection.java
+++ b/src/com/android/services/telephony/GsmConnection.java
@@ -22,8 +22,8 @@
  * Manages a single phone call handled by GSM.
  */
 final class GsmConnection extends TelephonyConnection {
-    GsmConnection(Connection connection) {
-        super(connection);
+    GsmConnection(Connection connection, String telecomCallId, boolean isOutgoing) {
+        super(connection, telecomCallId, isOutgoing);
     }
 
     /**
@@ -35,7 +35,8 @@
      */
     @Override
     public TelephonyConnection cloneConnection() {
-        GsmConnection gsmConnection = new GsmConnection(getOriginalConnection());
+        GsmConnection gsmConnection = new GsmConnection(getOriginalConnection(),
+                getTelecomCallId(), mIsOutgoing);
         return gsmConnection;
     }
 
@@ -56,13 +57,36 @@
     }
 
     @Override
+    protected int buildConnectionProperties() {
+        int properties = super.buildConnectionProperties();
+        // PROPERTY_IS_DOWNGRADED_CONFERENCE is permanent on GSM connections -- once it is set, it
+        // should be retained.
+        if ((getConnectionProperties() & PROPERTY_IS_DOWNGRADED_CONFERENCE) != 0) {
+            properties |= PROPERTY_IS_DOWNGRADED_CONFERENCE;
+        }
+        return properties;
+    }
+
+    @Override
     protected int buildConnectionCapabilities() {
         int capabilities = super.buildConnectionCapabilities();
         capabilities |= CAPABILITY_MUTE;
-        capabilities |= CAPABILITY_SUPPORT_HOLD;
-        if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
-            capabilities |= CAPABILITY_HOLD;
+        // Overwrites TelephonyConnection.buildConnectionCapabilities() and resets the hold options
+        // because all GSM calls should hold, even if the carrier config option is set to not show
+        // hold for IMS calls.
+        if (!shouldTreatAsEmergencyCall()) {
+            capabilities |= CAPABILITY_SUPPORT_HOLD;
+            if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
+                capabilities |= CAPABILITY_HOLD;
+            }
         }
+
+        // For GSM connections, CAPABILITY_CONFERENCE_HAS_NO_CHILDREN should be applied whenever
+        // PROPERTY_IS_DOWNGRADED_CONFERENCE is true.
+        if ((getConnectionProperties() & PROPERTY_IS_DOWNGRADED_CONFERENCE) != 0) {
+            capabilities |= CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
+        }
+
         return capabilities;
     }
 
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index 8ccc8f9..06bc06f 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -19,33 +19,36 @@
 import android.content.Context;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
+import android.os.Bundle;
+import android.os.PersistableBundle;
 import android.telecom.Conference;
 import android.telecom.ConferenceParticipant;
-import android.telecom.Connection.VideoProvider;
 import android.telecom.Connection;
+import android.telecom.Connection.VideoProvider;
 import android.telecom.DisconnectCause;
 import android.telecom.Log;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.StatusHints;
 import android.telecom.VideoProfile;
+import android.telephony.CarrierConfigManager;
 import android.telephony.PhoneNumberUtils;
+import android.util.Pair;
 
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.imsphone.ImsPhone;
-import com.android.internal.telephony.imsphone.ImsPhoneConnection;
+import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 /**
  * Represents an IMS conference call.
@@ -128,17 +131,6 @@
         }
 
         /**
-         * Handles destruction of the host connection; once the host connection has been
-         * destroyed, cleans up the conference participant connection.
-         *
-         * @param connection The host connection.
-         */
-        @Override
-        public void onDestroyed(android.telecom.Connection connection) {
-            disconnectConferenceParticipants();
-        }
-
-        /**
          * Handles changes to conference participant data as reported by the conference host
          * connection.
          *
@@ -173,10 +165,21 @@
 
         @Override
         public void onConnectionCapabilitiesChanged(Connection c, int connectionCapabilities) {
-            Log.d(this, "onCallCapabilitiesChanged: Connection: %s, callCapabilities: %s", c,
-                    connectionCapabilities);
+            Log.d(this, "onConnectionCapabilitiesChanged: Connection: %s," +
+                    " connectionCapabilities: %s", c, connectionCapabilities);
             int capabilites = ImsConference.this.getConnectionCapabilities();
-            setConnectionCapabilities(applyHostCapabilities(capabilites, connectionCapabilities));
+            boolean isVideoConferencingSupported = mConferenceHost == null ? false :
+                    mConferenceHost.isCarrierVideoConferencingSupported();
+            setConnectionCapabilities(applyHostCapabilities(capabilites, connectionCapabilities,
+                    isVideoConferencingSupported));
+        }
+
+        @Override
+        public void onConnectionPropertiesChanged(Connection c, int connectionProperties) {
+            Log.d(this, "onConnectionPropertiesChanged: Connection: %s," +
+                    " connectionProperties: %s", c, connectionProperties);
+            int properties = ImsConference.this.getConnectionProperties();
+            setConnectionProperties(applyHostProperties(properties, connectionProperties));
         }
 
         @Override
@@ -184,12 +187,24 @@
             Log.v(this, "onStatusHintsChanged");
             updateStatusHints();
         }
+
+        @Override
+        public void onExtrasChanged(Connection c, Bundle extras) {
+            Log.v(this, "onExtrasChanged: c=" + c + " Extras=" + extras);
+            putExtras(extras);
+        }
+
+        @Override
+        public void onExtrasRemoved(Connection c, List<String> keys) {
+            Log.v(this, "onExtrasRemoved: c=" + c + " key=" + keys);
+            removeExtras(keys);
+        }
     };
 
     /**
      * The telephony connection service; used to add new participant connections to Telecom.
      */
-    private TelephonyConnectionService mTelephonyConnectionService;
+    private TelephonyConnectionServiceProxy mTelephonyConnectionService;
 
     /**
      * The connection to the conference server which is hosting the conference.
@@ -204,14 +219,17 @@
     /**
      * The address of the conference host.
      */
-    private Uri mConferenceHostAddress;
+    private Uri[] mConferenceHostAddress;
+
+    private TelecomAccountRegistry mTelecomAccountRegistry;
 
     /**
-     * The known conference participant connections.  The HashMap is keyed by endpoint Uri.
+     * The known conference participant connections.  The HashMap is keyed by a Pair containing
+     * the handle and endpoint Uris.
      * Access to the hashmap is protected by the {@link #mUpdateSyncRoot}.
      */
-    private final HashMap<Uri, ConferenceParticipantConnection>
-            mConferenceParticipantConnections = new HashMap<Uri, ConferenceParticipantConnection>();
+    private final HashMap<Pair<Uri, Uri>, ConferenceParticipantConnection>
+            mConferenceParticipantConnections = new HashMap<>();
 
     /**
      * Sychronization root used to ensure that updates to the
@@ -238,29 +256,37 @@
      * @param telephonyConnectionService The connection service responsible for adding new
      *                                   conferene participants.
      * @param conferenceHost The telephony connection hosting the conference.
+     * @param phoneAccountHandle The phone account handle associated with the conference.
      */
-    public ImsConference(TelephonyConnectionService telephonyConnectionService,
-            TelephonyConnection conferenceHost) {
+    public ImsConference(TelecomAccountRegistry telecomAccountRegistry,
+                         TelephonyConnectionServiceProxy telephonyConnectionService,
+            TelephonyConnection conferenceHost, PhoneAccountHandle phoneAccountHandle) {
 
-        super((conferenceHost != null && conferenceHost.getCall() != null &&
-                        conferenceHost.getCall().getPhone() != null) ?
-                PhoneUtils.makePstnPhoneAccountHandle(
-                        conferenceHost.getCall().getPhone()) : null);
+        super(phoneAccountHandle);
+
+        mTelecomAccountRegistry = telecomAccountRegistry;
 
         // Specify the connection time of the conference to be the connection time of the original
         // connection.
         long connectTime = conferenceHost.getOriginalConnection().getConnectTime();
-        setConnectTimeMillis(connectTime);
+        long connectElapsedTime = conferenceHost.getOriginalConnection().getConnectTimeReal();
+        setConnectionTime(connectTime);
+        setConnectionElapsedTime(connectElapsedTime);
         // Set the connectTime in the connection as well.
         conferenceHost.setConnectTimeMillis(connectTime);
+        conferenceHost.setConnectElapsedTimeMillis(connectElapsedTime);
 
         mTelephonyConnectionService = telephonyConnectionService;
         setConferenceHost(conferenceHost);
 
-        int capabilities = Connection.CAPABILITY_SUPPORT_HOLD | Connection.CAPABILITY_HOLD |
-                Connection.CAPABILITY_MUTE | Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
+        int capabilities = Connection.CAPABILITY_MUTE |
+                Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
+        if (canHoldImsCalls()) {
+            capabilities |= Connection.CAPABILITY_SUPPORT_HOLD | Connection.CAPABILITY_HOLD;
+        }
         capabilities = applyHostCapabilities(capabilities,
-                mConferenceHost.getConnectionCapabilities());
+                mConferenceHost.getConnectionCapabilities(),
+                mConferenceHost.isCarrierVideoConferencingSupported());
         setConnectionCapabilities(capabilities);
 
     }
@@ -270,44 +296,68 @@
      *
      * @param conferenceCapabilities The current conference capabilities.
      * @param capabilities The new conference host capabilities.
+     * @param isVideoConferencingSupported Whether video conferencing is supported.
      * @return The merged capabilities to be applied to the conference.
      */
-    private int applyHostCapabilities(int conferenceCapabilities, int capabilities) {
-        if (can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL)) {
-            conferenceCapabilities = applyCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL);
+    private int applyHostCapabilities(int conferenceCapabilities, int capabilities,
+            boolean isVideoConferencingSupported) {
+
+        conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                    Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL,
+                    can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
+
+        if (isVideoConferencingSupported) {
+            conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                    Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL,
+                    can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL));
+            conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                    Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO,
+                    can(capabilities, Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO));
         } else {
-            conferenceCapabilities = removeCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL);
+            // If video conferencing is not supported, explicitly turn off the remote video
+            // capability and the ability to upgrade to video.
+            Log.v(this, "applyHostCapabilities : video conferencing not supported");
+            conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                    Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL, false);
+            conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                    Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO, false);
         }
 
-        if (can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL)) {
-            conferenceCapabilities = applyCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
-        } else {
-            conferenceCapabilities = removeCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
-        }
+        conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO,
+                can(capabilities, Connection.CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO));
 
-        if (can(capabilities, Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO)) {
-            conferenceCapabilities = applyCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO);
-        } else {
-            conferenceCapabilities = removeCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_CAN_UPGRADE_TO_VIDEO);
-        }
+        conferenceCapabilities = changeBitmask(conferenceCapabilities,
+                Connection.CAPABILITY_CAN_PAUSE_VIDEO,
+                mConferenceHost.getVideoPauseSupported() && isVideoCapable());
 
-        if (can(capabilities, Connection.CAPABILITY_HIGH_DEF_AUDIO)) {
-            conferenceCapabilities = applyCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_HIGH_DEF_AUDIO);
-        } else {
-            conferenceCapabilities = removeCapability(conferenceCapabilities,
-                    Connection.CAPABILITY_HIGH_DEF_AUDIO);
-        }
         return conferenceCapabilities;
     }
 
     /**
+     * Transfers properties from the conference host to the conference itself.
+     *
+     * @param conferenceProperties The current conference properties.
+     * @param properties The new conference host properties.
+     * @return The merged properties to be applied to the conference.
+     */
+    private int applyHostProperties(int conferenceProperties, int properties) {
+        conferenceProperties = changeBitmask(conferenceProperties,
+                Connection.PROPERTY_HIGH_DEF_AUDIO,
+                can(properties, Connection.PROPERTY_HIGH_DEF_AUDIO));
+
+        conferenceProperties = changeBitmask(conferenceProperties,
+                Connection.PROPERTY_WIFI,
+                can(properties, Connection.PROPERTY_WIFI));
+
+        conferenceProperties = changeBitmask(conferenceProperties,
+                Connection.PROPERTY_IS_EXTERNAL_CALL,
+                can(properties, Connection.PROPERTY_IS_EXTERNAL_CALL));
+
+        return conferenceProperties;
+    }
+
+    /**
      * Not used by the IMS conference controller.
      *
      * @return {@code Null}.
@@ -358,6 +408,8 @@
             return;
         }
 
+        disconnectConferenceParticipants();
+
         Call call = mConferenceHost.getCall();
         if (call != null) {
             try {
@@ -390,7 +442,7 @@
     @Override
     public void onMerge(android.telecom.Connection connection) {
         try {
-            Phone phone = ((TelephonyConnection) connection).getPhone();
+            Phone phone = mConferenceHost.getPhone();
             if (phone != null) {
                 phone.conference();
             }
@@ -456,14 +508,20 @@
         // No-op
     }
 
-    private int applyCapability(int capabilities, int capability) {
-        int newCapabilities = capabilities | capability;
-        return newCapabilities;
-    }
-
-    private int removeCapability(int capabilities, int capability) {
-        int newCapabilities = capabilities & ~capability;
-        return newCapabilities;
+    /**
+     * Changes a bit-mask to add or remove a bit-field.
+     *
+     * @param bitmask The bit-mask.
+     * @param bitfield The bit-field to change.
+     * @param enabled Whether the bit-field should be set or removed.
+     * @return The bit-mask with the bit-field changed.
+     */
+    private int changeBitmask(int bitmask, int bitfield, boolean enabled) {
+        if (enabled) {
+            return bitmask | bitfield;
+        } else {
+            return bitmask & ~bitfield;
+        }
     }
 
     /**
@@ -478,12 +536,9 @@
         }
         com.android.internal.telephony.Connection originalConnection =
                 mConferenceHost.getOriginalConnection();
-        if (!(originalConnection instanceof ImsPhoneConnection)) {
-            return false;
-        }
 
-        ImsPhoneConnection imsPhoneConnection = (ImsPhoneConnection) originalConnection;
-        return imsPhoneConnection.isMultiparty() && imsPhoneConnection.isConferenceHost();
+        return originalConnection != null && originalConnection.isMultiparty() &&
+                originalConnection.isConferenceHost();
     }
 
     /**
@@ -530,20 +585,41 @@
         // Attempt to get the conference host's address (e.g. the host's own phone number).
         // We need to look at the default phone for the ImsPhone when creating the phone account
         // for the
-        if (mConferenceHost.getPhone() != null &&  mConferenceHost.getPhone() instanceof ImsPhone) {
+        if (mConferenceHost.getPhone() != null &&
+                mConferenceHost.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) {
             // Look up the conference host's address; we need this later for filtering out the
             // conference host in conference event package data.
-            ImsPhone imsPhone = (ImsPhone) mConferenceHost.getPhone();
+            Phone imsPhone = mConferenceHost.getPhone();
             mConferenceHostPhoneAccountHandle =
                     PhoneUtils.makePstnPhoneAccountHandle(imsPhone.getDefaultPhone());
-            mConferenceHostAddress = TelecomAccountRegistry.getInstance(mTelephonyConnectionService)
-                    .getAddress(mConferenceHostPhoneAccountHandle);
+            Uri hostAddress = mTelecomAccountRegistry.getAddress(mConferenceHostPhoneAccountHandle);
+
+            ArrayList<Uri> hostAddresses = new ArrayList<>();
+
+            // add address from TelecomAccountRegistry
+            if (hostAddress != null) {
+                hostAddresses.add(hostAddress);
+            }
+
+            // add addresses from phone
+            if (imsPhone.getCurrentSubscriberUris() != null) {
+                hostAddresses.addAll(
+                        new ArrayList<>(Arrays.asList(imsPhone.getCurrentSubscriberUris())));
+            }
+
+            mConferenceHostAddress = new Uri[hostAddresses.size()];
+            mConferenceHostAddress = hostAddresses.toArray(mConferenceHostAddress);
         }
 
         mConferenceHost.addConnectionListener(mConferenceHostListener);
         mConferenceHost.addTelephonyConnectionListener(mTelephonyConnectionListener);
-        setState(mConferenceHost.getState());
+        setConnectionCapabilities(applyHostCapabilities(getConnectionCapabilities(),
+                mConferenceHost.getConnectionCapabilities(),
+                mConferenceHost.isCarrierVideoConferencingSupported()));
+        setConnectionProperties(applyHostProperties(getConnectionProperties(),
+                mConferenceHost.getConnectionProperties()));
 
+        setState(mConferenceHost.getState());
         updateStatusHints();
     }
 
@@ -560,6 +636,8 @@
             return;
         }
 
+        Log.i(this, "handleConferenceParticipantsUpdate: size=%d", participants.size());
+
         // Perform the update in a synchronized manner.  It is possible for the IMS framework to
         // trigger two onConferenceParticipantsChanged callbacks in quick succession.  If the first
         // update adds new participants, and the second does something like update the status of one
@@ -568,17 +646,18 @@
             boolean newParticipantsAdded = false;
             boolean oldParticipantsRemoved = false;
             ArrayList<ConferenceParticipant> newParticipants = new ArrayList<>(participants.size());
-            HashSet<Uri> participantUserEntities = new HashSet<>(participants.size());
+            HashSet<Pair<Uri,Uri>> participantUserEntities = new HashSet<>(participants.size());
 
             // Add any new participants and update existing.
             for (ConferenceParticipant participant : participants) {
-                Uri userEntity = participant.getHandle();
+                Pair<Uri,Uri> userEntity = new Pair<>(participant.getHandle(),
+                        participant.getEndpoint());
 
                 participantUserEntities.add(userEntity);
                 if (!mConferenceParticipantConnections.containsKey(userEntity)) {
                     // Some carriers will also include the conference host in the CEP.  We will
                     // filter that out here.
-                    if (!isParticipantHost(mConferenceHostAddress, userEntity)) {
+                    if (!isParticipantHost(mConferenceHostAddress, participant.getHandle())) {
                         createConferenceParticipantConnection(parent, participant);
                         newParticipants.add(participant);
                         newParticipantsAdded = true;
@@ -586,6 +665,8 @@
                 } else {
                     ConferenceParticipantConnection connection =
                             mConferenceParticipantConnections.get(userEntity);
+                    Log.i(this, "handleConferenceParticipantsUpdate: updateState, participant = %s",
+                            participant);
                     connection.updateState(participant.getState());
                 }
             }
@@ -595,17 +676,20 @@
                 // Set the state of the new participants at once and add to the conference
                 for (ConferenceParticipant newParticipant : newParticipants) {
                     ConferenceParticipantConnection connection =
-                            mConferenceParticipantConnections.get(newParticipant.getHandle());
+                            mConferenceParticipantConnections.get(new Pair<>(
+                                    newParticipant.getHandle(),
+                                    newParticipant.getEndpoint()));
                     connection.updateState(newParticipant.getState());
                 }
             }
 
             // Finally, remove any participants from the conference that no longer exist in the
             // conference event package data.
-            Iterator<Map.Entry<Uri, ConferenceParticipantConnection>> entryIterator =
+            Iterator<Map.Entry<Pair<Uri, Uri>, ConferenceParticipantConnection>> entryIterator =
                     mConferenceParticipantConnections.entrySet().iterator();
             while (entryIterator.hasNext()) {
-                Map.Entry<Uri, ConferenceParticipantConnection> entry = entryIterator.next();
+                Map.Entry<Pair<Uri, Uri>, ConferenceParticipantConnection> entry =
+                        entryIterator.next();
 
                 if (!participantUserEntities.contains(entry.getKey())) {
                     ConferenceParticipantConnection participant = entry.getValue();
@@ -646,15 +730,16 @@
         connection.addConnectionListener(mParticipantListener);
         connection.setConnectTimeMillis(parent.getConnectTimeMillis());
 
-        if (Log.VERBOSE) {
-            Log.v(this, "createConferenceParticipantConnection: %s", connection);
-        }
+        Log.i(this, "createConferenceParticipantConnection: participant=%s, connection=%s",
+                participant, connection);
 
         synchronized(mUpdateSyncRoot) {
-            mConferenceParticipantConnections.put(participant.getHandle(), connection);
+            mConferenceParticipantConnections.put(new Pair<>(participant.getHandle(),
+                    participant.getEndpoint()), connection);
         }
+
         mTelephonyConnectionService.addExistingConnection(mConferenceHostPhoneAccountHandle,
-                connection);
+                connection, this);
         addConnection(connection);
     }
 
@@ -664,7 +749,7 @@
      * @param participant The participant to remove.
      */
     private void removeConferenceParticipant(ConferenceParticipantConnection participant) {
-        Log.d(this, "removeConferenceParticipant: %s", participant);
+        Log.i(this, "removeConferenceParticipant: %s", participant);
 
         participant.removeConnectionListener(mParticipantListener);
         synchronized(mUpdateSyncRoot) {
@@ -699,20 +784,14 @@
      * Starts with a simple equality check.  However, the handles from a conference event package
      * will be a SIP uri, so we need to pull that apart to look for the participant's phone number.
      *
-     * @param hostHandle The handle of the connection hosting the conference.
+     * @param hostHandles The handle(s) of the connection hosting the conference.
      * @param handle The handle of the conference participant.
      * @return {@code true} if the host's handle matches the participant's handle, {@code false}
      *      otherwise.
      */
-    private boolean isParticipantHost(Uri hostHandle, Uri handle) {
-        // If host and participant handles are the same, bail early.
-        if (Objects.equals(hostHandle, handle)) {
-            Log.v(this, "isParticipantHost(Y) : uris equal");
-            return true;
-        }
-
-        // If there is no host handle or not participant handle, bail early.
-        if (hostHandle == null || handle == null) {
+    private boolean isParticipantHost(Uri[] hostHandles, Uri handle) {
+        // If there is no host handle or no participant handle, bail early.
+        if (hostHandles == null || hostHandles.length == 0 || handle == null) {
             Log.v(this, "isParticipantHost(N) : host or participant uri null");
             return false;
         }
@@ -739,18 +818,27 @@
         }
         number = numberParts[0];
 
-        // The host number will be a tel: uri.  Per RFC3966, the part after tel: is the phone
-        // number.
-        String hostNumber = hostHandle.getSchemeSpecificPart();
+        for (Uri hostHandle : hostHandles) {
+            if (hostHandle == null) {
+                continue;
+            }
+            // The host number will be a tel: uri.  Per RFC3966, the part after tel: is the phone
+            // number.
+            String hostNumber = hostHandle.getSchemeSpecificPart();
 
-        // Use a loose comparison of the phone numbers.  This ensures that numbers that differ by
-        // special characters are counted as equal.
-        // E.g. +16505551212 would be the same as 16505551212
-        boolean isHost = PhoneNumberUtils.compare(hostNumber, number);
+            // Use a loose comparison of the phone numbers.  This ensures that numbers that differ
+            // by special characters are counted as equal.
+            // E.g. +16505551212 would be the same as 16505551212
+            boolean isHost = PhoneNumberUtils.compare(hostNumber, number);
 
-        Log.v(this, "isParticipantHost(%s) : host: %s, participant %s", (isHost ? "Y" : "N"),
-                Log.pii(hostNumber), Log.pii(number));
-        return isHost;
+            Log.v(this, "isParticipantHost(%s) : host: %s, participant %s", (isHost ? "Y" : "N"),
+                    Log.pii(hostNumber), Log.pii(number));
+
+            if (isHost) {
+                return true;
+            }
+        }
+        return false;
     }
 
     /**
@@ -770,17 +858,37 @@
         com.android.internal.telephony.Connection originalConnection =
                 mConferenceHost.getOriginalConnection();
 
-        if (!(originalConnection instanceof ImsPhoneConnection)) {
-            if (Log.VERBOSE) {
-                Log.v(this,
-                        "Original connection for conference host is no longer an IMS connection; " +
-                                "new connection: %s", originalConnection);
+        if (originalConnection != null &&
+                originalConnection.getPhoneType() != PhoneConstants.PHONE_TYPE_IMS) {
+            Log.i(this,
+                    "handleOriginalConnectionChange : handover from IMS connection to " +
+                            "new connection: %s", originalConnection);
+
+            PhoneAccountHandle phoneAccountHandle = null;
+            if (mConferenceHost.getPhone() != null) {
+                if (mConferenceHost.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) {
+                    Phone imsPhone = mConferenceHost.getPhone();
+                    // The phone account handle for an ImsPhone is based on the default phone (ie
+                    // the base GSM or CDMA phone, not on the ImsPhone itself).
+                    phoneAccountHandle =
+                            PhoneUtils.makePstnPhoneAccountHandle(imsPhone.getDefaultPhone());
+                } else {
+                    // In the case of SRVCC, we still need a phone account, so use the top level
+                    // phone to create a phone account.
+                    phoneAccountHandle = PhoneUtils.makePstnPhoneAccountHandle(
+                            mConferenceHost.getPhone());
+                }
             }
 
-            PhoneAccountHandle phoneAccountHandle =
-                    PhoneUtils.makePstnPhoneAccountHandle(mConferenceHost.getPhone());
             if (mConferenceHost.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_GSM) {
-                GsmConnection c = new GsmConnection(originalConnection);
+                Log.i(this,"handleOriginalConnectionChange : SRVCC to GSM");
+                GsmConnection c = new GsmConnection(originalConnection, getTelecomCallId(),
+                        mConferenceHost.isOutgoingCall());
+                // This is a newly created conference connection as a result of SRVCC
+                c.setConferenceSupported(true);
+                c.addCapability(Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN);
+                c.setConnectionProperties(
+                        c.getConnectionProperties() | Connection.PROPERTY_IS_DOWNGRADED_CONFERENCE);
                 c.updateState();
                 // Copy the connect time from the conferenceHost
                 c.setConnectTimeMillis(mConferenceHost.getConnectTimeMillis());
@@ -836,6 +944,16 @@
         }
     }
 
+    /**
+     * Determines if the host of this conference is capable of video calling.
+     * @return {@code true} if video capable, {@code false} otherwise.
+     */
+    private boolean isVideoCapable() {
+        int capabilities = mConferenceHost.getConnectionCapabilities();
+        return can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL)
+                && can(capabilities, Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
+    }
+
     private void updateStatusHints() {
         if (mConferenceHost == null) {
             setStatusHints(null);
@@ -867,6 +985,8 @@
         StringBuilder sb = new StringBuilder();
         sb.append("[ImsConference objId:");
         sb.append(System.identityHashCode(this));
+        sb.append(" telecomCallID:");
+        sb.append(getTelecomCallId());
         sb.append(" state:");
         sb.append(Connection.stateToString(getState()));
         sb.append(" hostConnection:");
@@ -876,4 +996,65 @@
         sb.append("]");
         return sb.toString();
     }
+
+    private boolean canHoldImsCalls() {
+        PersistableBundle b = getCarrierConfig();
+        // Return true if the CarrierConfig is unavailable
+        return b == null || b.getBoolean(CarrierConfigManager.KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL);
+    }
+
+    private PersistableBundle getCarrierConfig() {
+        if (mConferenceHost == null) {
+            return null;
+        }
+
+        Phone phone = mConferenceHost.getPhone();
+        if (phone == null) {
+            return null;
+        }
+        return PhoneGlobals.getInstance().getCarrierConfigForSubId(phone.getSubId());
+    }
+
+    /**
+     * @return {@code true} if the carrier associated with the conference requires that the maximum
+     *      size of the conference is enforced, {@code false} otherwise.
+     */
+    public boolean isMaximumConferenceSizeEnforced() {
+        PersistableBundle b = getCarrierConfig();
+        // Return false if the CarrierConfig is unavailable
+        return b != null && b.getBoolean(
+                CarrierConfigManager.KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL);
+    }
+
+    /**
+     * @return The maximum size of a conference call where
+     * {@link #isMaximumConferenceSizeEnforced()} is true.
+     */
+    public int getMaximumConferenceSize() {
+        PersistableBundle b = getCarrierConfig();
+
+        // If there is no carrier config its really a problem, but we'll still define a sane limit
+        // of 5 so that we can still make a conference.
+        if (b == null) {
+            Log.w(this, "getMaximumConferenceSize - failed to get conference size");
+            return 5;
+        }
+        return b.getInt(CarrierConfigManager.KEY_IMS_CONFERENCE_SIZE_LIMIT_INT);
+    }
+
+    /**
+     * @return The number of participants in the conference.
+     */
+    public int getNumberOfParticipants() {
+        return mConferenceParticipantConnections.size();
+    }
+
+    /**
+     * @return {@code True} if the carrier enforces a maximum conference size, and the number of
+     *      participants in the conference has reached the limit, {@code false} otherwise.
+     */
+    public boolean isFullConference() {
+        return isMaximumConferenceSizeEnforced()
+                && getNumberOfParticipants() >= getMaximumConferenceSize();
+    }
 }
diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index 7c45657..501808f 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -16,18 +16,24 @@
 
 package com.android.services.telephony;
 
-import com.android.internal.telephony.imsphone.ImsPhoneConnection;
+import com.android.ims.ImsReasonInfo;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.phone.PhoneUtils;
 
 import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.ConnectionService;
 import android.telecom.DisconnectCause;
 import android.telecom.Conferenceable;
+import android.telecom.PhoneAccountHandle;
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Manages conferences for IMS connections.
@@ -73,14 +79,20 @@
         @Override
         public void onConferenceStarted() {
             Log.v(this, "onConferenceStarted");
-            recalculateConference();
+            recalculate();
+        }
+
+        @Override
+        public void onConferenceSupportedChanged(Connection c, boolean isConferenceSupported) {
+            Log.v(this, "onConferenceSupportedChanged");
+            recalculate();
         }
     };
 
     /**
      * The current {@link ConnectionService}.
      */
-    private final TelephonyConnectionService mConnectionService;
+    private final TelephonyConnectionServiceProxy mConnectionService;
 
     /**
      * List of known {@link TelephonyConnection}s.
@@ -93,13 +105,17 @@
      */
     private final ArrayList<ImsConference> mImsConferences = new ArrayList<>(1);
 
+    private TelecomAccountRegistry mTelecomAccountRegistry;
+
     /**
      * Creates a new instance of the Ims conference controller.
      *
      * @param connectionService The current connection service.
      */
-    public ImsConferenceController(TelephonyConnectionService connectionService) {
+    public ImsConferenceController(TelecomAccountRegistry telecomAccountRegistry,
+                                   TelephonyConnectionServiceProxy connectionService) {
         mConnectionService = connectionService;
+        mTelecomAccountRegistry = telecomAccountRegistry;
     }
 
     /**
@@ -108,6 +124,19 @@
      * @param connection
      */
     void add(TelephonyConnection connection) {
+        // DO NOT add external calls; we don't want to consider them as a potential conference
+        // member.
+        if ((connection.getConnectionProperties() & Connection.PROPERTY_IS_EXTERNAL_CALL) ==
+                Connection.PROPERTY_IS_EXTERNAL_CALL) {
+            return;
+        }
+
+        if (mTelephonyConnections.contains(connection)) {
+            // Adding a duplicate realistically shouldn't happen.
+            Log.w(this, "add - connection already tracked; connection=%s", connection);
+            return;
+        }
+
         // Note: Wrap in Log.VERBOSE to avoid calling connection.toString if we are not going to be
         // outputting the value.
         if (Log.VERBOSE) {
@@ -125,10 +154,24 @@
      * @param connection
      */
     void remove(Connection connection) {
+        // External calls are not part of the conference controller, so don't remove them.
+        if ((connection.getConnectionProperties() & Connection.PROPERTY_IS_EXTERNAL_CALL) ==
+                Connection.PROPERTY_IS_EXTERNAL_CALL) {
+            return;
+        }
+
+        if (!mTelephonyConnections.contains(connection)) {
+            // Debug only since TelephonyConnectionService tries to clean up the connections tracked
+            // when the original connection changes.  It does this proactively.
+            Log.d(this, "remove - connection not tracked; connection=%s", connection);
+            return;
+        }
+
         if (Log.VERBOSE) {
             Log.v(this, "remove connection: %s", connection);
         }
 
+        connection.removeConnectionListener(mConnectionListener);
         mTelephonyConnections.remove(connection);
         recalculateConferenceable();
     }
@@ -147,8 +190,9 @@
      */
     private void recalculateConferenceable() {
         Log.v(this, "recalculateConferenceable : %d", mTelephonyConnections.size());
-        List<Conferenceable> activeConnections = new ArrayList<>(mTelephonyConnections.size());
-        List<Conferenceable> backgroundConnections = new ArrayList<>(mTelephonyConnections.size());
+        HashSet<Conferenceable> conferenceableSet = new HashSet<>(mTelephonyConnections.size() +
+                mImsConferences.size());
+        HashSet<Conferenceable> conferenceParticipantsSet = new HashSet<>();
 
         // Loop through and collect all calls which are active or holding
         for (TelephonyConnection connection : mTelephonyConnections) {
@@ -169,22 +213,23 @@
             // If this connection does not support being in a conference call, then it is not
             // conferenceable with any other connection.
             if (!connection.isConferenceSupported()) {
+                connection.setConferenceables(Collections.<Conferenceable>emptyList());
                 continue;
             }
 
             switch (connection.getState()) {
                 case Connection.STATE_ACTIVE:
-                    activeConnections.add(connection);
-                    continue;
+                    // fall through
                 case Connection.STATE_HOLDING:
-                    backgroundConnections.add(connection);
+                    conferenceableSet.add(connection);
                     continue;
                 default:
                     break;
             }
-            connection.setConferenceableConnections(Collections.<Connection>emptyList());
+            // This connection is not active or holding, so clear all conferencable connections
+            connection.setConferenceables(Collections.<Conferenceable>emptyList());
         }
-
+        // Also loop through all active conferences and collect the ones that are ACTIVE or HOLDING.
         for (ImsConference conference : mImsConferences) {
             if (Log.DEBUG) {
                 Log.d(this, "recalc - %s %s", conference.getState(), conference);
@@ -199,61 +244,56 @@
 
             switch (conference.getState()) {
                 case Connection.STATE_ACTIVE:
-                    activeConnections.add(conference);
-                    continue;
+                    //fall through
                 case Connection.STATE_HOLDING:
-                    backgroundConnections.add(conference);
+                    if (!conference.isFullConference()) {
+                        conferenceParticipantsSet.addAll(conference.getConnections());
+                        conferenceableSet.add(conference);
+                    }
                     continue;
                 default:
                     break;
             }
         }
 
-        Log.v(this, "active: %d, holding: %d", activeConnections.size(),
-                backgroundConnections.size());
+        Log.v(this, "conferenceableSet size: " + conferenceableSet.size());
 
-        // Go through all the active connections and set the background connections as
-        // conferenceable.
-        for (Conferenceable conferenceable : activeConnections) {
-            if (conferenceable instanceof Connection) {
-                Connection connection = (Connection) conferenceable;
-                connection.setConferenceables(backgroundConnections);
-            }
-        }
+        for (Conferenceable c : conferenceableSet) {
+            if (c instanceof Connection) {
+                // Remove this connection from the Set and add all others
+                List<Conferenceable> conferenceables = conferenceableSet
+                        .stream()
+                        .filter(conferenceable -> c != conferenceable)
+                        .collect(Collectors.toList());
+                // TODO: Remove this once RemoteConnection#setConferenceableConnections is fixed.
+                // Add all conference participant connections as conferenceable with a standalone
+                // Connection.  We need to do this to ensure that RemoteConnections work properly.
+                // At the current time, a RemoteConnection will not be conferenceable with a
+                // Conference, so we need to add its children to ensure the user can merge the call
+                // into the conference.
+                // We should add support for RemoteConnection#setConferenceables, which accepts a
+                // list of remote conferences and connections in the future.
+                conferenceables.addAll(conferenceParticipantsSet);
 
-        // Go through all the background connections and set the active connections as
-        // conferenceable.
-        for (Conferenceable conferenceable : backgroundConnections) {
-            if (conferenceable instanceof Connection) {
-                Connection connection = (Connection) conferenceable;
-                connection.setConferenceables(activeConnections);
-            }
+                ((Connection) c).setConferenceables(conferenceables);
+            } else if (c instanceof ImsConference) {
+                ImsConference imsConference = (ImsConference) c;
 
-        }
-
-        // Set the conference as conferenceable with all the connections
-        for (ImsConference conference : mImsConferences) {
-            // If this conference is not being hosted on the current device, we cannot conference it
-            // with any other connections.
-            if (!conference.isConferenceHost()) {
-                if (Log.VERBOSE) {
-                    Log.v(this, "skipping conference (not hosted on this device): %s",
-                            conference);
+                // If the conference is full, don't allow anything to be conferenced with it.
+                if (imsConference.isFullConference()) {
+                    imsConference.setConferenceableConnections(Collections.<Connection>emptyList());
                 }
-                continue;
-            }
 
-            List<Connection> nonConferencedConnections =
-                new ArrayList<>(mTelephonyConnections.size());
-            for (TelephonyConnection c : mTelephonyConnections) {
-                if (c.getConference() == null && c.isConferenceSupported()) {
-                    nonConferencedConnections.add(c);
-                }
+                // Remove all conferences from the set, since we can not conference a conference
+                // to another conference.
+                List<Connection> connections = conferenceableSet
+                        .stream()
+                        .filter(conferenceable -> conferenceable instanceof Connection)
+                        .map(conferenceable -> (Connection) conferenceable)
+                        .collect(Collectors.toList());
+                // Conference equivalent to setConferenceables that only accepts Connections
+                imsConference.setConferenceableConnections(connections);
             }
-            if (Log.VERBOSE) {
-                Log.v(this, "conference conferenceable: %s", nonConferencedConnections);
-            }
-            conference.setConferenceableConnections(nonConferencedConnections);
         }
     }
 
@@ -270,12 +310,9 @@
         TelephonyConnection telephonyConnection = (TelephonyConnection) connection;
         com.android.internal.telephony.Connection originalConnection =
                 telephonyConnection.getOriginalConnection();
-        if (!(originalConnection instanceof ImsPhoneConnection)) {
-            return false;
-        }
 
-        ImsPhoneConnection imsPhoneConnection = (ImsPhoneConnection) originalConnection;
-        return imsPhoneConnection.isMultiparty() && !imsPhoneConnection.isConferenceHost();
+        return originalConnection != null && originalConnection.isMultiparty() &&
+                originalConnection.isMemberOfPeerConference();
     }
 
     /**
@@ -287,7 +324,6 @@
         Iterator<TelephonyConnection> it = mTelephonyConnections.iterator();
         while (it.hasNext()) {
             TelephonyConnection connection = it.next();
-
             if (connection.isImsConnection() && connection.getOriginalConnection() != null &&
                     connection.getOriginalConnection().isMultiparty()) {
 
@@ -320,20 +356,36 @@
         // This is necessary since the Connection Service does not support removing a connection
         // from Telecom.  Instead we create a new instance and remove the old one from telecom.
         TelephonyConnection conferenceHostConnection = connection.cloneConnection();
+        conferenceHostConnection.setVideoPauseSupported(connection.getVideoPauseSupported());
 
-        // Create conference and add to telecom
-        ImsConference conference = new ImsConference(mConnectionService, conferenceHostConnection);
+        PhoneAccountHandle phoneAccountHandle = null;
+
+        // Attempt to determine the phone account associated with the conference host connection.
+        if (connection.getPhone() != null &&
+                connection.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_IMS) {
+            Phone imsPhone = connection.getPhone();
+            // The phone account handle for an ImsPhone is based on the default phone (ie the
+            // base GSM or CDMA phone, not on the ImsPhone itself).
+            phoneAccountHandle =
+                    PhoneUtils.makePstnPhoneAccountHandle(imsPhone.getDefaultPhone());
+        }
+
+        ImsConference conference = new ImsConference(mTelecomAccountRegistry, mConnectionService,
+                conferenceHostConnection, phoneAccountHandle);
         conference.setState(conferenceHostConnection.getState());
         conference.addListener(mConferenceListener);
         conference.updateConferenceParticipantsAfterCreation();
         mConnectionService.addConference(conference);
+        conferenceHostConnection.setTelecomCallId(conference.getTelecomCallId());
 
         // Cleanup TelephonyConnection which backed the original connection and remove from telecom.
         // Use the "Other" disconnect cause to ensure the call is logged to the call log but the
         // disconnect tone is not played.
         connection.removeConnectionListener(mConnectionListener);
         connection.clearOriginalConnection();
-        connection.setDisconnected(new DisconnectCause(DisconnectCause.OTHER));
+        connection.setDisconnected(new DisconnectCause(DisconnectCause.OTHER,
+                android.telephony.DisconnectCause.toString(
+                        android.telephony.DisconnectCause.IMS_MERGED_SUCCESSFULLY)));
         connection.destroy();
         mImsConferences.add(conference);
     }
diff --git a/src/com/android/services/telephony/Log.java b/src/com/android/services/telephony/Log.java
index 30aa367..a56e8b1 100644
--- a/src/com/android/services/telephony/Log.java
+++ b/src/com/android/services/telephony/Log.java
@@ -16,10 +16,7 @@
 
 package com.android.services.telephony;
 
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.util.IllegalFormatException;
-import java.util.Locale;
+import android.content.Context;
 
 /**
  * Manages logging for the entire module.
@@ -42,138 +39,73 @@
         return FORCE_LOGGING || android.util.Log.isLoggable(TAG, level);
     }
 
+    public static void initLogging(Context context) {
+        // Register Telephony with the Telecom Logger.
+        android.telecom.Log.setTag(TAG);
+        android.telecom.Log.setSessionContext(context);
+        android.telecom.Log.initMd5Sum();
+    }
+
+    // Relay log messages to Telecom
+    // TODO: Redo namespace of Telephony to use these methods directly.
+
     public static void d(String prefix, String format, Object... args) {
-        if (DEBUG) {
-            android.util.Log.d(TAG, buildMessage(prefix, format, args));
-        }
+        android.telecom.Log.d(prefix, format, args);
     }
 
     public static void d(Object objectPrefix, String format, Object... args) {
-        if (DEBUG) {
-            android.util.Log.d(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args));
-        }
+        android.telecom.Log.d(objectPrefix, format, args);
     }
 
     public static void i(String prefix, String format, Object... args) {
-        if (INFO) {
-            android.util.Log.i(TAG, buildMessage(prefix, format, args));
-        }
+        android.telecom.Log.i(prefix, format, args);
     }
 
     public static void i(Object objectPrefix, String format, Object... args) {
-        if (INFO) {
-            android.util.Log.i(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args));
-        }
+        android.telecom.Log.i(objectPrefix, format, args);
     }
 
     public static void v(String prefix, String format, Object... args) {
-        if (VERBOSE) {
-            android.util.Log.v(TAG, buildMessage(prefix, format, args));
-        }
+        android.telecom.Log.v(prefix, format, args);
     }
 
     public static void v(Object objectPrefix, String format, Object... args) {
-        if (VERBOSE) {
-            android.util.Log.v(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args));
-        }
+        android.telecom.Log.v(objectPrefix, format, args);
     }
 
     public static void w(String prefix, String format, Object... args) {
-        if (WARN) {
-            android.util.Log.w(TAG, buildMessage(prefix, format, args));
-        }
+        android.telecom.Log.w(prefix, format, args);
     }
 
     public static void w(Object objectPrefix, String format, Object... args) {
-        if (WARN) {
-            android.util.Log.w(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args));
-        }
+        android.telecom.Log.w(objectPrefix, format, args);
     }
 
     public static void e(String prefix, Throwable tr, String format, Object... args) {
-        if (ERROR) {
-            android.util.Log.e(TAG, buildMessage(prefix, format, args), tr);
-        }
+        android.telecom.Log.e(prefix, tr, format, args);
     }
 
     public static void e(Object objectPrefix, Throwable tr, String format, Object... args) {
-        if (ERROR) {
-            android.util.Log.e(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args),
-                    tr);
-        }
+        android.telecom.Log.e(objectPrefix, tr, format, args);
     }
 
     public static void wtf(String prefix, Throwable tr, String format, Object... args) {
-        android.util.Log.wtf(TAG, buildMessage(prefix, format, args), tr);
+        android.telecom.Log.wtf(prefix, tr, format, args);
     }
 
     public static void wtf(Object objectPrefix, Throwable tr, String format, Object... args) {
-        android.util.Log.wtf(TAG, buildMessage(getPrefixFromObject(objectPrefix), format, args),
-                tr);
+        android.telecom.Log.wtf(objectPrefix, tr, format, args);
     }
 
     public static void wtf(String prefix, String format, Object... args) {
-        String msg = buildMessage(prefix, format, args);
-        android.util.Log.wtf(TAG, msg, new IllegalStateException(msg));
+        android.telecom.Log.wtf(prefix, format, args);
     }
 
     public static void wtf(Object objectPrefix, String format, Object... args) {
-        String msg = buildMessage(getPrefixFromObject(objectPrefix), format, args);
-        android.util.Log.wtf(TAG, msg, new IllegalStateException(msg));
+        android.telecom.Log.wtf(objectPrefix, format, args);
     }
 
-    /**
-     * Redact personally identifiable information for production users.
-     * If we are running in verbose mode, return the original string, otherwise
-     * return a SHA-1 hash of the input string.
-     */
     public static String pii(Object pii) {
-        if (pii == null || VERBOSE) {
-            return String.valueOf(pii);
-        }
-        return "[" + secureHash(String.valueOf(pii).getBytes()) + "]";
-    }
-
-    private static String secureHash(byte[] input) {
-        MessageDigest messageDigest;
-        try {
-            messageDigest = MessageDigest.getInstance("SHA-1");
-        } catch (NoSuchAlgorithmException e) {
-            return null;
-        }
-        messageDigest.update(input);
-        byte[] result = messageDigest.digest();
-        return encodeHex(result);
-    }
-
-    private static String encodeHex(byte[] bytes) {
-        StringBuffer hex = new StringBuffer(bytes.length * 2);
-
-        for (int i = 0; i < bytes.length; i++) {
-            int byteIntValue = bytes[i] & 0xff;
-            if (byteIntValue < 0x10) {
-                hex.append("0");
-            }
-            hex.append(Integer.toString(byteIntValue, 16));
-        }
-
-        return hex.toString();
-    }
-
-    private static String getPrefixFromObject(Object obj) {
-        return obj == null ? "<null>" : obj.getClass().getSimpleName();
-    }
-
-    private static String buildMessage(String prefix, String format, Object... args) {
-        String msg;
-        try {
-            msg = (args == null || args.length == 0) ? format
-                    : String.format(Locale.US, format, args);
-        } catch (IllegalFormatException ife) {
-            wtf("Log", ife, "IllegalFormatException: formatString='%s' numArgs=%d", format,
-                    args.length);
-            msg = format + " (An error occurred while formatting the message.)";
-        }
-        return String.format(Locale.US, "%s: %s", prefix, msg);
+        return android.telecom.Log.pii(pii);
     }
 }
diff --git a/src/com/android/services/telephony/PstnIncomingCallNotifier.java b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
index 9e035b5..c0ccc3a 100644
--- a/src/com/android/services/telephony/PstnIncomingCallNotifier.java
+++ b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
@@ -16,27 +16,26 @@
 
 package com.android.services.telephony;
 
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.os.SystemClock;
 import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.Call;
+import com.android.internal.telephony.CallStateException;
 import com.android.internal.telephony.Connection;
+import com.android.internal.telephony.GsmCdmaPhone;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneProxy;
-import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.telephony.cdma.CdmaCallWaitingNotification;
+import com.android.internal.telephony.imsphone.ImsExternalCallTracker;
+import com.android.internal.telephony.imsphone.ImsExternalConnection;
 import com.android.phone.PhoneUtils;
 
 import com.google.common.base.Preconditions;
@@ -53,19 +52,11 @@
     private static final int EVENT_CDMA_CALL_WAITING = 101;
     private static final int EVENT_UNKNOWN_CONNECTION = 102;
 
-    /** The phone proxy object to listen to. */
-    private final PhoneProxy mPhoneProxy;
+    /** The phone object to listen to. */
+    private final Phone mPhone;
 
     /**
-     * The base phone implementation behind phone proxy. The underlying phone implementation can
-     * change underneath when the radio technology changes. We listen for these events and update
-     * the base phone in this variable. We save it so that when the change happens, we can
-     * unregister from the events we were listening to.
-     */
-    private Phone mPhoneBase;
-
-    /**
-     * Used to listen to events from {@link #mPhoneBase}.
+     * Used to listen to events from {@link #mPhone}.
      */
     private final Handler mHandler = new Handler() {
         @Override
@@ -87,77 +78,40 @@
     };
 
     /**
-     * Receiver to listen for radio technology change events.
-     */
-    private final BroadcastReceiver mRATReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED.equals(action)) {
-                String newPhone = intent.getStringExtra(PhoneConstants.PHONE_NAME_KEY);
-                Log.d(this, "Radio technology switched. Now %s is active.", newPhone);
-
-                registerForNotifications();
-            }
-        }
-    };
-
-    /**
      * Persists the specified parameters and starts listening to phone events.
      *
-     * @param phoneProxy The phone object for listening to incoming calls.
+     * @param phone The phone object for listening to incoming calls.
      */
-    PstnIncomingCallNotifier(PhoneProxy phoneProxy) {
-        Preconditions.checkNotNull(phoneProxy);
+    PstnIncomingCallNotifier(Phone phone) {
+        Preconditions.checkNotNull(phone);
 
-        mPhoneProxy = phoneProxy;
+        mPhone = phone;
 
         registerForNotifications();
-
-        IntentFilter intentFilter =
-                new IntentFilter(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
-        mPhoneProxy.getContext().registerReceiver(mRATReceiver, intentFilter);
     }
 
     void teardown() {
         unregisterForNotifications();
-        mPhoneProxy.getContext().unregisterReceiver(mRATReceiver);
     }
 
     /**
      * Register for notifications from the base phone.
-     * TODO: We should only need to interact with the phoneproxy directly. However,
-     * since the phoneproxy only interacts directly with CallManager we either listen to callmanager
-     * or we have to poke into the proxy like this.  Neither is desirable. It would be better if
-     * this class and callManager could register generically with the phone proxy instead and get
-     * radio techonology changes directly.  Or better yet, just register for the notifications
-     * directly with phone proxy and never worry about the technology changes. This requires a
-     * change in opt/telephony code.
      */
     private void registerForNotifications() {
-        Phone newPhone = mPhoneProxy.getActivePhone();
-        if (newPhone != mPhoneBase) {
-            unregisterForNotifications();
-
-            if (newPhone != null) {
-                Log.i(this, "Registering: %s", newPhone);
-                mPhoneBase = newPhone;
-                mPhoneBase.registerForNewRingingConnection(
-                        mHandler, EVENT_NEW_RINGING_CONNECTION, null);
-                mPhoneBase.registerForCallWaiting(
-                        mHandler, EVENT_CDMA_CALL_WAITING, null);
-                mPhoneBase.registerForUnknownConnection(mHandler, EVENT_UNKNOWN_CONNECTION,
-                        null);
-            }
+        if (mPhone != null) {
+            Log.i(this, "Registering: %s", mPhone);
+            mPhone.registerForNewRingingConnection(mHandler, EVENT_NEW_RINGING_CONNECTION, null);
+            mPhone.registerForCallWaiting(mHandler, EVENT_CDMA_CALL_WAITING, null);
+            mPhone.registerForUnknownConnection(mHandler, EVENT_UNKNOWN_CONNECTION, null);
         }
     }
 
     private void unregisterForNotifications() {
-        if (mPhoneBase != null) {
-            Log.i(this, "Unregistering: %s", mPhoneBase);
-            mPhoneBase.unregisterForNewRingingConnection(mHandler);
-            mPhoneBase.unregisterForCallWaiting(mHandler);
-            mPhoneBase.unregisterForUnknownConnection(mHandler);
+        if (mPhone != null) {
+            Log.i(this, "Unregistering: %s", mPhone);
+            mPhone.unregisterForNewRingingConnection(mHandler);
+            mPhone.unregisterForCallWaiting(mHandler);
+            mPhone.unregisterForUnknownConnection(mHandler);
         }
     }
 
@@ -182,13 +136,29 @@
     private void handleCdmaCallWaiting(AsyncResult asyncResult) {
         Log.d(this, "handleCdmaCallWaiting");
         CdmaCallWaitingNotification ccwi = (CdmaCallWaitingNotification) asyncResult.result;
-        Call call = mPhoneBase.getRingingCall();
+        Call call = mPhone.getRingingCall();
         if (call.getState() == Call.State.WAITING) {
             Connection connection = call.getLatestConnection();
             if (connection != null) {
                 String number = connection.getAddress();
-                if (number != null && Objects.equals(number, ccwi.number)) {
+                int presentation = connection.getNumberPresentation();
+
+                if (presentation != PhoneConstants.PRESENTATION_ALLOWED
+                        && presentation == ccwi.numberPresentation) {
+                    // Presentation of number not allowed, but the presentation of the Connection
+                    // and the call waiting presentation match.
+                    Log.i(this, "handleCdmaCallWaiting: inform telecom of waiting call; "
+                                    + "presentation = %d", presentation);
                     sendIncomingCallIntent(connection);
+                } else if (!TextUtils.isEmpty(number) && Objects.equals(number, ccwi.number)) {
+                    // Presentation of the number is allowed, so we ensure the number matches the
+                    // one in the call waiting information.
+                    Log.i(this, "handleCdmaCallWaiting: inform telecom of waiting call; "
+                            + "number = %s", Log.pii(number));
+                    sendIncomingCallIntent(connection);
+                } else {
+                    Log.w(this, "handleCdmaCallWaiting: presentation or number do not match, not"
+                            + " informing telecom of call: %s", ccwi);
                 }
             }
         }
@@ -223,15 +193,36 @@
 
         if (!maybeSwapAnyWithUnknownConnection(connection)) {
             Log.i(this, "determined new connection is: %s", connection);
-            Bundle extras = null;
+            Bundle extras = new Bundle();
             if (connection.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED &&
                     !TextUtils.isEmpty(connection.getAddress())) {
-                extras = new Bundle();
                 Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, connection.getAddress(), null);
                 extras.putParcelable(TelecomManager.EXTRA_UNKNOWN_CALL_HANDLE, uri);
             }
-            TelecomManager.from(mPhoneProxy.getContext()).addNewUnknownCall(
-                    PhoneUtils.makePstnPhoneAccountHandle(mPhoneProxy), extras);
+            // ImsExternalConnections are keyed by a unique mCallId; include this as an extra on
+            // the call to addNewUknownCall in Telecom.  This way when the request comes back to the
+            // TelephonyConnectionService, we will be able to determine which unknown connection is
+            // being added.
+            if (connection instanceof ImsExternalConnection) {
+                ImsExternalConnection externalConnection = (ImsExternalConnection) connection;
+                extras.putInt(ImsExternalCallTracker.EXTRA_IMS_EXTERNAL_CALL_ID,
+                        externalConnection.getCallId());
+            }
+
+            // Specifies the time the call was added. This is used by the dialer for analytics.
+            extras.putLong(TelecomManager.EXTRA_CALL_CREATED_TIME_MILLIS,
+                    SystemClock.elapsedRealtime());
+
+            PhoneAccountHandle handle = findCorrectPhoneAccountHandle();
+            if (handle == null) {
+                try {
+                    connection.hangup();
+                } catch (CallStateException e) {
+                    // connection already disconnected. Do nothing
+                }
+            } else {
+                TelecomManager.from(mPhone.getContext()).addNewUnknownCall(handle, extras);
+            }
         } else {
             Log.i(this, "swapped an old connection, new one is: %s", connection);
         }
@@ -241,15 +232,55 @@
      * Sends the incoming call intent to telecom.
      */
     private void sendIncomingCallIntent(Connection connection) {
-        Bundle extras = null;
+        Bundle extras = new Bundle();
         if (connection.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED &&
                 !TextUtils.isEmpty(connection.getAddress())) {
-            extras = new Bundle();
             Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, connection.getAddress(), null);
             extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, uri);
         }
-        TelecomManager.from(mPhoneProxy.getContext()).addNewIncomingCall(
-                PhoneUtils.makePstnPhoneAccountHandle(mPhoneProxy), extras);
+
+        // Specifies the time the call was added. This is used by the dialer for analytics.
+        extras.putLong(TelecomManager.EXTRA_CALL_CREATED_TIME_MILLIS,
+                SystemClock.elapsedRealtime());
+
+        PhoneAccountHandle handle = findCorrectPhoneAccountHandle();
+        if (handle == null) {
+            try {
+                connection.hangup();
+            } catch (CallStateException e) {
+                // connection already disconnected. Do nothing
+            }
+        } else {
+            TelecomManager.from(mPhone.getContext()).addNewIncomingCall(handle, extras);
+        }
+    }
+
+    /**
+     * Returns the PhoneAccount associated with this {@code PstnIncomingCallNotifier}'s phone. On a
+     * device with No SIM or in airplane mode, it can return an Emergency-only PhoneAccount. If no
+     * PhoneAccount is registered with telecom, return null.
+     * @return A valid PhoneAccountHandle that is registered to Telecom or null if there is none
+     * registered.
+     */
+    private PhoneAccountHandle findCorrectPhoneAccountHandle() {
+        TelecomAccountRegistry telecomAccountRegistry = TelecomAccountRegistry.getInstance(null);
+        // Check to see if a the SIM PhoneAccountHandle Exists for the Call.
+        PhoneAccountHandle handle = PhoneUtils.makePstnPhoneAccountHandle(mPhone);
+        if (telecomAccountRegistry.hasAccountEntryForPhoneAccount(handle)) {
+            return handle;
+        }
+        // The PhoneAccountHandle does not match any PhoneAccount registered in Telecom.
+        // This is only known to happen if there is no SIM card in the device and the device
+        // receives an MT call while in ECM. Use the Emergency PhoneAccount to receive the account
+        // if it exists.
+        PhoneAccountHandle emergencyHandle =
+                PhoneUtils.makePstnPhoneAccountHandleWithPrefix(mPhone, "", true);
+        if(telecomAccountRegistry.hasAccountEntryForPhoneAccount(emergencyHandle)) {
+            Log.i(this, "Receiving MT call in ECM. Using Emergency PhoneAccount Instead.");
+            return emergencyHandle;
+        }
+        Log.w(this, "PhoneAccount not found.");
+        return null;
     }
 
     /**
@@ -289,7 +320,35 @@
         Connection original = telephonyConnection.getOriginalConnection();
         if (original != null && !original.isIncoming()
                 && Objects.equals(original.getAddress(), unknown.getAddress())) {
+            // If the new unknown connection is an external connection, don't swap one with an
+            // actual connection.  This means a call got pulled away.  We want the actual connection
+            // to disconnect.
+            if (unknown instanceof ImsExternalConnection
+                    && !(telephonyConnection.getOriginalConnection()
+                            instanceof ImsExternalConnection)) {
+                Log.v(this, "maybeSwapWithUnknownConnection - not swapping regular connection " +
+                        "with external connection.");
+                return false;
+            }
+
             telephonyConnection.setOriginalConnection(unknown);
+
+            // Do not call hang up if the original connection is an ImsExternalConnection, it is
+            // not supported.
+            if (original instanceof ImsExternalConnection) {
+                return true;
+            }
+            // If the connection we're replacing was a GSM or CDMA connection, call upon the call
+            // tracker to perform cleanup of calls.  This ensures that we don't end up with a
+            // call stuck in the call tracker preventing other calls from being placed.
+            if (original.getCall() != null && original.getCall().getPhone() != null &&
+                    original.getCall().getPhone() instanceof GsmCdmaPhone) {
+
+                GsmCdmaPhone phone = (GsmCdmaPhone) original.getCall().getPhone();
+                phone.getCallTracker().cleanupCalls();
+                Log.i(this, "maybeSwapWithUnknownConnection - Invoking call tracker cleanup "
+                        + "for connection: " + original);
+            }
             return true;
         }
         return false;
diff --git a/src/com/android/services/telephony/PstnPhoneCapabilitiesNotifier.java b/src/com/android/services/telephony/PstnPhoneCapabilitiesNotifier.java
index 7a2adf1..e557919 100644
--- a/src/com/android/services/telephony/PstnPhoneCapabilitiesNotifier.java
+++ b/src/com/android/services/telephony/PstnPhoneCapabilitiesNotifier.java
@@ -16,10 +16,6 @@
 
 package com.android.services.telephony;
 
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
@@ -28,9 +24,6 @@
 import android.telecom.TelecomManager;
 
 import com.android.internal.telephony.Phone;
-import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.PhoneProxy;
-import com.android.internal.telephony.TelephonyIntents;
 import com.android.internal.util.Preconditions;
 import com.android.phone.PhoneUtils;
 
@@ -48,9 +41,8 @@
         public void onVideoCapabilitiesChanged(boolean isVideoCapable);
     }
 
-    private final PhoneProxy mPhoneProxy;
+    private final Phone mPhone;
     private final Listener mListener;
-    private Phone mPhoneBase;
 
     private final Handler mHandler = new Handler() {
         @Override
@@ -65,79 +57,43 @@
         }
     };
 
-    private final BroadcastReceiver mRatReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED.equals(action)) {
-                String newPhone = intent.getStringExtra(PhoneConstants.PHONE_NAME_KEY);
-                Log.d(this, "Radio technology switched. Now %s is active.", newPhone);
-
-                registerForNotifications();
-            }
-        }
-    };
-
     /*package*/
-    PstnPhoneCapabilitiesNotifier(PhoneProxy phoneProxy, Listener listener) {
-        Preconditions.checkNotNull(phoneProxy);
+    PstnPhoneCapabilitiesNotifier(Phone phone, Listener listener) {
+        Preconditions.checkNotNull(phone);
 
-        mPhoneProxy = phoneProxy;
+        mPhone = phone;
         mListener = listener;
 
         registerForNotifications();
-
-        IntentFilter intentFilter =
-                new IntentFilter(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
-        mPhoneProxy.getContext().registerReceiver(mRatReceiver, intentFilter);
     }
 
     /*package*/
     void teardown() {
         unregisterForNotifications();
-        mPhoneProxy.getContext().unregisterReceiver(mRatReceiver);
     }
 
     private void registerForNotifications() {
-        Phone newPhone = mPhoneProxy.getActivePhone();
-        if (newPhone != mPhoneBase) {
-            unregisterForNotifications();
-
-            if (newPhone != null) {
-                Log.d(this, "Registering: " + newPhone);
-                mPhoneBase = newPhone;
-                mPhoneBase.registerForVideoCapabilityChanged(
-                        mHandler, EVENT_VIDEO_CAPABILITIES_CHANGED, null);
-            }
+        if (mPhone != null) {
+            Log.d(this, "Registering: " + mPhone);
+            mPhone.registerForVideoCapabilityChanged(mHandler, EVENT_VIDEO_CAPABILITIES_CHANGED,
+                    null);
         }
     }
 
     private void unregisterForNotifications() {
-        if (mPhoneBase != null) {
-            Log.d(this, "Unregistering: " + mPhoneBase);
-            mPhoneBase.unregisterForVideoCapabilityChanged(mHandler);
+        if (mPhone != null) {
+            Log.d(this, "Unregistering: " + mPhone);
+            mPhone.unregisterForVideoCapabilityChanged(mHandler);
         }
     }
 
     private void handleVideoCapabilitesChanged(AsyncResult ar) {
         try {
             boolean isVideoCapable = (Boolean) ar.result;
-            Log.d(this, "handleVideoCapabilitesChanged. Video capability - " + isVideoCapable);
-            PhoneAccountHandle accountHandle =
-                    PhoneUtils.makePstnPhoneAccountHandle(mPhoneProxy);
-
-            TelecomManager telecomMgr = TelecomManager.from(mPhoneProxy.getContext());
-            PhoneAccount oldPhoneAccount = telecomMgr.getPhoneAccount(accountHandle);
-            PhoneAccount.Builder builder = new PhoneAccount.Builder(oldPhoneAccount);
-
-            int capabilites = newCapabilities(oldPhoneAccount.getCapabilities(),
-                    PhoneAccount.CAPABILITY_VIDEO_CALLING, isVideoCapable);
-
-            builder.setCapabilities(capabilites);
-            telecomMgr.registerPhoneAccount(builder.build());
+            Log.i(this, "handleVideoCapabilitesChanged. Video capability - " + isVideoCapable);
             mListener.onVideoCapabilitiesChanged(isVideoCapable);
         } catch (Exception e) {
-            Log.d(this, "handleVideoCapabilitesChanged. Exception=" + e);
+            Log.w(this, "handleVideoCapabilitesChanged. Exception=" + e);
         }
     }
 
diff --git a/src/com/android/services/telephony/RadioOnHelper.java b/src/com/android/services/telephony/RadioOnHelper.java
new file mode 100644
index 0000000..daa7665
--- /dev/null
+++ b/src/com/android/services/telephony/RadioOnHelper.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.services.telephony;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * Helper class that implements special behavior related to emergency calls or making phone calls
+ * when the radio is in the POWER_OFF STATE. Specifically, this class handles the case of the user
+ * trying to dial an emergency number while the radio is off (i.e. the device is in airplane mode)
+ * or a normal number while the radio is off (because of the device is on Bluetooth), by turning the
+ * radio back on, waiting for it to come up, and then retrying the call.
+ */
+public class RadioOnHelper implements RadioOnStateListener.Callback {
+
+    private final Context mContext;
+    private RadioOnStateListener.Callback mCallback;
+    private List<RadioOnStateListener> mListeners;
+    private List<RadioOnStateListener> mInProgressListeners;
+    private boolean mIsRadioOnCallingEnabled;
+
+    public RadioOnHelper(Context context) {
+        mContext = context;
+        mInProgressListeners = new ArrayList<>(2);
+    }
+
+    private void setupListeners() {
+        if (mListeners != null) {
+            return;
+        }
+        mListeners = new ArrayList<>(2);
+        for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
+            mListeners.add(new RadioOnStateListener());
+        }
+    }
+    /**
+     * Starts the "turn on radio" sequence. This is the (single) external API of the
+     * RadioOnHelper class.
+     *
+     * This method kicks off the following sequence:
+     * - Power on the radio for each Phone
+     * - Listen for radio events telling us the radio has come up.
+     * - Retry if we've gone a significant amount of time without any response from the radio.
+     * - Finally, clean up any leftover state.
+     *
+     * This method is safe to call from any thread, since it simply posts a message to the
+     * RadioOnHelper's handler (thus ensuring that the rest of the sequence is entirely
+     * serialized, and runs on the main looper.)
+     */
+    public void triggerRadioOnAndListen(RadioOnStateListener.Callback callback) {
+        setupListeners();
+        mCallback = callback;
+        mInProgressListeners.clear();
+        mIsRadioOnCallingEnabled = false;
+        for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
+            Phone phone = PhoneFactory.getPhone(i);
+            if (phone == null) {
+                continue;
+            }
+
+            mInProgressListeners.add(mListeners.get(i));
+            mListeners.get(i).waitForRadioOn(phone, this);
+        }
+
+        powerOnRadio();
+    }
+    /**
+     * Attempt to power on the radio (i.e. take the device out of airplane mode). We'll eventually
+     * get an onServiceStateChanged() callback when the radio successfully comes up.
+     */
+    private void powerOnRadio() {
+        Log.d(this, "powerOnRadio().");
+
+        // If airplane mode is on, we turn it off the same way that the Settings activity turns it
+        // off.
+        if (Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_ON, 0) > 0) {
+            Log.d(this, "==> Turning off airplane mode.");
+
+            // Change the system setting
+            Settings.Global.putInt(mContext.getContentResolver(),
+                    Settings.Global.AIRPLANE_MODE_ON, 0);
+
+            // Post the broadcast intend for change in airplane mode
+            // TODO: We really should not be in charge of sending this broadcast.
+            // If changing the setting is sufficient to trigger all of the rest of the logic,
+            // then that should also trigger the broadcast intent.
+            Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+            intent.putExtra("state", false);
+            mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+        }
+    }
+
+    /**
+     * This method is called from multiple Listeners on the Main Looper.
+     * Synchronization is not necessary.
+     */
+    @Override
+    public void onComplete(RadioOnStateListener listener, boolean isRadioReady) {
+        mIsRadioOnCallingEnabled |= isRadioReady;
+        mInProgressListeners.remove(listener);
+        if (mCallback != null && mInProgressListeners.isEmpty()) {
+            mCallback.onComplete(null, mIsRadioOnCallingEnabled);
+        }
+    }
+
+    @Override
+    public boolean isOkToCall(Phone phone, int serviceState) {
+        return (mCallback == null) ? false : mCallback.isOkToCall(phone, serviceState);
+    }
+}
diff --git a/src/com/android/services/telephony/RadioOnStateListener.java b/src/com/android/services/telephony/RadioOnStateListener.java
new file mode 100644
index 0000000..91a7d77
--- /dev/null
+++ b/src/com/android/services/telephony/RadioOnStateListener.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.services.telephony;
+
+import android.os.AsyncResult;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.telephony.ServiceState;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.os.SomeArgs;
+import com.android.internal.telephony.Phone;
+
+/**
+ * Helper class that listens to a Phone's radio state and sends an onComplete callback when we
+ * return true for isOkToCall.
+ */
+public class RadioOnStateListener {
+
+    interface Callback {
+        /**
+         * Receives the result of the RadioOnStateListener's attempt to turn on the radio.
+         */
+        void onComplete(RadioOnStateListener listener, boolean isRadioReady);
+
+        /**
+         * Given the Phone and the new service state of that phone, return whether or not this
+         * phone is ok to call. If it is, onComplete will be called shortly after.
+         */
+        boolean isOkToCall(Phone phone, int serviceState);
+    }
+
+    // Number of times to retry the call, and time between retry attempts.
+    private static int MAX_NUM_RETRIES = 5;
+    private static long TIME_BETWEEN_RETRIES_MILLIS = 5000;  // msec
+
+    // Handler message codes; see handleMessage()
+    @VisibleForTesting
+    public static final int MSG_START_SEQUENCE = 1;
+    @VisibleForTesting
+    public static final int MSG_SERVICE_STATE_CHANGED = 2;
+    @VisibleForTesting
+    public static final int MSG_RETRY_TIMEOUT = 3;
+
+    private final Handler mHandler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_START_SEQUENCE:
+                    SomeArgs args = (SomeArgs) msg.obj;
+                    try {
+                        Phone phone = (Phone) args.arg1;
+                        RadioOnStateListener.Callback callback =
+                                (RadioOnStateListener.Callback) args.arg2;
+                        startSequenceInternal(phone, callback);
+                    } finally {
+                        args.recycle();
+                    }
+                    break;
+                case MSG_SERVICE_STATE_CHANGED:
+                    onServiceStateChanged((ServiceState) ((AsyncResult) msg.obj).result);
+                    break;
+                case MSG_RETRY_TIMEOUT:
+                    onRetryTimeout();
+                    break;
+                default:
+                    Log.wtf(this, "handleMessage: unexpected message: %d.", msg.what);
+                    break;
+            }
+        }
+    };
+
+
+    private Callback mCallback;  // The callback to notify upon completion.
+    private Phone mPhone;  // The phone that will attempt to place the call.
+    private int mNumRetriesSoFar;
+
+    /**
+     * Starts the "wait for radio" sequence. This is the (single) external API of the
+     * RadioOnStateListener class.
+     *
+     * This method kicks off the following sequence:
+     * - Listen for the service state change event telling us the radio has come up.
+     * - Retry if we've gone {@link #TIME_BETWEEN_RETRIES_MILLIS} without any response from the
+     *   radio.
+     * - Finally, clean up any leftover state.
+     *
+     * This method is safe to call from any thread, since it simply posts a message to the
+     * RadioOnStateListener's handler (thus ensuring that the rest of the sequence is entirely
+     * serialized, and runs only on the handler thread.)
+     */
+    public void waitForRadioOn(Phone phone, Callback callback) {
+        Log.d(this, "waitForRadioOn: Phone " + phone.getPhoneId());
+
+        if (mPhone != null) {
+            // If there already is an ongoing request, ignore the new one!
+            return;
+        }
+
+        SomeArgs args = SomeArgs.obtain();
+        args.arg1 = phone;
+        args.arg2 = callback;
+        mHandler.obtainMessage(MSG_START_SEQUENCE, args).sendToTarget();
+    }
+
+    /**
+     * Actual implementation of waitForRadioOn(), guaranteed to run on the handler thread.
+     *
+     * @see #waitForRadioOn
+     */
+    private void startSequenceInternal(Phone phone, Callback callback) {
+        Log.d(this, "startSequenceInternal: Phone " + phone.getPhoneId());
+
+        // First of all, clean up any state left over from a prior RadioOn call sequence. This
+        // ensures that we'll behave sanely if another startTurnOnRadioSequence() comes in while
+        // we're already in the middle of the sequence.
+        cleanup();
+
+        mPhone = phone;
+        mCallback = callback;
+
+        registerForServiceStateChanged();
+        // Next step: when the SERVICE_STATE_CHANGED event comes in, we'll retry the call; see
+        // onServiceStateChanged(). But also, just in case, start a timer to make sure we'll retry
+        // the call even if the SERVICE_STATE_CHANGED event never comes in for some reason.
+        startRetryTimer();
+    }
+
+    /**
+     * Handles the SERVICE_STATE_CHANGED event. This event tells us that the radio state has changed
+     * and is probably coming up. We can now check to see if the conditions are met to place the
+     * call with {@link Callback#isOkToCall}
+     */
+    private void onServiceStateChanged(ServiceState state) {
+        Log.d(this, "onServiceStateChanged(), new state = %s, Phone = %s", state,
+                mPhone.getPhoneId());
+
+        // Possible service states:
+        // - STATE_IN_SERVICE        // Normal operation
+        // - STATE_OUT_OF_SERVICE    // Still searching for an operator to register to,
+        //                           // or no radio signal
+        // - STATE_EMERGENCY_ONLY    // Only emergency numbers are allowed; currently not used
+        // - STATE_POWER_OFF         // Radio is explicitly powered off (airplane mode)
+
+        if (isOkToCall(state.getState())) {
+            // Woo hoo!  It's OK to actually place the call.
+            Log.d(this, "onServiceStateChanged: ok to call!");
+
+            onComplete(true);
+            cleanup();
+        } else {
+            // The service state changed, but we're still not ready to call yet.
+            Log.d(this, "onServiceStateChanged: not ready to call yet, keep waiting.");
+        }
+    }
+
+    /**
+     * Callback to see if it is okay to call yet, given the current conditions.
+     */
+    private boolean isOkToCall(int serviceState) {
+        return (mCallback == null) ? false : mCallback.isOkToCall(mPhone, serviceState);
+    }
+
+    /**
+     * Handles the retry timer expiring.
+     */
+    private void onRetryTimeout() {
+        int serviceState = mPhone.getServiceState().getState();
+        Log.d(this, "onRetryTimeout():  phone state = %s, service state = %d, retries = %d.",
+                mPhone.getState(), serviceState, mNumRetriesSoFar);
+
+        // - If we're actually in a call, we've succeeded.
+        // - Otherwise, if the radio is now on, that means we successfully got out of airplane mode
+        //   but somehow didn't get the service state change event.  In that case, try to place the
+        //   call.
+        // - If the radio is still powered off, try powering it on again.
+
+        if (isOkToCall(serviceState)) {
+            Log.d(this, "onRetryTimeout: Radio is on. Cleaning up.");
+
+            // Woo hoo -- we successfully got out of airplane mode.
+            onComplete(true);
+            cleanup();
+        } else {
+            // Uh oh; we've waited the full TIME_BETWEEN_RETRIES_MILLIS and the radio is still not
+            // powered-on.  Try again.
+
+            mNumRetriesSoFar++;
+            Log.d(this, "mNumRetriesSoFar is now " + mNumRetriesSoFar);
+
+            if (mNumRetriesSoFar > MAX_NUM_RETRIES) {
+                Log.w(this, "Hit MAX_NUM_RETRIES; giving up.");
+                cleanup();
+            } else {
+                Log.d(this, "Trying (again) to turn on the radio.");
+                mPhone.setRadioPower(true);
+                startRetryTimer();
+            }
+        }
+    }
+
+    /**
+     * Clean up when done with the whole sequence: either after successfully turning on the radio,
+     * or after bailing out because of too many failures.
+     *
+     * The exact cleanup steps are:
+     * - Notify callback if we still hadn't sent it a response.
+     * - Double-check that we're not still registered for any telephony events
+     * - Clean up any extraneous handler messages (like retry timeouts) still in the queue
+     *
+     * Basically this method guarantees that there will be no more activity from the
+     * RadioOnStateListener until someone kicks off the whole sequence again with another call
+     * to {@link #waitForRadioOn}
+     *
+     * TODO: Do the work for the comment below:
+     * Note we don't call this method simply after a successful call to placeCall(), since it's
+     * still possible the call will disconnect very quickly with an OUT_OF_SERVICE error.
+     */
+    private void cleanup() {
+        Log.d(this, "cleanup()");
+
+        // This will send a failure call back if callback has yet to be invoked.  If the callback
+        // was already invoked, it's a no-op.
+        onComplete(false);
+
+        unregisterForServiceStateChanged();
+        cancelRetryTimer();
+
+        // Used for unregisterForServiceStateChanged() so we null it out here instead.
+        mPhone = null;
+        mNumRetriesSoFar = 0;
+    }
+
+    private void startRetryTimer() {
+        cancelRetryTimer();
+        mHandler.sendEmptyMessageDelayed(MSG_RETRY_TIMEOUT, TIME_BETWEEN_RETRIES_MILLIS);
+    }
+
+    private void cancelRetryTimer() {
+        mHandler.removeMessages(MSG_RETRY_TIMEOUT);
+    }
+
+    private void registerForServiceStateChanged() {
+        // Unregister first, just to make sure we never register ourselves twice.  (We need this
+        // because Phone.registerForServiceStateChanged() does not prevent multiple registration of
+        // the same handler.)
+        unregisterForServiceStateChanged();
+        mPhone.registerForServiceStateChanged(mHandler, MSG_SERVICE_STATE_CHANGED, null);
+    }
+
+    private void unregisterForServiceStateChanged() {
+        // This method is safe to call even if we haven't set mPhone yet.
+        if (mPhone != null) {
+            mPhone.unregisterForServiceStateChanged(mHandler);  // Safe even if unnecessary
+        }
+        mHandler.removeMessages(MSG_SERVICE_STATE_CHANGED);  // Clean up any pending messages too
+    }
+
+    private void onComplete(boolean isRadioReady) {
+        if (mCallback != null) {
+            Callback tempCallback = mCallback;
+            mCallback = null;
+            tempCallback.onComplete(this, isRadioReady);
+        }
+    }
+
+    @VisibleForTesting
+    public Handler getHandler() {
+        return mHandler;
+    }
+
+    @VisibleForTesting
+    public void setMaxNumRetries(int retries) {
+        MAX_NUM_RETRIES = retries;
+    }
+
+    @VisibleForTesting
+    public void setTimeBetweenRetriesMillis(long timeMs) {
+        TIME_BETWEEN_RETRIES_MILLIS = timeMs;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || !getClass().equals(o.getClass())) return false;
+
+        RadioOnStateListener that = (RadioOnStateListener) o;
+
+        if (mNumRetriesSoFar != that.mNumRetriesSoFar) {
+            return false;
+        }
+        if (mCallback != null ? !mCallback.equals(that.mCallback) : that.mCallback != null) {
+            return false;
+        }
+        return mPhone != null ? mPhone.equals(that.mPhone) : that.mPhone == null;
+
+    }
+}
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index a07e2e6..9cd89c2 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -16,9 +16,11 @@
 
 package com.android.services.telephony;
 
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.pm.PackageManager;
+import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
@@ -26,7 +28,10 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.net.Uri;
+import android.os.Bundle;
 import android.os.PersistableBundle;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -39,9 +44,9 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
+import com.android.ims.ImsManager;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
-import com.android.internal.telephony.PhoneProxy;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
@@ -49,6 +54,7 @@
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Owns all data we have registered with Telecom including handling dynamic addition and
@@ -60,23 +66,32 @@
     // This icon is the one that is used when the Slot ID that we have for a particular SIM
     // is not supported, i.e. SubscriptionManager.INVALID_SLOT_ID or the 5th SIM in a phone.
     private final static int DEFAULT_SIM_ICON =  R.drawable.ic_multi_sim;
+    private final static String GROUP_PREFIX = "group_";
 
     final class AccountEntry implements PstnPhoneCapabilitiesNotifier.Listener {
         private final Phone mPhone;
-        private final PhoneAccount mAccount;
+        private PhoneAccount mAccount;
         private final PstnIncomingCallNotifier mIncomingCallNotifier;
         private final PstnPhoneCapabilitiesNotifier mPhoneCapabilitiesNotifier;
+        private boolean mIsEmergency;
+        private boolean mIsDummy;
         private boolean mIsVideoCapable;
+        private boolean mIsVideoPresenceSupported;
         private boolean mIsVideoPauseSupported;
         private boolean mIsMergeCallSupported;
+        private boolean mIsMergeImsCallSupported;
+        private boolean mIsVideoConferencingSupported;
+        private boolean mIsMergeOfWifiCallsAllowedWhenVoWifiOff;
 
         AccountEntry(Phone phone, boolean isEmergency, boolean isDummy) {
             mPhone = phone;
+            mIsEmergency = isEmergency;
+            mIsDummy = isDummy;
             mAccount = registerPstnPhoneAccount(isEmergency, isDummy);
             Log.i(this, "Registered phoneAccount: %s with handle: %s",
                     mAccount, mAccount.getAccountHandle());
-            mIncomingCallNotifier = new PstnIncomingCallNotifier((PhoneProxy) mPhone);
-            mPhoneCapabilitiesNotifier = new PstnPhoneCapabilitiesNotifier((PhoneProxy) mPhone,
+            mIncomingCallNotifier = new PstnIncomingCallNotifier((Phone) mPhone);
+            mPhoneCapabilitiesNotifier = new PstnPhoneCapabilitiesNotifier((Phone) mPhone,
                     this);
         }
 
@@ -98,14 +113,14 @@
 
             // Populate the phone account data.
             int subId = mPhone.getSubId();
+            String subscriberId = mPhone.getSubscriberId();
             int color = PhoneAccount.NO_HIGHLIGHT_COLOR;
             int slotId = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
-            String line1Number = mTelephonyManager.getLine1NumberForSubscriber(subId);
+            String line1Number = mTelephonyManager.getLine1Number(subId);
             if (line1Number == null) {
                 line1Number = "";
             }
-            String subNumber = mPhone.getPhoneSubInfo().getLine1Number(
-                    mPhone.getContext().getOpPackageName());
+            String subNumber = mPhone.getLine1Number();
             if (subNumber == null) {
                 subNumber = "";
             }
@@ -138,7 +153,7 @@
                 }
 
                 String slotIdString;
-                if (SubscriptionManager.isValidSlotId(slotId)) {
+                if (SubscriptionManager.isValidSlotIndex(slotId)) {
                     slotIdString = Integer.toString(slotId);
                 } else {
                     slotIdString = mContext.getResources().getString(R.string.unknown);
@@ -168,14 +183,44 @@
             }
 
             mIsVideoCapable = mPhone.isVideoEnabled();
+            boolean isVideoEnabledByPlatform =
+                    ImsManager.isVtEnabledByPlatform(mPhone.getContext());
+
+            if (!mIsPrimaryUser) {
+                Log.i(this, "Disabling video calling for secondary user.");
+                mIsVideoCapable = false;
+                isVideoEnabledByPlatform = false;
+            }
+
             if (mIsVideoCapable) {
                 capabilities |= PhoneAccount.CAPABILITY_VIDEO_CALLING;
             }
+
+            if (isVideoEnabledByPlatform) {
+                capabilities |= PhoneAccount.CAPABILITY_SUPPORTS_VIDEO_CALLING;
+            }
+
+            mIsVideoPresenceSupported = isCarrierVideoPresenceSupported();
+            if (mIsVideoCapable && mIsVideoPresenceSupported) {
+                capabilities |= PhoneAccount.CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE;
+            }
+
+            if (mIsVideoCapable && isCarrierEmergencyVideoCallsAllowed()) {
+                capabilities |= PhoneAccount.CAPABILITY_EMERGENCY_VIDEO_CALLING;
+            }
+
             mIsVideoPauseSupported = isCarrierVideoPauseSupported();
+            Bundle phoneAccountExtras = new Bundle();
             if (isCarrierInstantLetteringSupported()) {
                 capabilities |= PhoneAccount.CAPABILITY_CALL_SUBJECT;
+                phoneAccountExtras = getPhoneAccountExtras(phoneAccountExtras);
             }
+            phoneAccountExtras.putString(PhoneAccount.EXTRA_SORT_ORDER, String.valueOf(slotId));
             mIsMergeCallSupported = isCarrierMergeCallSupported();
+            mIsMergeImsCallSupported = isCarrierMergeImsCallSupported();
+            mIsVideoConferencingSupported = isCarrierVideoConferencingSupported();
+            mIsMergeOfWifiCallsAllowedWhenVoWifiOff =
+                    isCarrierMergeOfWifiCallsAllowedWhenVoWifiOff();
 
             if (isEmergency && mContext.getResources().getBoolean(
                     R.bool.config_emergency_account_emergency_calls_only)) {
@@ -199,6 +244,23 @@
                 icon = Icon.createWithBitmap(bitmap);
             }
 
+            // Check to see if the newly registered account should replace the old account.
+            String groupId = "";
+            String[] mergedImsis = mTelephonyManager.getMergedSubscriberIds();
+            boolean isMergedSim = false;
+            if (mergedImsis != null && subscriberId != null && !isEmergency) {
+                for (String imsi : mergedImsis) {
+                    if (imsi.equals(subscriberId)) {
+                        isMergedSim = true;
+                        break;
+                    }
+                }
+            }
+            if(isMergedSim) {
+                groupId = GROUP_PREFIX + line1Number;
+                Log.i(this, "Adding Merged Account with group: " + Log.pii(groupId));
+            }
+
             PhoneAccount account = PhoneAccount.builder(phoneAccountHandle, label)
                     .setAddress(Uri.fromParts(PhoneAccount.SCHEME_TEL, line1Number, null))
                     .setSubscriptionAddress(
@@ -209,6 +271,8 @@
                     .setShortDescription(description)
                     .setSupportedUriSchemes(Arrays.asList(
                             PhoneAccount.SCHEME_TEL, PhoneAccount.SCHEME_VOICEMAIL))
+                    .setExtras(phoneAccountExtras)
+                    .setGroupId(groupId)
                     .build();
 
             // Register with Telecom and put into the account entry.
@@ -230,7 +294,21 @@
             // Check if IMS video pause is supported.
             PersistableBundle b =
                     PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
-            return b.getBoolean(CarrierConfigManager.KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL);
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL);
+        }
+
+        /**
+         * Determines from carrier configuration whether RCS presence indication for video calls is
+         * supported.
+         *
+         * @return {@code true} if RCS presence indication for video calls is supported.
+         */
+        private boolean isCarrierVideoPresenceSupported() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL);
         }
 
         /**
@@ -241,7 +319,8 @@
         private boolean isCarrierInstantLetteringSupported() {
             PersistableBundle b =
                     PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
-            return b.getBoolean(CarrierConfigManager.KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL);
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL);
         }
 
         /**
@@ -252,7 +331,76 @@
         private boolean isCarrierMergeCallSupported() {
             PersistableBundle b =
                     PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
-            return b.getBoolean(CarrierConfigManager.KEY_SUPPORT_CONFERENCE_CALL_BOOL);
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_SUPPORT_CONFERENCE_CALL_BOOL);
+        }
+
+        /**
+         * Determines from carrier config whether merging IMS calls is supported.
+         *
+         * @return {@code true} if merging IMS calls is supported, {@code false} otherwise.
+         */
+        private boolean isCarrierMergeImsCallSupported() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b.getBoolean(CarrierConfigManager.KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL);
+        }
+
+        /**
+         * Determines from carrier config whether emergency video calls are supported.
+         *
+         * @return {@code true} if emergency video calls are allowed, {@code false} otherwise.
+         */
+        private boolean isCarrierEmergencyVideoCallsAllowed() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_ALLOW_EMERGENCY_VIDEO_CALLS_BOOL);
+        }
+
+        /**
+         * Determines from carrier config whether video conferencing is supported.
+         *
+         * @return {@code true} if video conferencing is supported, {@code false} otherwise.
+         */
+        private boolean isCarrierVideoConferencingSupported() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b != null &&
+                    b.getBoolean(CarrierConfigManager.KEY_SUPPORT_VIDEO_CONFERENCE_CALL_BOOL);
+        }
+
+        /**
+         * Determines from carrier config whether merging of wifi calls is allowed when VoWIFI is
+         * turned off.
+         *
+         * @return {@code true} merging of wifi calls when VoWIFI is disabled should be prevented,
+         *      {@code false} otherwise.
+         */
+        private boolean isCarrierMergeOfWifiCallsAllowedWhenVoWifiOff() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return b != null && b.getBoolean(
+                    CarrierConfigManager.KEY_ALLOW_MERGE_WIFI_CALLS_WHEN_VOWIFI_OFF_BOOL);
+        }
+
+        /**
+         * @return The {@link PhoneAccount} extras associated with the current subscription.
+         */
+        private Bundle getPhoneAccountExtras(Bundle phoneAccountExtras) {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+
+            int instantLetteringMaxLength = b.getInt(
+                    CarrierConfigManager.KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT);
+            String instantLetteringEncoding = b.getString(
+                    CarrierConfigManager.KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING);
+
+            phoneAccountExtras.putInt(PhoneAccount.EXTRA_CALL_SUBJECT_MAX_LENGTH,
+                    instantLetteringMaxLength);
+            phoneAccountExtras.putString(PhoneAccount.EXTRA_CALL_SUBJECT_CHARACTER_ENCODING,
+                    instantLetteringEncoding);
+            return phoneAccountExtras;
         }
 
         /**
@@ -264,6 +412,16 @@
         @Override
         public void onVideoCapabilitiesChanged(boolean isVideoCapable) {
             mIsVideoCapable = isVideoCapable;
+            synchronized (mAccountsLock) {
+                if (!mAccounts.contains(this)) {
+                    // Account has already been torn down, don't try to register it again.
+                    // This handles the case where teardown has already happened, and we got a video
+                    // update that lost the race for the mAccountsLock.  In such a scenario by the
+                    // time we get here, the original phone account could have been torn down.
+                    return;
+                }
+                mAccount = registerPstnPhoneAccount(mIsEmergency, mIsDummy);
+            }
         }
 
         /**
@@ -282,6 +440,30 @@
         public boolean isMergeCallSupported() {
             return mIsMergeCallSupported;
         }
+
+        /**
+         * Indicates whether this account supports merging IMS calls (i.e. conferencing).
+         * @return {@code true} if the account supports merging IMS calls, {@code false} otherwise.
+         */
+        public boolean isMergeImsCallSupported() {
+            return mIsMergeImsCallSupported;
+        }
+
+        /**
+         * Indicates whether this account supports video conferencing.
+         * @return {@code true} if the account supports video conferencing, {@code false} otherwise.
+         */
+        public boolean isVideoConferencingSupported() {
+            return mIsVideoConferencingSupported;
+        }
+
+        /**
+         * Indicate whether this account allow merging of wifi calls when VoWIFI is off.
+         * @return {@code true} if allowed, {@code false} otherwise.
+         */
+        public boolean isMergeOfWifiCallsAllowedWhenVoWifiOff() {
+            return mIsMergeOfWifiCallsAllowedWhenVoWifiOff;
+        }
     }
 
     private OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
@@ -294,6 +476,22 @@
         }
     };
 
+    private final BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.i(this, "User changed, re-registering phone accounts.");
+
+            int userHandleId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
+            UserHandle currentUserHandle = new UserHandle(userHandleId);
+            mIsPrimaryUser = UserManager.get(mContext).getPrimaryUser().getUserHandle()
+                    .equals(currentUserHandle);
+
+            // Any time the user changes, re-register the accounts.
+            tearDownAccounts();
+            setupAccounts();
+        }
+    };
+
     private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
         @Override
         public void onServiceStateChanged(ServiceState serviceState) {
@@ -312,7 +510,9 @@
     private final TelephonyManager mTelephonyManager;
     private final SubscriptionManager mSubscriptionManager;
     private List<AccountEntry> mAccounts = new LinkedList<AccountEntry>();
+    private Object mAccountsLock = new Object();
     private int mServiceState = ServiceState.STATE_POWER_OFF;
+    private boolean mIsPrimaryUser = true;
 
     // TODO: Remove back-pointer from app singleton to Service, since this is not a preferred
     // pattern; redesign. This was added to fix a late release bug.
@@ -348,9 +548,11 @@
      * @return {@code True} if video pausing is supported.
      */
     boolean isVideoPauseSupported(PhoneAccountHandle handle) {
-        for (AccountEntry entry : mAccounts) {
-            if (entry.getPhoneAccountHandle().equals(handle)) {
-                return entry.isVideoPauseSupported();
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.isVideoPauseSupported();
+                }
             }
         }
         return false;
@@ -364,24 +566,91 @@
      * @return {@code True} if merging calls is supported.
      */
     boolean isMergeCallSupported(PhoneAccountHandle handle) {
-        for (AccountEntry entry : mAccounts) {
-            if (entry.getPhoneAccountHandle().equals(handle)) {
-                return entry.isMergeCallSupported();
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.isMergeCallSupported();
+                }
             }
         }
         return false;
     }
 
     /**
+     * Determines if the {@link AccountEntry} associated with a {@link PhoneAccountHandle} supports
+     * video conferencing.
+     *
+     * @param handle The {@link PhoneAccountHandle}.
+     * @return {@code True} if video conferencing is supported.
+     */
+    boolean isVideoConferencingSupported(PhoneAccountHandle handle) {
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.isVideoConferencingSupported();
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Determines if the {@link AccountEntry} associated with a {@link PhoneAccountHandle} allows
+     * merging of wifi calls when VoWIFI is disabled.
+     *
+     * @param handle The {@link PhoneAccountHandle}.
+     * @return {@code True} if merging of wifi calls is allowed when VoWIFI is disabled.
+     */
+    boolean isMergeOfWifiCallsAllowedWhenVoWifiOff(final PhoneAccountHandle handle) {
+        synchronized (mAccountsLock) {
+            Optional<AccountEntry> result = mAccounts.stream().filter(
+                    entry -> entry.getPhoneAccountHandle().equals(handle)).findFirst();
+
+            if (result.isPresent()) {
+                return result.get().isMergeOfWifiCallsAllowedWhenVoWifiOff();
+            } else {
+                return false;
+            }
+        }
+    }
+
+    /**
+     * Determines if the {@link AccountEntry} associated with a {@link PhoneAccountHandle} supports
+     * merging IMS calls.
+     *
+     * @param handle The {@link PhoneAccountHandle}.
+     * @return {@code True} if merging IMS calls is supported.
+     */
+    boolean isMergeImsCallSupported(PhoneAccountHandle handle) {
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.isMergeImsCallSupported();
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @return Reference to the {@code TelecomAccountRegistry}'s subscription manager.
+     */
+    SubscriptionManager getSubscriptionManager() {
+        return mSubscriptionManager;
+    }
+
+    /**
      * Returns the address (e.g. the phone number) associated with a subscription.
      *
      * @param handle The phone account handle to find the subscription address for.
      * @return The address.
      */
     Uri getAddress(PhoneAccountHandle handle) {
-        for (AccountEntry entry : mAccounts) {
-            if (entry.getPhoneAccountHandle().equals(handle)) {
-                return entry.mAccount.getAddress();
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.mAccount.getAddress();
+                }
             }
         }
         return null;
@@ -404,6 +673,11 @@
         // We also need to listen for changes to the service state (e.g. emergency -> in service)
         // because this could signal a removal or addition of a SIM in a single SIM phone.
         mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+        // Listen for user switches.  When the user switches, we need to ensure that if the current
+        // use is not the primary user we disable video calling.
+        mContext.registerReceiver(mUserSwitchedReceiver,
+                new IntentFilter(Intent.ACTION_USER_SWITCHED));
     }
 
     /**
@@ -413,10 +687,12 @@
      * @param handle The {@link PhoneAccountHandle}.
      * @return {@code True} if an entry exists.
      */
-    private boolean hasAccountEntryForPhoneAccount(PhoneAccountHandle handle) {
-        for (AccountEntry entry : mAccounts) {
-            if (entry.getPhoneAccountHandle().equals(handle)) {
-                return true;
+    boolean hasAccountEntryForPhoneAccount(PhoneAccountHandle handle) {
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return true;
+                }
             }
         }
         return false;
@@ -455,28 +731,33 @@
         final boolean phoneAccountsEnabled = mContext.getResources().getBoolean(
                 R.bool.config_pstn_phone_accounts_enabled);
 
-        if (phoneAccountsEnabled) {
-            for (Phone phone : phones) {
-                int subscriptionId = phone.getSubId();
-                Log.d(this, "Phone with subscription id %d", subscriptionId);
-                if (subscriptionId >= 0) {
-                    mAccounts.add(new AccountEntry(phone, false /* emergency */,
-                            false /* isDummy */));
+        synchronized (mAccountsLock) {
+            if (phoneAccountsEnabled) {
+                for (Phone phone : phones) {
+                    int subscriptionId = phone.getSubId();
+                    Log.d(this, "Phone with subscription id %d", subscriptionId);
+                    // setupAccounts can be called multiple times during service changes. Don't add an
+                    // account if the Icc has not been set yet.
+                    if (subscriptionId >= 0 && phone.getFullIccSerialNumber() != null) {
+                        mAccounts.add(new AccountEntry(phone, false /* emergency */,
+                                false /* isDummy */));
+                    }
                 }
             }
-        }
 
-        // If we did not list ANY accounts, we need to provide a "default" SIM account
-        // for emergency numbers since no actual SIM is needed for dialing emergency
-        // numbers but a phone account is.
-        if (mAccounts.isEmpty()) {
-            mAccounts.add(new AccountEntry(PhoneFactory.getDefaultPhone(), true /* emergency */,
-                    false /* isDummy */));
-        }
+            // If we did not list ANY accounts, we need to provide a "default" SIM account
+            // for emergency numbers since no actual SIM is needed for dialing emergency
+            // numbers but a phone account is.
+            if (mAccounts.isEmpty()) {
+                mAccounts.add(new AccountEntry(PhoneFactory.getDefaultPhone(), true /* emergency */,
+                        false /* isDummy */));
+            }
 
-        // Add a fake account entry.
-        if (DBG && phones.length > 0 && "TRUE".equals(System.getProperty("dummy_sim"))) {
-            mAccounts.add(new AccountEntry(phones[0], false /* emergency */, true /* isDummy */));
+            // Add a fake account entry.
+            if (DBG && phones.length > 0 && "TRUE".equals(System.getProperty("dummy_sim"))) {
+                mAccounts.add(new AccountEntry(phones[0], false /* emergency */,
+                        true /* isDummy */));
+            }
         }
 
         // Clean up any PhoneAccounts that are no longer relevant
@@ -508,9 +789,11 @@
     }
 
     private void tearDownAccounts() {
-        for (AccountEntry entry : mAccounts) {
-            entry.teardown();
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                entry.teardown();
+            }
+            mAccounts.clear();
         }
-        mAccounts.clear();
     }
 }
diff --git a/src/com/android/services/telephony/TelephonyConferenceController.java b/src/com/android/services/telephony/TelephonyConferenceController.java
index 9724a32..1386e19 100644
--- a/src/com/android/services/telephony/TelephonyConferenceController.java
+++ b/src/com/android/services/telephony/TelephonyConferenceController.java
@@ -23,6 +23,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import android.net.Uri;
 import android.telecom.Conference;
@@ -34,8 +35,6 @@
 import com.android.phone.PhoneUtils;
 
 import com.android.internal.telephony.Call;
-import com.android.internal.telephony.gsm.GsmConnection;
-import com.android.internal.telephony.imsphone.ImsPhoneConnection;
 
 /**
  * Maintains a list of all the known TelephonyConnections connections and controls GSM and
@@ -69,13 +68,12 @@
     /** The known connections. */
     private final List<TelephonyConnection> mTelephonyConnections = new ArrayList<>();
 
-    private final TelephonyConnectionService mConnectionService;
+    private final TelephonyConnectionServiceProxy mConnectionService;
     private boolean mTriggerRecalculate = false;
 
-    public TelephonyConferenceController(TelephonyConnectionService connectionService) {
+    public TelephonyConferenceController(TelephonyConnectionServiceProxy connectionService) {
         mConnectionService = connectionService;
     }
-
     /** The TelephonyConference connection object. */
     private TelephonyConference mTelephonyConference;
 
@@ -85,12 +83,23 @@
     }
 
     void add(TelephonyConnection connection) {
+        if (mTelephonyConnections.contains(connection)) {
+            // Adding a duplicate realistically shouldn't happen.
+            Log.w(this, "add - connection already tracked; connection=%s", connection);
+            return;
+        }
         mTelephonyConnections.add(connection);
         connection.addConnectionListener(mConnectionListener);
         recalculate();
     }
 
     void remove(Connection connection) {
+        if (!mTelephonyConnections.contains(connection)) {
+            // Debug only since TelephonyConnectionService tries to clean up the connections tracked
+            // when the original connection changes.  It does this proactively.
+            Log.d(this, "remove - connection not tracked; connection=%s", connection);
+            return;
+        }
         connection.removeConnectionListener(mConnectionListener);
         mTelephonyConnections.remove(connection);
         recalculate();
@@ -115,10 +124,7 @@
      */
     private void recalculateConferenceable() {
         Log.v(this, "recalculateConferenceable : %d", mTelephonyConnections.size());
-
-        List<Connection> activeConnections = new ArrayList<>(mTelephonyConnections.size());
-        List<Connection> backgroundConnections = new ArrayList<>(
-                mTelephonyConnections.size());
+        HashSet<Connection> conferenceableConnections = new HashSet<>(mTelephonyConnections.size());
 
         // Loop through and collect all calls which are active or holding
         for (TelephonyConnection connection : mTelephonyConnections) {
@@ -128,10 +134,9 @@
             if (connection.isConferenceSupported() && !participatesInFullConference(connection)) {
                 switch (connection.getState()) {
                     case Connection.STATE_ACTIVE:
-                        activeConnections.add(connection);
-                        continue;
+                        //fall through
                     case Connection.STATE_HOLDING:
-                        backgroundConnections.add(connection);
+                        conferenceableConnections.add(connection);
                         continue;
                     default:
                         break;
@@ -141,34 +146,30 @@
             connection.setConferenceableConnections(Collections.<Connection>emptyList());
         }
 
-        Log.v(this, "active: %d, holding: %d",
-                activeConnections.size(), backgroundConnections.size());
+        Log.v(this, "conferenceable: " + conferenceableConnections.size());
 
-        // Go through all the active connections and set the background connections as
-        // conferenceable.
-        for (Connection connection : activeConnections) {
-            connection.setConferenceableConnections(backgroundConnections);
+        // Go through all the conferenceable connections and add all other conferenceable
+        // connections that is not the connection itself
+        for (Connection c : conferenceableConnections) {
+            List<Connection> connections = conferenceableConnections
+                    .stream()
+                    // Filter out this connection from the list of connections
+                    .filter(connection -> c != connection)
+                    .collect(Collectors.toList());
+            c.setConferenceableConnections(connections);
         }
 
-        // Go through all the background connections and set the active connections as
-        // conferenceable.
-        for (Connection connection : backgroundConnections) {
-            connection.setConferenceableConnections(activeConnections);
-        }
-
-        // Set the conference as conferenceable with all the connections
+        // Set the conference as conferenceable with all of the connections that are not in the
+        // conference.
         if (mTelephonyConference != null && !isFullConference(mTelephonyConference)) {
-            List<Connection> nonConferencedConnections =
-                    new ArrayList<>(mTelephonyConnections.size());
-            for (TelephonyConnection c : mTelephonyConnections) {
-                if (c.isConferenceSupported() && c.getConference() == null) {
-                    nonConferencedConnections.add(c);
-                }
-            }
-            Log.v(this, "conference conferenceable: %s", nonConferencedConnections);
+            List<Connection> nonConferencedConnections = mTelephonyConnections
+                    .stream()
+                    // Only retrieve Connections that are not in a conference (but support
+                    // conferences).
+                    .filter(c -> c.isConferenceSupported() && c.getConference() == null)
+                    .collect(Collectors.toList());
             mTelephonyConference.setConferenceableConnections(nonConferencedConnections);
         }
-
         // TODO: Do not allow conferencing of already conferenced connections.
     }
 
@@ -179,13 +180,11 @@
         for (TelephonyConnection connection : mTelephonyConnections) {
             com.android.internal.telephony.Connection radioConnection =
                 connection.getOriginalConnection();
-
             if (radioConnection != null) {
                 Call.State state = radioConnection.getState();
                 Call call = radioConnection.getCall();
                 if ((state == Call.State.ACTIVE || state == Call.State.HOLDING) &&
                         (call != null && call.isMultiparty())) {
-
                     numGsmConnections++;
                     conferencedConnections.add(connection);
                 }
@@ -246,7 +245,18 @@
             } else {
                 if (allConnInService) {
                     mTriggerRecalculate = false;
-                    mTelephonyConference = new TelephonyConference(null);
+
+                    // Get PhoneAccount from one of the conferenced connections and use it to set
+                    // the phone account on the conference.
+                    PhoneAccountHandle phoneAccountHandle = null;
+                    if (!conferencedConnections.isEmpty()) {
+                        TelephonyConnection telephonyConnection =
+                                (TelephonyConnection) conferencedConnections.iterator().next();
+                        phoneAccountHandle = PhoneUtils.makePstnPhoneAccountHandle(
+                                telephonyConnection.getPhone());
+                    }
+
+                    mTelephonyConference = new TelephonyConference(phoneAccountHandle);
                     for (Connection connection : conferencedConnections) {
                         Log.d(this, "Adding a connection to a conference call: %s %s",
                                 mTelephonyConference, connection);
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index d0da59d..6a14e88 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -23,20 +23,37 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.os.PersistableBundle;
 import android.telecom.CallAudioState;
 import android.telecom.ConferenceParticipant;
 import android.telecom.Connection;
 import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
 import android.telecom.StatusHints;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+import android.telephony.CarrierConfigManager;
+import android.telephony.DisconnectCause;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.util.Pair;
 
+import com.android.ims.ImsCall;
 import com.android.ims.ImsCallProfile;
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
+import com.android.internal.telephony.Connection.Capability;
 import com.android.internal.telephony.Connection.PostDialListener;
+import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.gsm.SuppServiceNotification;
 
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.imsphone.ImsPhone;
+import com.android.internal.telephony.imsphone.ImsPhoneCallTracker;
 import com.android.internal.telephony.imsphone.ImsPhoneConnection;
+import com.android.phone.ImsUtil;
+import com.android.phone.PhoneGlobals;
+import com.android.phone.PhoneUtils;
 import com.android.phone.R;
 
 import java.lang.Override;
@@ -61,7 +78,6 @@
     private static final int MSG_MULTIPARTY_STATE_CHANGED = 5;
     private static final int MSG_CONFERENCE_MERGE_FAILED = 6;
     private static final int MSG_SUPP_SERVICE_NOTIFY = 7;
-    private static final int MSG_CONNECTION_EXTRAS_CHANGED = 8;
 
     /**
      * Mappings from {@link com.android.internal.telephony.Connection} extras keys to their
@@ -69,7 +85,16 @@
      */
     private static final Map<String, String> sExtrasMap = createExtrasMap();
 
-    private SuppServiceNotification mSsNotification = null;
+    private static final int MSG_SET_VIDEO_STATE = 8;
+    private static final int MSG_SET_VIDEO_PROVIDER = 9;
+    private static final int MSG_SET_AUDIO_QUALITY = 10;
+    private static final int MSG_SET_CONFERENCE_PARTICIPANTS = 11;
+    private static final int MSG_CONNECTION_EXTRAS_CHANGED = 12;
+    private static final int MSG_SET_ORIGNAL_CONNECTION_CAPABILITIES = 13;
+    private static final int MSG_ON_HOLD_TONE = 14;
+    private static final int MSG_CDMA_VOICE_PRIVACY_ON = 15;
+    private static final int MSG_CDMA_VOICE_PRIVACY_OFF = 16;
+    private static final int MSG_HANGUP = 17;
 
     private final Handler mHandler = new Handler() {
         @Override
@@ -122,42 +147,123 @@
                     if (isMultiParty) {
                         notifyConferenceStarted();
                     }
+                    break;
                 case MSG_CONFERENCE_MERGE_FAILED:
                     notifyConferenceMergeFailed();
                     break;
                 case MSG_SUPP_SERVICE_NOTIFY:
+                    Phone phone = getPhone();
                     Log.v(TelephonyConnection.this, "MSG_SUPP_SERVICE_NOTIFY on phoneId : "
-                            +getPhone().getPhoneId());
+                            + (phone != null ? Integer.toString(phone.getPhoneId())
+                            : "null"));
+                    SuppServiceNotification mSsNotification = null;
                     if (msg.obj != null && ((AsyncResult) msg.obj).result != null) {
                         mSsNotification =
                                 (SuppServiceNotification)((AsyncResult) msg.obj).result;
                         if (mOriginalConnection != null && mSsNotification.history != null) {
-                            Bundle extras = getExtras();
-                            if (extras != null) {
-                                Log.v(TelephonyConnection.this,
-                                        "Updating call history info in extras.");
-                                extras.putStringArrayList(Connection.EXTRA_LAST_FORWARDED_NUMBER,
-                                        new ArrayList(Arrays.asList(mSsNotification.history)));
-                                setExtras(extras);
-                            }
+                            Bundle lastForwardedNumber = new Bundle();
+                            Log.v(TelephonyConnection.this,
+                                    "Updating call history info in extras.");
+                            lastForwardedNumber.putStringArrayList(
+                                Connection.EXTRA_LAST_FORWARDED_NUMBER,
+                                new ArrayList(Arrays.asList(mSsNotification.history)));
+                            putExtras(lastForwardedNumber);
                         }
                     }
                     break;
+
+                case MSG_SET_VIDEO_STATE:
+                    int videoState = (int) msg.obj;
+                    setVideoState(videoState);
+
+                    // A change to the video state of the call can influence whether or not it
+                    // can be part of a conference, whether another call can be added, and
+                    // whether the call should have the HD audio property set.
+                    refreshConferenceSupported();
+                    refreshDisableAddCall();
+                    updateConnectionProperties();
+                    break;
+
+                case MSG_SET_VIDEO_PROVIDER:
+                    VideoProvider videoProvider = (VideoProvider) msg.obj;
+                    setVideoProvider(videoProvider);
+                    break;
+
+                case MSG_SET_AUDIO_QUALITY:
+                    int audioQuality = (int) msg.obj;
+                    setAudioQuality(audioQuality);
+                    break;
+
+                case MSG_SET_CONFERENCE_PARTICIPANTS:
+                    List<ConferenceParticipant> participants = (List<ConferenceParticipant>) msg.obj;
+                    updateConferenceParticipants(participants);
+                    break;
+
                 case MSG_CONNECTION_EXTRAS_CHANGED:
                     final Bundle extras = (Bundle) msg.obj;
                     updateExtras(extras);
                     break;
+
+                case MSG_SET_ORIGNAL_CONNECTION_CAPABILITIES:
+                    setOriginalConnectionCapabilities(msg.arg1);
+                    break;
+
+                case MSG_ON_HOLD_TONE:
+                    AsyncResult asyncResult = (AsyncResult) msg.obj;
+                    Pair<com.android.internal.telephony.Connection, Boolean> heldInfo =
+                            (Pair<com.android.internal.telephony.Connection, Boolean>)
+                                    asyncResult.result;
+
+                    // Determines if the hold tone is starting or stopping.
+                    boolean playTone = ((Boolean) (heldInfo.second)).booleanValue();
+
+                    // Determine which connection the hold tone is stopping or starting for
+                    com.android.internal.telephony.Connection heldConnection = heldInfo.first;
+
+                    // Only start or stop the hold tone if this is the connection which is starting
+                    // or stopping the hold tone.
+                    if (heldConnection == mOriginalConnection) {
+                        // If starting the hold tone, send a connection event to Telecom which will
+                        // cause it to play the on hold tone.
+                        if (playTone) {
+                            sendConnectionEvent(EVENT_ON_HOLD_TONE_START, null);
+                        } else {
+                            sendConnectionEvent(EVENT_ON_HOLD_TONE_END, null);
+                        }
+                    }
+                    break;
+
+                case MSG_CDMA_VOICE_PRIVACY_ON:
+                    Log.d(this, "MSG_CDMA_VOICE_PRIVACY_ON received");
+                    setCdmaVoicePrivacy(true);
+                    break;
+                case MSG_CDMA_VOICE_PRIVACY_OFF:
+                    Log.d(this, "MSG_CDMA_VOICE_PRIVACY_OFF received");
+                    setCdmaVoicePrivacy(false);
+                    break;
+                case MSG_HANGUP:
+                    int cause = (int) msg.obj;
+                    hangup(cause);
+                    break;
             }
         }
     };
 
     /**
+     * @return {@code true} if carrier video conferencing is supported, {@code false} otherwise.
+     */
+    public boolean isCarrierVideoConferencingSupported() {
+        return mIsCarrierVideoConferencingSupported;
+    }
+
+    /**
      * A listener/callback mechanism that is specific communication from TelephonyConnections
      * to TelephonyConnectionService (for now). It is more specific that Connection.Listener
      * because it is only exposed in Telephony.
      */
     public abstract static class TelephonyConnectionListener {
         public void onOriginalConnectionConfigured(TelephonyConnection c) {}
+        public void onOriginalConnectionRetry(TelephonyConnection c, boolean isPermanentFailure) {}
     }
 
     private final PostDialListener mPostDialListener = new PostDialListener() {
@@ -185,29 +291,18 @@
             new com.android.internal.telephony.Connection.ListenerBase() {
         @Override
         public void onVideoStateChanged(int videoState) {
-            setVideoState(videoState);
+            mHandler.obtainMessage(MSG_SET_VIDEO_STATE, videoState).sendToTarget();
         }
 
-        /**
-         * The {@link com.android.internal.telephony.Connection} has reported a change in local
-         * video capability.
-         *
-         * @param capable True if capable.
+        /*
+         * The {@link com.android.internal.telephony.Connection} has reported a change in
+         * connection capability.
+         * @param capabilities bit mask containing voice or video or both capabilities.
          */
         @Override
-        public void onLocalVideoCapabilityChanged(boolean capable) {
-            setLocalVideoCapable(capable);
-        }
-
-        /**
-         * The {@link com.android.internal.telephony.Connection} has reported a change in remote
-         * video capability.
-         *
-         * @param capable True if capable.
-         */
-        @Override
-        public void onRemoteVideoCapabilityChanged(boolean capable) {
-            setRemoteVideoCapable(capable);
+        public void onConnectionCapabilitiesChanged(int capabilities) {
+            mHandler.obtainMessage(MSG_SET_ORIGNAL_CONNECTION_CAPABILITIES,
+                    capabilities, 0).sendToTarget();
         }
 
         /**
@@ -218,7 +313,7 @@
          */
         @Override
         public void onVideoProviderChanged(VideoProvider videoProvider) {
-            setVideoProvider(videoProvider);
+            mHandler.obtainMessage(MSG_SET_VIDEO_PROVIDER, videoProvider).sendToTarget();
         }
 
         /**
@@ -240,7 +335,7 @@
          */
         @Override
         public void onAudioQualityChanged(int audioQuality) {
-            setAudioQuality(audioQuality);
+            mHandler.obtainMessage(MSG_SET_AUDIO_QUALITY, audioQuality).sendToTarget();
         }
         /**
          * Handles a change in the state of conference participant(s), as reported by the
@@ -250,7 +345,7 @@
          */
         @Override
         public void onConferenceParticipantsChanged(List<ConferenceParticipant> participants) {
-            updateConferenceParticipants(participants);
+            mHandler.obtainMessage(MSG_SET_CONFERENCE_PARTICIPANTS, participants).sendToTarget();
         }
 
         /*
@@ -276,11 +371,82 @@
         public void onExtrasChanged(Bundle extras) {
             mHandler.obtainMessage(MSG_CONNECTION_EXTRAS_CHANGED, extras).sendToTarget();
         }
+
+        /**
+         * Handles the phone exiting ECM mode by updating the connection capabilities.  During an
+         * ongoing call, if ECM mode is exited, we will re-enable mute for CDMA calls.
+         */
+        @Override
+        public void onExitedEcmMode() {
+            handleExitedEcmMode();
+        }
+
+        /**
+         * Called from {@link ImsPhoneCallTracker} when a request to pull an external call has
+         * failed.
+         * @param externalConnection
+         */
+        @Override
+        public void onCallPullFailed(com.android.internal.telephony.Connection externalConnection) {
+            if (externalConnection == null) {
+                return;
+            }
+
+            Log.i(this, "onCallPullFailed - pull failed; swapping back to call: %s",
+                    externalConnection);
+
+            // Inform the InCallService of the fact that the call pull failed (it may choose to
+            // display a message informing the user of the pull failure).
+            sendConnectionEvent(Connection.EVENT_CALL_PULL_FAILED, null);
+
+            // Swap the ImsPhoneConnection we used to do the pull for the ImsExternalConnection
+            // which originally represented the call.
+            setOriginalConnection(externalConnection);
+
+            // Set our state to active again since we're no longer pulling.
+            setActiveInternal();
+        }
+
+        /**
+         * Called from {@link ImsPhoneCallTracker} when a handover to WIFI has failed.
+         */
+        @Override
+        public void onHandoverToWifiFailed() {
+            sendConnectionEvent(TelephonyManager.EVENT_HANDOVER_TO_WIFI_FAILED, null);
+        }
+
+        /**
+         * Informs the {@link android.telecom.ConnectionService} of a connection event raised by the
+         * original connection.
+         * @param event The connection event.
+         * @param extras The extras.
+         */
+        @Override
+        public void onConnectionEvent(String event, Bundle extras) {
+            sendConnectionEvent(event, extras);
+        }
+
+        @Override
+        public void onRttModifyRequestReceived() {
+            sendRemoteRttRequest();
+        }
+
+        @Override
+        public void onRttModifyResponseReceived(int status) {
+            if (status == RttModifyStatus.SESSION_MODIFY_REQUEST_SUCCESS) {
+                sendRttInitiationSuccess();
+            } else {
+                sendRttInitiationFailure(status);
+            }
+        }
     };
 
-    private com.android.internal.telephony.Connection mOriginalConnection;
-    private Call.State mOriginalConnectionState = Call.State.IDLE;
+    protected com.android.internal.telephony.Connection mOriginalConnection;
+    private Call.State mConnectionState = Call.State.IDLE;
     private Bundle mOriginalConnectionExtras = new Bundle();
+    private boolean mIsStateOverridden = false;
+    private Call.State mOriginalConnectionState = Call.State.IDLE;
+    private Call.State mConnectionOverriddenState = Call.State.IDLE;
 
     private boolean mWasImsConnection;
 
@@ -290,39 +456,33 @@
     private boolean mIsMultiParty = false;
 
     /**
-     * Determines if the {@link TelephonyConnection} has local video capabilities.
-     * This is used when {@link TelephonyConnection#updateConnectionCapabilities()}} is called,
-     * ensuring the appropriate capabilities are set.  Since capabilities
-     * can be rebuilt at any time it is necessary to track the video capabilities between rebuild.
-     * The capabilities (including video capabilities) are communicated to the telecom
-     * layer.
+     * The {@link com.android.internal.telephony.Connection} capabilities associated with the
+     * current {@link #mOriginalConnection}.
      */
-    private boolean mLocalVideoCapable;
-
-    /**
-     * Determines if the {@link TelephonyConnection} has remote video capabilities.
-     * This is used when {@link TelephonyConnection#updateConnectionCapabilities()}} is called,
-     * ensuring the appropriate capabilities are set.  Since capabilities can be rebuilt at any time
-     * it is necessary to track the video capabilities between rebuild. The capabilities (including
-     * video capabilities) are communicated to the telecom layer.
-     */
-    private boolean mRemoteVideoCapable;
+    private int mOriginalConnectionCapabilities;
 
     /**
      * Determines if the {@link TelephonyConnection} is using wifi.
-     * This is used when {@link TelephonyConnection#updateConnectionCapabilities} is called to
-     * indicate wheter a call has the {@link Connection#CAPABILITY_WIFI} capability.
+     * This is used when {@link TelephonyConnection#updateConnectionProperties()} is called to
+     * indicate whether a call has the {@link Connection#PROPERTY_WIFI} property.
      */
     private boolean mIsWifi;
 
     /**
      * Determines the audio quality is high for the {@link TelephonyConnection}.
-     * This is used when {@link TelephonyConnection#updateConnectionCapabilities}} is called to
-     * indicate whether a call has the {@link Connection#CAPABILITY_HIGH_DEF_AUDIO} capability.
+     * This is used when {@link TelephonyConnection#updateConnectionProperties}} is called to
+     * indicate whether a call has the {@link Connection#PROPERTY_HIGH_DEF_AUDIO} property.
      */
     private boolean mHasHighDefAudio;
 
     /**
+     * Indicates that the connection should be treated as an emergency call because the
+     * number dialed matches an internal list of emergency numbers. Does not guarantee whether
+     * the network will treat the call as an emergency call.
+     */
+    private boolean mTreatAsEmergencyCall;
+
+    /**
      * For video calls, indicates whether the outgoing video for the call can be paused using
      * the {@link android.telecom.VideoProfile#STATE_PAUSED} VideoState.
      */
@@ -334,12 +494,32 @@
     private boolean mIsConferenceSupported;
 
     /**
+     * Indicates whether the carrier supports video conferencing; captures the current state of the
+     * carrier config
+     * {@link android.telephony.CarrierConfigManager#KEY_SUPPORT_VIDEO_CONFERENCE_CALL_BOOL}.
+     */
+    private boolean mIsCarrierVideoConferencingSupported;
+
+    /**
+     * Indicates whether or not this connection has CDMA Enhanced Voice Privacy enabled.
+     */
+    private boolean mIsCdmaVoicePrivacyEnabled;
+
+    /**
+     * Indicates whether this call is an outgoing call.
+     */
+    protected final boolean mIsOutgoing;
+
+    /**
      * Listeners to our TelephonyConnection specific callbacks
      */
     private final Set<TelephonyConnectionListener> mTelephonyListeners = Collections.newSetFromMap(
             new ConcurrentHashMap<TelephonyConnectionListener, Boolean>(8, 0.9f, 1));
 
-    protected TelephonyConnection(com.android.internal.telephony.Connection originalConnection) {
+    protected TelephonyConnection(com.android.internal.telephony.Connection originalConnection,
+            String callId, boolean isOutgoingCall) {
+        mIsOutgoing = isOutgoingCall;
+        setTelecomCallId(callId);
         if (originalConnection != null) {
             setOriginalConnection(originalConnection);
         }
@@ -369,7 +549,7 @@
     @Override
     public void onDisconnect() {
         Log.v(this, "onDisconnect");
-        hangup(android.telephony.DisconnectCause.LOCAL);
+        mHandler.obtainMessage(MSG_HANGUP, android.telephony.DisconnectCause.LOCAL).sendToTarget();
     }
 
     /**
@@ -404,7 +584,7 @@
     @Override
     public void onAbort() {
         Log.v(this, "onAbort");
-        hangup(android.telephony.DisconnectCause.LOCAL);
+        mHandler.obtainMessage(MSG_HANGUP, android.telephony.DisconnectCause.LOCAL).sendToTarget();
     }
 
     @Override
@@ -433,7 +613,8 @@
     public void onReject() {
         Log.v(this, "onReject");
         if (isValidRingingCall()) {
-            hangup(android.telephony.DisconnectCause.INCOMING_REJECTED);
+            mHandler.obtainMessage(MSG_HANGUP, android.telephony.DisconnectCause.INCOMING_REJECTED)
+                    .sendToTarget();
         }
         super.onReject();
     }
@@ -450,11 +631,52 @@
         }
     }
 
+    /**
+     * Handles requests to pull an external call.
+     */
+    @Override
+    public void onPullExternalCall() {
+        if ((getConnectionProperties() & Connection.PROPERTY_IS_EXTERNAL_CALL) !=
+                Connection.PROPERTY_IS_EXTERNAL_CALL) {
+            Log.w(this, "onPullExternalCall - cannot pull non-external call");
+            return;
+        }
+
+        if (mOriginalConnection != null) {
+            mOriginalConnection.pullExternalCall();
+        }
+    }
+
+    @Override
+    public void onStartRtt(RttTextStream textStream) {
+        if (isImsConnection()) {
+            ImsPhoneConnection originalConnection = (ImsPhoneConnection) mOriginalConnection;
+            originalConnection.sendRttModifyRequest(textStream);
+        } else {
+            Log.w(this, "onStartRtt - not in IMS, so RTT cannot be enabled.");
+        }
+    }
+
+    @Override
+    public void onStopRtt() {
+        // This is not supported by carriers/vendor yet. No-op for now.
+    }
+
+    @Override
+    public void handleRttUpgradeResponse(RttTextStream textStream) {
+        if (!isImsConnection()) {
+            Log.w(this, "handleRttUpgradeResponse - not in IMS, so RTT cannot be enabled.");
+            return;
+        }
+        ImsPhoneConnection originalConnection = (ImsPhoneConnection) mOriginalConnection;
+        originalConnection.sendRttModifyResponse(textStream);
+    }
+
     public void performHold() {
         Log.v(this, "performHold");
         // TODO: Can dialing calls be put on hold as well since they take up the
         // foreground call slot?
-        if (Call.State.ACTIVE == mOriginalConnectionState) {
+        if (Call.State.ACTIVE == mConnectionState) {
             Log.v(this, "Holding active call");
             try {
                 Phone phone = mOriginalConnection.getCall().getPhone();
@@ -485,7 +707,7 @@
 
     public void performUnhold() {
         Log.v(this, "performUnhold");
-        if (Call.State.HOLDING == mOriginalConnectionState) {
+        if (Call.State.HOLDING == mConnectionState) {
             try {
                 // Here's the deal--Telephony hold/unhold is weird because whenever there exists
                 // more than one call, one of them must always be active. In other words, if you
@@ -515,7 +737,7 @@
         }
     }
 
-    public void performConference(TelephonyConnection otherConnection) {
+    public void performConference(Connection otherConnection) {
         Log.d(this, "performConference - %s", this);
         if (getPhone() != null) {
             try {
@@ -532,43 +754,32 @@
     }
 
     /**
-     * Builds call capabilities common to all TelephonyConnections. Namely, apply IMS-based
+     * Builds connection capabilities common to all TelephonyConnections. Namely, apply IMS-based
      * capabilities.
      */
     protected int buildConnectionCapabilities() {
         int callCapabilities = 0;
-        if (isImsConnection()) {
-            if (mOriginalConnection.isIncoming()) {
-                callCapabilities |= CAPABILITY_SPEED_UP_MT_AUDIO;
-            }
+        if (mOriginalConnection != null && mOriginalConnection.isIncoming()) {
+            callCapabilities |= CAPABILITY_SPEED_UP_MT_AUDIO;
+        }
+        if (!shouldTreatAsEmergencyCall() && isImsConnection() && canHoldImsCalls()) {
             callCapabilities |= CAPABILITY_SUPPORT_HOLD;
             if (getState() == STATE_ACTIVE || getState() == STATE_HOLDING) {
                 callCapabilities |= CAPABILITY_HOLD;
             }
         }
 
-        // If the phone is in ECM mode, mark the call to indicate that the callback number should be
-        // shown.
-        Phone phone = getPhone();
-        if (phone != null && phone.isInEcm()) {
-            callCapabilities |= CAPABILITY_SHOW_CALLBACK_NUMBER;
-        }
         return callCapabilities;
     }
 
     protected final void updateConnectionCapabilities() {
         int newCapabilities = buildConnectionCapabilities();
 
-        newCapabilities = changeCapability(newCapabilities,
-                CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL, mRemoteVideoCapable);
-        newCapabilities = changeCapability(newCapabilities,
-                CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL, mLocalVideoCapable);
-        newCapabilities = changeCapability(newCapabilities,
-                CAPABILITY_HIGH_DEF_AUDIO, mHasHighDefAudio);
-        newCapabilities = changeCapability(newCapabilities, CAPABILITY_WIFI, mIsWifi);
-        newCapabilities = changeCapability(newCapabilities, CAPABILITY_CAN_PAUSE_VIDEO,
-                mIsVideoPauseSupported && mRemoteVideoCapable && mLocalVideoCapable);
-
+        newCapabilities = applyOriginalConnectionCapabilities(newCapabilities);
+        newCapabilities = changeBitmask(newCapabilities, CAPABILITY_CAN_PAUSE_VIDEO,
+                mIsVideoPauseSupported && isVideoCapable());
+        newCapabilities = changeBitmask(newCapabilities, CAPABILITY_CAN_PULL_CALL,
+                isExternalConnection() && isPullable());
         newCapabilities = applyConferenceTerminationCapabilities(newCapabilities);
 
         if (getConnectionCapabilities() != newCapabilities) {
@@ -576,24 +787,68 @@
         }
     }
 
+    protected int buildConnectionProperties() {
+        int connectionProperties = 0;
+
+        // If the phone is in ECM mode, mark the call to indicate that the callback number should be
+        // shown.
+        Phone phone = getPhone();
+        if (phone != null && phone.isInEcm()) {
+            connectionProperties |= PROPERTY_EMERGENCY_CALLBACK_MODE;
+        }
+
+        return connectionProperties;
+    }
+
+    /**
+     * Updates the properties of the connection.
+     */
+    protected final void updateConnectionProperties() {
+        int newProperties = buildConnectionProperties();
+
+        newProperties = changeBitmask(newProperties, PROPERTY_HIGH_DEF_AUDIO,
+                hasHighDefAudioProperty());
+        newProperties = changeBitmask(newProperties, PROPERTY_WIFI, mIsWifi);
+        newProperties = changeBitmask(newProperties, PROPERTY_IS_EXTERNAL_CALL,
+                isExternalConnection());
+        newProperties = changeBitmask(newProperties, PROPERTY_HAS_CDMA_VOICE_PRIVACY,
+                mIsCdmaVoicePrivacyEnabled);
+
+        if (getConnectionProperties() != newProperties) {
+            setConnectionProperties(newProperties);
+        }
+    }
+
     protected final void updateAddress() {
         updateConnectionCapabilities();
+        updateConnectionProperties();
         if (mOriginalConnection != null) {
             Uri address = getAddressFromNumber(mOriginalConnection.getAddress());
             int presentation = mOriginalConnection.getNumberPresentation();
             if (!Objects.equals(address, getAddress()) ||
                     presentation != getAddressPresentation()) {
                 Log.v(this, "updateAddress, address changed");
+                if ((getConnectionProperties() & PROPERTY_IS_DOWNGRADED_CONFERENCE) != 0) {
+                    address = null;
+                }
                 setAddress(address, presentation);
             }
 
-            String name = mOriginalConnection.getCnapName();
+            String name = filterCnapName(mOriginalConnection.getCnapName());
             int namePresentation = mOriginalConnection.getCnapNamePresentation();
             if (!Objects.equals(name, getCallerDisplayName()) ||
                     namePresentation != getCallerDisplayNamePresentation()) {
                 Log.v(this, "updateAddress, caller display name changed");
                 setCallerDisplayName(name, namePresentation);
             }
+
+            if (PhoneNumberUtils.isEmergencyNumber(mOriginalConnection.getAddress())) {
+                mTreatAsEmergencyCall = true;
+            }
+
+            // Changing the address of the connection can change whether it is an emergency call or
+            // not, which can impact whether it can be part of a conference.
+            refreshConferenceSupported();
         }
     }
 
@@ -606,6 +861,7 @@
         clearOriginalConnection();
         mOriginalConnectionExtras.clear();
         mOriginalConnection = originalConnection;
+        mOriginalConnection.setTelecomCallId(getTelecomCallId());
         getPhone().registerForPreciseCallStateChanged(
                 mHandler, MSG_PRECISE_CALL_STATE_CHANGED, null);
         getPhone().registerForHandoverStateChanged(
@@ -613,27 +869,53 @@
         getPhone().registerForRingbackTone(mHandler, MSG_RINGBACK_TONE, null);
         getPhone().registerForDisconnect(mHandler, MSG_DISCONNECT, null);
         getPhone().registerForSuppServiceNotification(mHandler, MSG_SUPP_SERVICE_NOTIFY, null);
+        getPhone().registerForOnHoldTone(mHandler, MSG_ON_HOLD_TONE, null);
+        getPhone().registerForInCallVoicePrivacyOn(mHandler, MSG_CDMA_VOICE_PRIVACY_ON, null);
+        getPhone().registerForInCallVoicePrivacyOff(mHandler, MSG_CDMA_VOICE_PRIVACY_OFF, null);
         mOriginalConnection.addPostDialListener(mPostDialListener);
         mOriginalConnection.addListener(mOriginalConnectionListener);
 
         // Set video state and capabilities
         setVideoState(mOriginalConnection.getVideoState());
-        setLocalVideoCapable(mOriginalConnection.isLocalVideoCapable());
-        setRemoteVideoCapable(mOriginalConnection.isRemoteVideoCapable());
+        setOriginalConnectionCapabilities(mOriginalConnection.getConnectionCapabilities());
         setWifi(mOriginalConnection.isWifi());
+        setAudioModeIsVoip(mOriginalConnection.getAudioModeIsVoip());
         setVideoProvider(mOriginalConnection.getVideoProvider());
         setAudioQuality(mOriginalConnection.getAudioQuality());
+        setTechnologyTypeExtra();
 
         // Post update of extras to the handler; extras are updated via the handler to ensure thread
-        // safety.
-        mHandler.obtainMessage(MSG_CONNECTION_EXTRAS_CHANGED,
-                mOriginalConnection.getConnectionExtras()).sendToTarget();
+        // safety. The Extras Bundle is cloned in case the original extras are modified while they
+        // are being added to mOriginalConnectionExtras in updateExtras.
+        Bundle connExtras = mOriginalConnection.getConnectionExtras();
+            mHandler.obtainMessage(MSG_CONNECTION_EXTRAS_CHANGED, connExtras == null ? null :
+                    new Bundle(connExtras)).sendToTarget();
+
+        if (PhoneNumberUtils.isEmergencyNumber(mOriginalConnection.getAddress())) {
+            mTreatAsEmergencyCall = true;
+        }
 
         if (isImsConnection()) {
             mWasImsConnection = true;
         }
         mIsMultiParty = mOriginalConnection.isMultiparty();
 
+        Bundle extrasToPut = new Bundle();
+        List<String> extrasToRemove = new ArrayList<>();
+        if (mOriginalConnection.isActiveCallDisconnectedOnAnswer()) {
+            extrasToPut.putBoolean(Connection.EXTRA_ANSWERING_DROPS_FG_CALL, true);
+        } else {
+            extrasToRemove.add(Connection.EXTRA_ANSWERING_DROPS_FG_CALL);
+        }
+
+        if (shouldSetDisableAddCallExtra()) {
+            extrasToPut.putBoolean(Connection.EXTRA_DISABLE_ADD_CALL, true);
+        } else {
+            extrasToRemove.add(Connection.EXTRA_DISABLE_ADD_CALL);
+        }
+        putExtras(extrasToPut);
+        removeExtras(extrasToRemove);
+
         // updateState can set mOriginalConnection to null if its state is DISCONNECTED, so this
         // should be executed *after* the above setters have run.
         updateState();
@@ -646,6 +928,153 @@
     }
 
     /**
+     * Filters the CNAP name to not include a list of names that are unhelpful to the user for
+     * Caller ID purposes.
+     */
+    private String filterCnapName(final String cnapName) {
+        if (cnapName == null) {
+            return null;
+        }
+        PersistableBundle carrierConfig = getCarrierConfig();
+        String[] filteredCnapNames = null;
+        if (carrierConfig != null) {
+            filteredCnapNames = carrierConfig.getStringArray(
+                    CarrierConfigManager.KEY_FILTERED_CNAP_NAMES_STRING_ARRAY);
+        }
+        if (filteredCnapNames != null) {
+            long cnapNameMatches = Arrays.asList(filteredCnapNames)
+                    .stream()
+                    .filter(filteredCnapName -> filteredCnapName.equals(cnapName.toUpperCase()))
+                    .count();
+            if (cnapNameMatches > 0) {
+                Log.i(this, "filterCnapName: Filtered CNAP Name: " + cnapName);
+                return "";
+            }
+        }
+        return cnapName;
+    }
+
+    /**
+     * Sets the EXTRA_CALL_TECHNOLOGY_TYPE extra on the connection to report back to Telecom.
+     */
+    private void setTechnologyTypeExtra() {
+        if (getPhone() != null) {
+            putExtra(TelecomManager.EXTRA_CALL_TECHNOLOGY_TYPE, getPhone().getPhoneType());
+        }
+    }
+
+    private void refreshDisableAddCall() {
+        if (shouldSetDisableAddCallExtra()) {
+            putExtra(Connection.EXTRA_DISABLE_ADD_CALL, true);
+        } else {
+            removeExtras(Connection.EXTRA_DISABLE_ADD_CALL);
+        }
+    }
+
+    private boolean shouldSetDisableAddCallExtra() {
+        boolean carrierShouldAllowAddCall = mOriginalConnection.shouldAllowAddCallDuringVideoCall();
+        if (carrierShouldAllowAddCall) {
+            return false;
+        }
+        Phone phone = getPhone();
+        if (phone == null) {
+            return false;
+        }
+        boolean isCurrentVideoCall = false;
+        boolean wasVideoCall = false;
+        boolean isVowifiEnabled = false;
+        if (phone instanceof ImsPhone) {
+            ImsPhone imsPhone = (ImsPhone) phone;
+            if (imsPhone.getForegroundCall() != null
+                    && imsPhone.getForegroundCall().getImsCall() != null) {
+                ImsCall call = imsPhone.getForegroundCall().getImsCall();
+                isCurrentVideoCall = call.isVideoCall();
+                wasVideoCall = call.wasVideoCall();
+            }
+
+            isVowifiEnabled = ImsUtil.isWfcEnabled(phone.getContext());
+        }
+
+        if (isCurrentVideoCall) {
+            return true;
+        } else if (wasVideoCall && mIsWifi && !isVowifiEnabled) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean hasHighDefAudioProperty() {
+        if (!mHasHighDefAudio) {
+            return false;
+        }
+
+        boolean isVideoCall = VideoProfile.isVideo(getVideoState());
+
+        PersistableBundle b = getCarrierConfig();
+        boolean canWifiCallsBeHdAudio =
+                b != null && b.getBoolean(CarrierConfigManager.KEY_WIFI_CALLS_CAN_BE_HD_AUDIO);
+        boolean canVideoCallsBeHdAudio =
+                b != null && b.getBoolean(CarrierConfigManager.KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO);
+        boolean shouldDisplayHdAudio =
+                b != null && b.getBoolean(CarrierConfigManager.KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL);
+
+        if (!shouldDisplayHdAudio) {
+            return false;
+        }
+
+        if (isVideoCall && !canVideoCallsBeHdAudio) {
+            return false;
+        }
+
+        if (mIsWifi && !canWifiCallsBeHdAudio) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private boolean canHoldImsCalls() {
+        PersistableBundle b = getCarrierConfig();
+        // Return true if the CarrierConfig is unavailable
+        return !doesDeviceRespectHoldCarrierConfig() || b == null ||
+                b.getBoolean(CarrierConfigManager.KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL);
+    }
+
+    private PersistableBundle getCarrierConfig() {
+        Phone phone = getPhone();
+        if (phone == null) {
+            return null;
+        }
+        return PhoneGlobals.getInstance().getCarrierConfigForSubId(phone.getSubId());
+    }
+
+    /**
+     * Determines if the device will respect the value of the
+     * {@link CarrierConfigManager#KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL} configuration option.
+     *
+     * @return {@code false} if the device always supports holding IMS calls, {@code true} if it
+     *      will use {@link CarrierConfigManager#KEY_ALLOW_HOLD_IN_IMS_CALL_BOOL} to determine if
+     *      hold is supported.
+     */
+    private boolean doesDeviceRespectHoldCarrierConfig() {
+        Phone phone = getPhone();
+        if (phone == null) {
+            return true;
+        }
+        return phone.getContext().getResources().getBoolean(
+                com.android.internal.R.bool.config_device_respects_hold_carrier_config);
+    }
+
+    /**
+     * Whether the connection should be treated as an emergency.
+     * @return {@code true} if the connection should be treated as an emergency call based
+     * on the number dialed, {@code false} otherwise.
+     */
+    protected boolean shouldTreatAsEmergencyCall() {
+        return mTreatAsEmergencyCall;
+    }
+
+    /**
      * Un-sets the underlying radio connection.
      */
     void clearOriginalConnection() {
@@ -656,6 +1085,9 @@
                 getPhone().unregisterForHandoverStateChanged(mHandler);
                 getPhone().unregisterForDisconnect(mHandler);
                 getPhone().unregisterForSuppServiceNotification(mHandler);
+                getPhone().unregisterForOnHoldTone(mHandler);
+                getPhone().unregisterForInCallVoicePrivacyOn(mHandler);
+                getPhone().unregisterForInCallVoicePrivacyOff(mHandler);
             }
             mOriginalConnection.removePostDialListener(mPostDialListener);
             mOriginalConnection.removeListener(mOriginalConnectionListener);
@@ -667,8 +1099,8 @@
         if (mOriginalConnection != null) {
             try {
                 // Hanging up a ringing call requires that we invoke call.hangup() as opposed to
-                // connection.hangup(). Without this change, the party originating the call will not
-                // get sent to voicemail if the user opts to reject the call.
+                // connection.hangup(). Without this change, the party originating the call
+                // will not get sent to voicemail if the user opts to reject the call.
                 if (isValidRingingCall()) {
                     Call call = getCall();
                     if (call != null) {
@@ -677,15 +1109,28 @@
                         Log.w(this, "Attempting to hangup a connection without backing call.");
                     }
                 } else {
-                    // We still prefer to call connection.hangup() for non-ringing calls in order
-                    // to support hanging-up specific calls within a conference call. If we invoked
-                    // call.hangup() while in a conference, we would end up hanging up the entire
-                    // conference call instead of the specific connection.
+                    // We still prefer to call connection.hangup() for non-ringing calls
+                    // in order to support hanging-up specific calls within a conference call.
+                    // If we invoked call.hangup() while in a conference, we would end up
+                    // hanging up the entire conference call instead of the specific connection.
                     mOriginalConnection.hangup();
                 }
             } catch (CallStateException e) {
                 Log.e(this, e, "Call to Connection.hangup failed with exception");
             }
+        } else {
+            if (getState() == STATE_DISCONNECTED) {
+                Log.i(this, "hangup called on an already disconnected call!");
+                close();
+            } else {
+                // There are a few cases where mOriginalConnection has not been set yet. For
+                // example, when the radio has to be turned on to make an emergency call,
+                // mOriginalConnection could not be set for many seconds.
+                setDisconnected(DisconnectCauseUtil.toTelecomDisconnectCause(
+                        android.telephony.DisconnectCause.LOCAL,
+                        "Local Disconnect before connection established."));
+                close();
+            }
         }
     }
 
@@ -770,6 +1215,9 @@
         return true;
     }
 
+    // Make sure the extras being passed into this method is a COPY of the original extras Bundle.
+    // We do not want the extras to be cleared or modified during mOriginalConnectionExtras.putAll
+    // below.
     protected void updateExtras(Bundle extras) {
         if (mOriginalConnection != null) {
             if (extras != null) {
@@ -799,12 +1247,7 @@
                     }
 
                     // Ensure extras are propagated to Telecom.
-                    Bundle connectionExtras = getExtras();
-                    if (connectionExtras == null) {
-                        connectionExtras = new Bundle();
-                    }
-                    connectionExtras.putAll(mOriginalConnectionExtras);
-                    setExtras(connectionExtras);
+                    putExtras(mOriginalConnectionExtras);
                 } else {
                     Log.d(this, "Extras update not required");
                 }
@@ -835,19 +1278,36 @@
         return true;
     }
 
-    void updateState() {
-       updateState(false);
+    void setStateOverride(Call.State state) {
+        mIsStateOverridden = true;
+        mConnectionOverriddenState = state;
+        // Need to keep track of the original connection's state before override.
+        mOriginalConnectionState = mOriginalConnection.getState();
+        updateStateInternal();
     }
 
-    void updateState(boolean force) {
+    void resetStateOverride() {
+        mIsStateOverridden = false;
+        updateStateInternal();
+    }
+
+    void updateStateInternal() {
         if (mOriginalConnection == null) {
             return;
         }
+        Call.State newState;
+        // If the state is overridden and the state of the original connection hasn't changed since,
+        // then we continue in the overridden state, else we go to the original connection's state.
+        if (mIsStateOverridden && mOriginalConnectionState == mOriginalConnection.getState()) {
+            newState = mConnectionOverriddenState;
+        } else {
+            newState = mOriginalConnection.getState();
+        }
+        int cause = mOriginalConnection.getDisconnectCause();
+        Log.v(this, "Update state from %s to %s for %s", mConnectionState, newState, this);
 
-        Call.State newState = mOriginalConnection.getState();
-        Log.v(this, "Update state from %s to %s for %s", mOriginalConnectionState, newState, this);
-        if (mOriginalConnectionState != newState || force) {
-            mOriginalConnectionState = newState;
+        if (mConnectionState != newState) {
+            mConnectionState = newState;
             switch (newState) {
                 case IDLE:
                     break;
@@ -859,24 +1319,51 @@
                     break;
                 case DIALING:
                 case ALERTING:
-                    setDialing();
+                    if (mOriginalConnection != null && mOriginalConnection.isPulledCall()) {
+                        setPulling();
+                    } else {
+                        setDialing();
+                    }
                     break;
                 case INCOMING:
                 case WAITING:
                     setRinging();
                     break;
                 case DISCONNECTED:
-                    setDisconnected(DisconnectCauseUtil.toTelecomDisconnectCause(
-                            mOriginalConnection.getDisconnectCause(),
-                            mOriginalConnection.getVendorDisconnectCause()));
-                    close();
+                    if (shouldTreatAsEmergencyCall()
+                            && (cause
+                            == android.telephony.DisconnectCause.EMERGENCY_TEMP_FAILURE
+                            || cause
+                            == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE)) {
+                        // We can get into a situation where the radio wants us to redial the
+                        // same emergency call on the other available slot. This will not set
+                        // the state to disconnected and will instead tell the
+                        // TelephonyConnectionService to
+                        // create a new originalConnection using the new Slot.
+                        fireOnOriginalConnectionRetryDial(cause
+                                == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE);
+                    } else {
+                        setDisconnected(DisconnectCauseUtil.toTelecomDisconnectCause(
+                                mOriginalConnection.getDisconnectCause(),
+                                mOriginalConnection.getVendorDisconnectCause()));
+                        close();
+                    }
                     break;
                 case DISCONNECTING:
                     break;
             }
         }
+    }
+
+    void updateState() {
+        if (mOriginalConnection == null) {
+            return;
+        }
+
+        updateStateInternal();
         updateStatusHints();
         updateConnectionCapabilities();
+        updateConnectionProperties();
         updateAddress();
         updateMultiparty();
     }
@@ -915,7 +1402,7 @@
      * Note: We post this to the mHandler to ensure that if a conference must be created as a
      * result of the multiparty state change, the conference creation happens on the correct
      * thread.  This ensures that the thread check in
-     * {@link com.android.internal.telephony.PhoneBase#checkCorrectThread(android.os.Handler)}
+     * {@link com.android.internal.telephony.Phone#checkCorrectThread(android.os.Handler)}
      * does not fire.
      *
      * @param isMultiParty {@code true} if this connection is multiparty, {@code false} otherwise.
@@ -957,10 +1444,61 @@
     }
 
     /**
-     * Applies capabilities specific to conferences termination to the
-     * {@code CallCapabilities} bit-mask.
+     * Determines if the current connection is video capable.
      *
-     * @param capabilities The {@code CallCapabilities} bit-mask.
+     * A connection is deemed to be video capable if the original connection capabilities state that
+     * both local and remote video is supported.
+     *
+     * @return {@code true} if the connection is video capable, {@code false} otherwise.
+     */
+    private boolean isVideoCapable() {
+        return can(mOriginalConnectionCapabilities, Capability.SUPPORTS_VT_LOCAL_BIDIRECTIONAL)
+                && can(mOriginalConnectionCapabilities,
+                Capability.SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
+    }
+
+    /**
+     * Determines if the current connection is an external connection.
+     *
+     * A connection is deemed to be external if the original connection capabilities state that it
+     * is.
+     *
+     * @return {@code true} if the connection is external, {@code false} otherwise.
+     */
+    private boolean isExternalConnection() {
+        return can(mOriginalConnectionCapabilities, Capability.IS_EXTERNAL_CONNECTION)
+                && can(mOriginalConnectionCapabilities,
+                Capability.IS_EXTERNAL_CONNECTION);
+    }
+
+    /**
+     * Determines if the current connection is pullable.
+     *
+     * A connection is deemed to be pullable if the original connection capabilities state that it
+     * is.
+     *
+     * @return {@code true} if the connection is pullable, {@code false} otherwise.
+     */
+    private boolean isPullable() {
+        return can(mOriginalConnectionCapabilities, Capability.IS_EXTERNAL_CONNECTION)
+                && can(mOriginalConnectionCapabilities, Capability.IS_PULLABLE);
+    }
+
+    /**
+     * Sets whether or not CDMA enhanced call privacy is enabled for this connection.
+     */
+    private void setCdmaVoicePrivacy(boolean isEnabled) {
+        if(mIsCdmaVoicePrivacyEnabled != isEnabled) {
+            mIsCdmaVoicePrivacyEnabled = isEnabled;
+            updateConnectionProperties();
+        }
+    }
+
+    /**
+     * Applies capabilities specific to conferences termination to the
+     * {@code ConnectionCapabilities} bit-mask.
+     *
+     * @param capabilities The {@code ConnectionCapabilities} bit-mask.
      * @return The capabilities with the IMS conference capabilities applied.
      */
     private int applyConferenceTerminationCapabilities(int capabilities) {
@@ -977,53 +1515,54 @@
     }
 
     /**
-     * Returns the local video capability state for the connection.
+     * Stores the new original connection capabilities, and applies them to the current connection,
+     * notifying any listeners as necessary.
      *
-     * @return {@code True} if the connection has local video capabilities.
+     * @param connectionCapabilities The original connection capabilties.
      */
-    public boolean isLocalVideoCapable() {
-        return mLocalVideoCapable;
-    }
-
-    /**
-     * Returns the remote video capability state for the connection.
-     *
-     * @return {@code True} if the connection has remote video capabilities.
-     */
-    public boolean isRemoteVideoCapable() {
-        return mRemoteVideoCapable;
-    }
-
-    /**
-     * Sets whether video capability is present locally.  Used during rebuild of the
-     * capabilities to set the video call capabilities.
-     *
-     * @param capable {@code True} if video capable.
-     */
-    public void setLocalVideoCapable(boolean capable) {
-        mLocalVideoCapable = capable;
+    public void setOriginalConnectionCapabilities(int connectionCapabilities) {
+        mOriginalConnectionCapabilities = connectionCapabilities;
         updateConnectionCapabilities();
+        updateConnectionProperties();
     }
 
     /**
-     * Sets whether video capability is present remotely.  Used during rebuild of the
-     * capabilities to set the video call capabilities.
+     * Called to apply the capabilities present in the {@link #mOriginalConnection} to this
+     * {@link Connection}.  Provides a mapping between the capabilities present in the original
+     * connection (see {@link com.android.internal.telephony.Connection.Capability}) and those in
+     * this {@link Connection}.
      *
-     * @param capable {@code True} if video capable.
+     * @param capabilities The capabilities bitmask from the {@link Connection}.
+     * @return the capabilities bitmask with the original connection capabilities remapped and
+     *      applied.
      */
-    public void setRemoteVideoCapable(boolean capable) {
-        mRemoteVideoCapable = capable;
-        updateConnectionCapabilities();
+    public int applyOriginalConnectionCapabilities(int capabilities) {
+        // We only support downgrading to audio if both the remote and local side support
+        // downgrading to audio.
+        boolean supportsDowngradeToAudio = can(mOriginalConnectionCapabilities,
+                Capability.SUPPORTS_DOWNGRADE_TO_VOICE_LOCAL |
+                        Capability.SUPPORTS_DOWNGRADE_TO_VOICE_REMOTE);
+        capabilities = changeBitmask(capabilities,
+                CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO, !supportsDowngradeToAudio);
+
+        capabilities = changeBitmask(capabilities, CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL,
+                can(mOriginalConnectionCapabilities, Capability.SUPPORTS_VT_REMOTE_BIDIRECTIONAL));
+
+        capabilities = changeBitmask(capabilities, CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL,
+                can(mOriginalConnectionCapabilities, Capability.SUPPORTS_VT_LOCAL_BIDIRECTIONAL));
+
+        return capabilities;
     }
 
     /**
      * Sets whether the call is using wifi. Used when rebuilding the capabilities to set or unset
-     * the {@link Connection#CAPABILITY_WIFI} capability.
+     * the {@link Connection#PROPERTY_WIFI} property.
      */
     public void setWifi(boolean isWifi) {
         mIsWifi = isWifi;
-        updateConnectionCapabilities();
+        updateConnectionProperties();
         updateStatusHints();
+        refreshDisableAddCall();
     }
 
     /**
@@ -1034,28 +1573,33 @@
     }
 
     /**
-     * Sets the current call audio quality. Used during rebuild of the capabilities
-     * to set or unset the {@link Connection#CAPABILITY_HIGH_DEF_AUDIO} capability.
+     * @return {@code true} if this is an outgoing call, {@code false} otherwise.
+     */
+    boolean isOutgoingCall() {
+        return mIsOutgoing;
+    }
+
+    /**
+     * Sets the current call audio quality. Used during rebuild of the properties
+     * to set or unset the {@link Connection#PROPERTY_HIGH_DEF_AUDIO} property.
      *
      * @param audioQuality The audio quality.
      */
     public void setAudioQuality(int audioQuality) {
         mHasHighDefAudio = audioQuality ==
                 com.android.internal.telephony.Connection.AUDIO_QUALITY_HIGH_DEFINITION;
-        updateConnectionCapabilities();
+        updateConnectionProperties();
     }
 
     void resetStateForConference() {
         if (getState() == Connection.STATE_HOLDING) {
-            if (mOriginalConnection.getState() == Call.State.ACTIVE) {
-                setActive();
-            }
+            resetStateOverride();
         }
     }
 
     boolean setHoldingForConference() {
         if (getState() == Connection.STATE_ACTIVE) {
-            setOnHold();
+            setStateOverride(Call.State.HOLDING);
             return true;
         }
         return false;
@@ -1072,6 +1616,14 @@
     }
 
     /**
+     * @return {@code true} if this connection supports pausing the outgoing video using the
+     * {@link android.telecom.VideoProfile#STATE_PAUSED} VideoState.
+     */
+    public boolean getVideoPauseSupported() {
+        return mIsVideoPauseSupported;
+    }
+
+    /**
      * Sets whether this connection supports conference calling.
      * @param isConferenceSupported {@code true} if conference calling is supported by this
      *                                         connection, {@code false} otherwise.
@@ -1093,7 +1645,9 @@
      *     otherwise.
      */
     protected boolean isImsConnection() {
-        return getOriginalConnection() instanceof ImsPhoneConnection;
+        com.android.internal.telephony.Connection originalConnection = getOriginalConnection();
+        return originalConnection != null &&
+                originalConnection.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS;
     }
 
     /**
@@ -1116,16 +1670,16 @@
     /**
      * Changes a capabilities bit-mask to add or remove a capability.
      *
-     * @param capabilities The capabilities bit-mask.
-     * @param capability The capability to change.
-     * @param enabled Whether the capability should be set or removed.
-     * @return The capabilities bit-mask with the capability changed.
+     * @param bitmask The bit-mask.
+     * @param bitfield The bit-field to change.
+     * @param enabled Whether the bit-field should be set or removed.
+     * @return The bit-mask with the bit-field changed.
      */
-    private int changeCapability(int capabilities, int capability, boolean enabled) {
+    private int changeBitmask(int bitmask, int bitfield, boolean enabled) {
         if (enabled) {
-            return capabilities | capability;
+            return bitmask | bitfield;
         } else {
-            return capabilities & ~capability;
+            return bitmask & ~bitfield;
         }
     }
 
@@ -1186,8 +1740,89 @@
         }
     }
 
+    private final void fireOnOriginalConnectionRetryDial(boolean isPermanentFailure) {
+        for (TelephonyConnectionListener l : mTelephonyListeners) {
+            l.onOriginalConnectionRetry(this, isPermanentFailure);
+        }
+    }
 
     /**
+     * Handles exiting ECM mode.
+     */
+    protected void handleExitedEcmMode() {
+        updateConnectionProperties();
+    }
+
+    /**
+     * Determines whether the connection supports conference calling.  A connection supports
+     * conference calling if it:
+     * 1. Is not an emergency call.
+     * 2. Carrier supports conference calls.
+     * 3. If call is a video call, carrier supports video conference calls.
+     * 4. If call is a wifi call and VoWIFI is disabled and carrier supports merging these calls.
+     */
+    private void refreshConferenceSupported() {
+        boolean isVideoCall = VideoProfile.isVideo(getVideoState());
+        Phone phone = getPhone();
+        if (phone == null) {
+            Log.w(this, "refreshConferenceSupported = false; phone is null");
+            if (isConferenceSupported()) {
+                setConferenceSupported(false);
+                notifyConferenceSupportedChanged(false);
+            }
+            return;
+        }
+
+        boolean isIms = phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS;
+        boolean isVoWifiEnabled = false;
+        if (isIms) {
+            ImsPhone imsPhone = (ImsPhone) phone;
+            isVoWifiEnabled = ImsUtil.isWfcEnabled(phone.getContext());
+        }
+        PhoneAccountHandle phoneAccountHandle = isIms ? PhoneUtils
+                .makePstnPhoneAccountHandle(phone.getDefaultPhone())
+                : PhoneUtils.makePstnPhoneAccountHandle(phone);
+        TelecomAccountRegistry telecomAccountRegistry = TelecomAccountRegistry
+                .getInstance(getPhone().getContext());
+        boolean isConferencingSupported = telecomAccountRegistry
+                .isMergeCallSupported(phoneAccountHandle);
+        boolean isImsConferencingSupported = telecomAccountRegistry
+                .isMergeImsCallSupported(phoneAccountHandle);
+        mIsCarrierVideoConferencingSupported = telecomAccountRegistry
+                .isVideoConferencingSupported(phoneAccountHandle);
+        boolean isMergeOfWifiCallsAllowedWhenVoWifiOff = telecomAccountRegistry
+                .isMergeOfWifiCallsAllowedWhenVoWifiOff(phoneAccountHandle);
+
+        Log.v(this, "refreshConferenceSupported : isConfSupp=%b, isImsConfSupp=%b, " +
+                "isVidConfSupp=%b, isMergeOfWifiAllowed=%b, " +
+                "isWifi=%b, isVoWifiEnabled=%b",
+                isConferencingSupported, isImsConferencingSupported,
+                mIsCarrierVideoConferencingSupported, isMergeOfWifiCallsAllowedWhenVoWifiOff,
+                isWifi(), isVoWifiEnabled);
+        boolean isConferenceSupported = true;
+        if (mTreatAsEmergencyCall) {
+            isConferenceSupported = false;
+            Log.d(this, "refreshConferenceSupported = false; emergency call");
+        } else if (!isConferencingSupported || isIms && !isImsConferencingSupported) {
+            isConferenceSupported = false;
+            Log.d(this, "refreshConferenceSupported = false; carrier doesn't support conf.");
+        } else if (isVideoCall && !mIsCarrierVideoConferencingSupported) {
+            isConferenceSupported = false;
+            Log.d(this, "refreshConferenceSupported = false; video conf not supported.");
+        } else if (!isMergeOfWifiCallsAllowedWhenVoWifiOff && isWifi() && !isVoWifiEnabled) {
+            isConferenceSupported = false;
+            Log.d(this,
+                    "refreshConferenceSupported = false; can't merge wifi calls when voWifi off.");
+        } else {
+            Log.d(this, "refreshConferenceSupported = true.");
+        }
+
+        if (isConferenceSupported != isConferenceSupported()) {
+            setConferenceSupported(isConferenceSupported);
+            notifyConferenceSupportedChanged(isConferenceSupported);
+        }
+    }
+    /**
      * Provides a mapping from extras keys which may be found in the
      * {@link com.android.internal.telephony.Connection} to their equivalents defined in
      * {@link android.telecom.Connection}.
@@ -1214,6 +1849,8 @@
         StringBuilder sb = new StringBuilder();
         sb.append("[TelephonyConnection objId:");
         sb.append(System.identityHashCode(this));
+        sb.append(" telecomCallID:");
+        sb.append(getTelecomCallId());
         sb.append(" type:");
         if (isImsConnection()) {
             sb.append("ims");
@@ -1226,6 +1863,8 @@
         sb.append(Connection.stateToString(getState()));
         sb.append(" capabilities:");
         sb.append(capabilitiesToString(getConnectionCapabilities()));
+        sb.append(" properties:");
+        sb.append(propertiesToString(getConnectionProperties()));
         sb.append(" address:");
         sb.append(Log.pii(getAddress()));
         sb.append(" originalConnection:");
@@ -1236,6 +1875,8 @@
         } else {
             sb.append("Y");
         }
+        sb.append(" confSupported:");
+        sb.append(mIsConferenceSupported ? "Y" : "N");
         sb.append("]");
         return sb.toString();
     }
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index a14a884..ded2468 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -21,35 +21,49 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.telecom.Conference;
 import android.telecom.Connection;
 import android.telecom.ConnectionRequest;
 import android.telecom.ConnectionService;
+import android.telecom.DisconnectCause;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
 import android.telephony.CarrierConfigManager;
-import android.telephony.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
+import android.telephony.RadioAccessFamily;
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import android.util.Pair;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.CallStateException;
+import com.android.internal.telephony.GsmCdmaPhone;
 import com.android.internal.telephony.IccCard;
 import com.android.internal.telephony.IccCardConstants;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
-import com.android.internal.telephony.PhoneProxy;
-import com.android.internal.telephony.SubscriptionController;
-import com.android.internal.telephony.cdma.CDMAPhone;
+import com.android.internal.telephony.imsphone.ImsExternalCallTracker;
+import com.android.internal.telephony.imsphone.ImsPhone;
 import com.android.phone.MMIDialogActivity;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
 
+import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Queue;
 import java.util.regex.Pattern;
 
 /**
@@ -61,17 +75,161 @@
     private static final Pattern CDMA_ACTIVATION_CODE_REGEX_PATTERN =
             Pattern.compile("\\*228[0-9]{0,2}");
 
+    private final TelephonyConnectionServiceProxy mTelephonyConnectionServiceProxy =
+            new TelephonyConnectionServiceProxy() {
+        @Override
+        public Collection<Connection> getAllConnections() {
+            return TelephonyConnectionService.this.getAllConnections();
+        }
+        @Override
+        public void addConference(TelephonyConference mTelephonyConference) {
+            TelephonyConnectionService.this.addConference(mTelephonyConference);
+        }
+        @Override
+        public void addConference(ImsConference mImsConference) {
+            TelephonyConnectionService.this.addConference(mImsConference);
+        }
+        @Override
+        public void removeConnection(Connection connection) {
+            TelephonyConnectionService.this.removeConnection(connection);
+        }
+        @Override
+        public void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
+                                          Connection connection) {
+            TelephonyConnectionService.this
+                    .addExistingConnection(phoneAccountHandle, connection);
+        }
+        @Override
+        public void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
+                Connection connection, Conference conference) {
+            TelephonyConnectionService.this
+                    .addExistingConnection(phoneAccountHandle, connection, conference);
+        }
+        @Override
+        public void addConnectionToConferenceController(TelephonyConnection connection) {
+            TelephonyConnectionService.this.addConnectionToConferenceController(connection);
+        }
+    };
+
     private final TelephonyConferenceController mTelephonyConferenceController =
-            new TelephonyConferenceController(this);
+            new TelephonyConferenceController(mTelephonyConnectionServiceProxy);
     private final CdmaConferenceController mCdmaConferenceController =
             new CdmaConferenceController(this);
     private final ImsConferenceController mImsConferenceController =
-            new ImsConferenceController(this);
+            new ImsConferenceController(TelecomAccountRegistry.getInstance(this),
+                    mTelephonyConnectionServiceProxy);
 
     private ComponentName mExpectedComponentName = null;
-    private EmergencyCallHelper mEmergencyCallHelper;
+    private RadioOnHelper mRadioOnHelper;
     private EmergencyTonePlayer mEmergencyTonePlayer;
 
+    // Contains one TelephonyConnection that has placed a call and a memory of which Phones it has
+    // already tried to connect with. There should be only one TelephonyConnection trying to place a
+    // call at one time. We also only access this cache from a TelephonyConnection that wishes to
+    // redial, so we use a WeakReference that will become stale once the TelephonyConnection is
+    // destroyed.
+    @VisibleForTesting
+    public Pair<WeakReference<TelephonyConnection>, Queue<Phone>> mEmergencyRetryCache;
+
+    /**
+     * Keeps track of the status of a SIM slot.
+     */
+    private static class SlotStatus {
+        public int slotId;
+        // RAT capabilities
+        public int capabilities;
+        // By default, we will assume that the slots are not locked.
+        public boolean isLocked = false;
+
+        public SlotStatus(int slotId, int capabilities) {
+            this.slotId = slotId;
+            this.capabilities = capabilities;
+        }
+    }
+
+    // SubscriptionManager Proxy interface for testing
+    public interface SubscriptionManagerProxy {
+        int getDefaultVoicePhoneId();
+        int getSimStateForSlotIdx(int slotId);
+        int getPhoneId(int subId);
+    }
+
+    private SubscriptionManagerProxy mSubscriptionManagerProxy = new SubscriptionManagerProxy() {
+        @Override
+        public int getDefaultVoicePhoneId() {
+            return SubscriptionManager.getDefaultVoicePhoneId();
+        }
+
+        @Override
+        public int getSimStateForSlotIdx(int slotId) {
+            return SubscriptionManager.getSimStateForSlotIndex(slotId);
+        }
+
+        @Override
+        public int getPhoneId(int subId) {
+            return SubscriptionManager.getPhoneId(subId);
+        }
+    };
+
+    // TelephonyManager Proxy interface for testing
+    public interface TelephonyManagerProxy {
+        int getPhoneCount();
+        boolean hasIccCard(int slotId);
+    }
+
+    private TelephonyManagerProxy mTelephonyManagerProxy = new TelephonyManagerProxy() {
+        private final TelephonyManager sTelephonyManager = TelephonyManager.getDefault();
+
+        @Override
+        public int getPhoneCount() {
+            return sTelephonyManager.getPhoneCount();
+        }
+
+        @Override
+        public boolean hasIccCard(int slotId) {
+            return sTelephonyManager.hasIccCard(slotId);
+        }
+    };
+
+    //PhoneFactory proxy interface for testing
+    public interface PhoneFactoryProxy {
+        Phone getPhone(int index);
+        Phone getDefaultPhone();
+        Phone[] getPhones();
+    }
+
+    private PhoneFactoryProxy mPhoneFactoryProxy = new PhoneFactoryProxy() {
+        @Override
+        public Phone getPhone(int index) {
+            return PhoneFactory.getPhone(index);
+        }
+
+        @Override
+        public Phone getDefaultPhone() {
+            return PhoneFactory.getDefaultPhone();
+        }
+
+        @Override
+        public Phone[] getPhones() {
+            return PhoneFactory.getPhones();
+        }
+    };
+
+    @VisibleForTesting
+    public void setSubscriptionManagerProxy(SubscriptionManagerProxy proxy) {
+        mSubscriptionManagerProxy = proxy;
+    }
+
+    @VisibleForTesting
+    public void setTelephonyManagerProxy(TelephonyManagerProxy proxy) {
+        mTelephonyManagerProxy = proxy;
+    }
+
+    @VisibleForTesting
+    public void setPhoneFactoryProxy(PhoneFactoryProxy proxy) {
+        mPhoneFactoryProxy = proxy;
+    }
+
     /**
      * A listener to actionable events specific to the TelephonyConnection.
      */
@@ -81,11 +239,17 @@
         public void onOriginalConnectionConfigured(TelephonyConnection c) {
             addConnectionToConferenceController(c);
         }
+
+        @Override
+        public void onOriginalConnectionRetry(TelephonyConnection c, boolean isPermanentFailure) {
+            retryOutgoingOriginalConnection(c, isPermanentFailure);
+        }
     };
 
     @Override
     public void onCreate() {
         super.onCreate();
+        Log.initLogging(this);
         mExpectedComponentName = new ComponentName(this, this.getClass());
         mEmergencyTonePlayer = new EmergencyTonePlayer(this);
         TelecomAccountRegistry.getInstance(this).setTelephonyConnectionService(this);
@@ -107,7 +271,7 @@
         }
 
         String scheme = handle.getScheme();
-        final String number;
+        String number;
         if (PhoneAccount.SCHEME_VOICEMAIL.equals(scheme)) {
             // TODO: We don't check for SecurityException here (requires
             // CALL_PRIVILEGED permission).
@@ -171,16 +335,186 @@
             }
         }
 
-        boolean isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(this, number);
+        // Convert into emergency number if necessary
+        // This is required in some regions (e.g. Taiwan).
+        if (!PhoneNumberUtils.isLocalEmergencyNumber(this, number)) {
+            final Phone phone = getPhoneForAccount(request.getAccountHandle(), false);
+            // We only do the conversion if the phone is not in service. The un-converted
+            // emergency numbers will go to the correct destination when the phone is in-service,
+            // so they will only need the special emergency call setup when the phone is out of
+            // service.
+            if (phone == null || phone.getServiceState().getState()
+                    != ServiceState.STATE_IN_SERVICE) {
+                String convertedNumber = PhoneNumberUtils.convertToEmergencyNumber(this, number);
+                if (!TextUtils.equals(convertedNumber, number)) {
+                    Log.i(this, "onCreateOutgoingConnection, converted to emergency number");
+                    number = convertedNumber;
+                    handle = Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null);
+                }
+            }
+        }
+        final String numberToDial = number;
 
-        // Get the right phone object from the account data passed in.
-        final Phone phone = getPhoneForAccount(request.getAccountHandle(), isEmergencyNumber);
+        final boolean isEmergencyNumber =
+                PhoneNumberUtils.isLocalEmergencyNumber(this, numberToDial);
+
+
+        final boolean isAirplaneModeOn = Settings.Global.getInt(getContentResolver(),
+                Settings.Global.AIRPLANE_MODE_ON, 0) > 0;
+
+        boolean needToTurnOnRadio = (isEmergencyNumber && (!isRadioOn() || isAirplaneModeOn))
+                || isRadioPowerDownOnBluetooth();
+
+        if (needToTurnOnRadio) {
+            final Uri resultHandle = handle;
+            // By default, Connection based on the default Phone, since we need to return to Telecom
+            // now.
+            final int originalPhoneType = PhoneFactory.getDefaultPhone().getPhoneType();
+            final Connection resultConnection = getTelephonyConnection(request, numberToDial,
+                    isEmergencyNumber, resultHandle, PhoneFactory.getDefaultPhone());
+            if (mRadioOnHelper == null) {
+                mRadioOnHelper = new RadioOnHelper(this);
+            }
+            mRadioOnHelper.triggerRadioOnAndListen(new RadioOnStateListener.Callback() {
+                @Override
+                public void onComplete(RadioOnStateListener listener, boolean isRadioReady) {
+                    handleOnComplete(isRadioReady, isEmergencyNumber, resultConnection, request,
+                            numberToDial, resultHandle, originalPhoneType);
+                }
+
+                @Override
+                public boolean isOkToCall(Phone phone, int serviceState) {
+                    if (isEmergencyNumber) {
+                        // We currently only look to make sure that the radio is on before dialing.
+                        // We should be able to make emergency calls at any time after the radio has
+                        // been powered on and isn't in the UNAVAILABLE state, even if it is
+                        // reporting the OUT_OF_SERVICE state.
+                        return (phone.getState() == PhoneConstants.State.OFFHOOK)
+                            || phone.getServiceStateTracker().isRadioOn();
+                    } else {
+                        // It is not an emergency number, so wait until we are in service and ready
+                        // to make calls. This can happen when we power down the radio on bluetooth
+                        // to save power on watches.
+                        return (phone.getState() == PhoneConstants.State.OFFHOOK)
+                            || serviceState == ServiceState.STATE_IN_SERVICE;
+                    }
+                }
+            });
+            // Return the still unconnected GsmConnection and wait for the Radios to boot before
+            // connecting it to the underlying Phone.
+            return resultConnection;
+        } else {
+            if (!canAddCall() && !isEmergencyNumber) {
+                Log.d(this, "onCreateOutgoingConnection, cannot add call .");
+                return Connection.createFailedConnection(
+                        new DisconnectCause(DisconnectCause.ERROR,
+                                getApplicationContext().getText(
+                                        R.string.incall_error_cannot_add_call),
+                                getApplicationContext().getText(
+                                        R.string.incall_error_cannot_add_call),
+                                "Add call restricted due to ongoing video call"));
+            }
+
+            // Get the right phone object from the account data passed in.
+            final Phone phone = getPhoneForAccount(request.getAccountHandle(), isEmergencyNumber);
+            Connection resultConnection = getTelephonyConnection(request, numberToDial,
+                    isEmergencyNumber, handle, phone);
+            // If there was a failure, the resulting connection will not be a TelephonyConnection,
+            // so don't place the call!
+            if(resultConnection instanceof TelephonyConnection) {
+                placeOutgoingConnection((TelephonyConnection) resultConnection, phone, request);
+            }
+            return resultConnection;
+        }
+    }
+
+    /**
+     * Whether the cellular radio is power off because the device is on Bluetooth.
+     */
+    private boolean isRadioPowerDownOnBluetooth() {
+        final Context context = getApplicationContext();
+        final boolean allowed = context.getResources().getBoolean(
+                R.bool.config_allowRadioPowerDownOnBluetooth);
+        final int cellOn = Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.CELL_ON,
+                PhoneConstants.CELL_OFF_FLAG);
+        return (allowed && cellOn == PhoneConstants.CELL_ON_FLAG && !isRadioOn());
+    }
+
+    /**
+     * Handle the onComplete callback of RadioOnStateListener.
+     */
+    private void handleOnComplete(boolean isRadioReady, boolean isEmergencyNumber,
+            Connection originalConnection, ConnectionRequest request, String numberToDial,
+            Uri handle, int originalPhoneType) {
+        // Make sure the Call has not already been canceled by the user.
+        if (originalConnection.getState() == Connection.STATE_DISCONNECTED) {
+            Log.i(this, "Call disconnected before the outgoing call was placed. Skipping call "
+                    + "placement.");
+            return;
+        }
+        if (isRadioReady) {
+            // Get the right phone object since the radio has been turned on
+            // successfully.
+            final Phone phone = getPhoneForAccount(request.getAccountHandle(),
+                    isEmergencyNumber);
+            // If the PhoneType of the Phone being used is different than the Default Phone, then we
+            // need create a new Connection using that PhoneType and replace it in Telecom.
+            if (phone.getPhoneType() != originalPhoneType) {
+                Connection repConnection = getTelephonyConnection(request, numberToDial,
+                        isEmergencyNumber, handle, phone);
+                // If there was a failure, the resulting connection will not be a
+                // TelephonyConnection, so don't place the call, just return!
+                if (repConnection instanceof TelephonyConnection) {
+                    placeOutgoingConnection((TelephonyConnection) repConnection, phone, request);
+                }
+                // Notify Telecom of the new Connection type.
+                // TODO: Switch out the underlying connection instead of creating a new
+                // one and causing UI Jank.
+                addExistingConnection(PhoneUtils.makePstnPhoneAccountHandle(phone), repConnection);
+                // Remove the old connection from Telecom after.
+                originalConnection.setDisconnected(
+                        DisconnectCauseUtil.toTelecomDisconnectCause(
+                                android.telephony.DisconnectCause.OUTGOING_CANCELED,
+                                "Reconnecting outgoing Emergency Call."));
+                originalConnection.destroy();
+            } else {
+                placeOutgoingConnection((TelephonyConnection) originalConnection, phone, request);
+            }
+        } else {
+            Log.w(this, "onCreateOutgoingConnection, failed to turn on radio");
+            originalConnection.setDisconnected(
+                    DisconnectCauseUtil.toTelecomDisconnectCause(
+                            android.telephony.DisconnectCause.POWER_OFF,
+                            "Failed to turn on radio."));
+            originalConnection.destroy();
+        }
+    }
+
+    /**
+     * @return {@code true} if any other call is disabling the ability to add calls, {@code false}
+     *      otherwise.
+     */
+    private boolean canAddCall() {
+        Collection<Connection> connections = getAllConnections();
+        for (Connection connection : connections) {
+            if (connection.getExtras() != null &&
+                    connection.getExtras().getBoolean(Connection.EXTRA_DISABLE_ADD_CALL, false)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private Connection getTelephonyConnection(final ConnectionRequest request, final String number,
+            boolean isEmergencyNumber, final Uri handle, Phone phone) {
+
         if (phone == null) {
             final Context context = getApplicationContext();
             if (context.getResources().getBoolean(R.bool.config_checkSimStateBeforeOutgoingCall)) {
                 // Check SIM card state before the outgoing call.
                 // Start the SIM unlock activity if PIN_REQUIRED.
-                final Phone defaultPhone = PhoneFactory.getDefaultPhone();
+                final Phone defaultPhone = mPhoneFactoryProxy.getDefaultPhone();
                 final IccCard icc = defaultPhone.getIccCard();
                 IccCardConstants.State simState = IccCardConstants.State.UNKNOWN;
                 if (icc != null) {
@@ -218,11 +552,12 @@
         // when voice RAT is OOS but Data RAT is present.
         int state = phone.getServiceState().getState();
         if (state == ServiceState.STATE_OUT_OF_SERVICE) {
-            if (phone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
+            int dataNetType = phone.getServiceState().getDataNetworkType();
+            if (dataNetType == TelephonyManager.NETWORK_TYPE_LTE ||
+                    dataNetType == TelephonyManager.NETWORK_TYPE_LTE_CA) {
                 state = phone.getServiceState().getDataRegState();
             }
         }
-        boolean useEmergencyCallHelper = false;
 
         // If we're dialing a non-emergency number and the phone is in ECM mode, reject the call if
         // carrier configuration specifies that we cannot make non-emergency calls in ECM mode.
@@ -238,17 +573,13 @@
             if (!allowNonEmergencyCalls) {
                 return Connection.createFailedConnection(
                         DisconnectCauseUtil.toTelecomDisconnectCause(
-                                DisconnectCause.CDMA_NOT_EMERGENCY,
+                                android.telephony.DisconnectCause.CDMA_NOT_EMERGENCY,
                                 "Cannot make non-emergency call in ECM mode."
                         ));
             }
         }
 
-        if (isEmergencyNumber) {
-            if (!phone.isRadioOn()) {
-                useEmergencyCallHelper = true;
-            }
-        } else {
+        if (!isEmergencyNumber) {
             switch (state) {
                 case ServiceState.STATE_IN_SERVICE:
                 case ServiceState.STATE_EMERGENCY_ONLY:
@@ -264,6 +595,10 @@
                                         "ServiceState.STATE_OUT_OF_SERVICE"));
                     }
                 case ServiceState.STATE_POWER_OFF:
+                    // Don't disconnect if radio is power off because the device is on Bluetooth.
+                    if (isRadioPowerDownOnBluetooth()) {
+                        break;
+                    }
                     return Connection.createFailedConnection(
                             DisconnectCauseUtil.toTelecomDisconnectCause(
                                     android.telephony.DisconnectCause.POWER_OFF,
@@ -277,8 +612,31 @@
             }
         }
 
+        final Context context = getApplicationContext();
+        if (VideoProfile.isVideo(request.getVideoState()) && isTtyModeEnabled(context) &&
+                !isEmergencyNumber) {
+            return Connection.createFailedConnection(DisconnectCauseUtil.toTelecomDisconnectCause(
+                    android.telephony.DisconnectCause.VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED));
+        }
+
+        // Check for additional limits on CDMA phones.
+        final Connection failedConnection = checkAdditionalOutgoingCallLimits(phone);
+        if (failedConnection != null) {
+            return failedConnection;
+        }
+
+        // Check roaming status to see if we should block custom call forwarding codes
+        if (blockCallForwardingNumberWhileRoaming(phone, number)) {
+            return Connection.createFailedConnection(
+                    DisconnectCauseUtil.toTelecomDisconnectCause(
+                            android.telephony.DisconnectCause.DIALED_CALL_FORWARDING_WHILE_ROAMING,
+                            "Call forwarding while roaming"));
+        }
+
+
         final TelephonyConnection connection =
-                createConnectionFor(phone, null, true /* isOutgoing */, request.getAccountHandle());
+                createConnectionFor(phone, null, true /* isOutgoing */, request.getAccountHandle(),
+                        request.getTelecomCallId(), request.getAddress(), request.getVideoState());
         if (connection == null) {
             return Connection.createFailedConnection(
                     DisconnectCauseUtil.toTelecomDisconnectCause(
@@ -289,34 +647,6 @@
         connection.setInitializing();
         connection.setVideoState(request.getVideoState());
 
-        if (useEmergencyCallHelper) {
-            if (mEmergencyCallHelper == null) {
-                mEmergencyCallHelper = new EmergencyCallHelper(this);
-            }
-            mEmergencyCallHelper.startTurnOnRadioSequence(phone,
-                    new EmergencyCallHelper.Callback() {
-                        @Override
-                        public void onComplete(boolean isRadioReady) {
-                            if (connection.getState() == Connection.STATE_DISCONNECTED) {
-                                // If the connection has already been disconnected, do nothing.
-                            } else if (isRadioReady) {
-                                connection.setInitialized();
-                                placeOutgoingConnection(connection, phone, request);
-                            } else {
-                                Log.d(this, "onCreateOutgoingConnection, failed to turn on radio");
-                                connection.setDisconnected(
-                                        DisconnectCauseUtil.toTelecomDisconnectCause(
-                                                android.telephony.DisconnectCause.POWER_OFF,
-                                                "Failed to turn on radio."));
-                                connection.destroy();
-                            }
-                        }
-                    });
-
-        } else {
-            placeOutgoingConnection(connection, phone, request);
-        }
-
         return connection;
     }
 
@@ -325,8 +655,17 @@
             PhoneAccountHandle connectionManagerPhoneAccount,
             ConnectionRequest request) {
         Log.i(this, "onCreateIncomingConnection, request: " + request);
-
-        Phone phone = getPhoneForAccount(request.getAccountHandle(), false);
+        // If there is an incoming emergency CDMA Call (while the phone is in ECBM w/ No SIM),
+        // make sure the PhoneAccount lookup retrieves the default Emergency Phone.
+        PhoneAccountHandle accountHandle = request.getAccountHandle();
+        boolean isEmergency = false;
+        if (accountHandle != null && PhoneUtils.EMERGENCY_ACCOUNT_HANDLE_ID.equals(
+                accountHandle.getId())) {
+            Log.i(this, "Emergency PhoneAccountHandle is being used for incoming call... " +
+                    "Treat as an Emergency Call.");
+            isEmergency = true;
+        }
+        Phone phone = getPhoneForAccount(accountHandle, isEmergency);
         if (phone == null) {
             return Connection.createFailedConnection(
                     DisconnectCauseUtil.toTelecomDisconnectCause(
@@ -351,9 +690,15 @@
             return Connection.createCanceledConnection();
         }
 
+        // We should rely on the originalConnection to get the video state.  The request coming
+        // from Telecom does not know the video state of the incoming call.
+        int videoState = originalConnection != null ? originalConnection.getVideoState() :
+                VideoProfile.STATE_AUDIO_ONLY;
+
         Connection connection =
                 createConnectionFor(phone, originalConnection, false /* isOutgoing */,
-                        request.getAccountHandle());
+                        request.getAccountHandle(), request.getTelecomCallId(),
+                        request.getAddress(), videoState);
         if (connection == null) {
             return Connection.createCanceledConnection();
         } else {
@@ -361,6 +706,21 @@
         }
     }
 
+    /**
+     * Called by the {@link ConnectionService} when a newly created {@link Connection} has been
+     * added to the {@link ConnectionService} and sent to Telecom.  Here it is safe to send
+     * connection events.
+     *
+     * @param connection the {@link Connection}.
+     */
+    @Override
+    public void onCreateConnectionComplete(Connection connection) {
+        if (connection instanceof TelephonyConnection) {
+            TelephonyConnection telephonyConnection = (TelephonyConnection) connection;
+            maybeSendInternationalCallEvent(telephonyConnection);
+        }
+    }
+
     @Override
     public void triggerConferenceRecalculate() {
         if (mTelephonyConferenceController.shouldRecalculate()) {
@@ -372,34 +732,68 @@
     public Connection onCreateUnknownConnection(PhoneAccountHandle connectionManagerPhoneAccount,
             ConnectionRequest request) {
         Log.i(this, "onCreateUnknownConnection, request: " + request);
-
-        Phone phone = getPhoneForAccount(request.getAccountHandle(), false);
+        // Use the registered emergency Phone if the PhoneAccountHandle is set to Telephony's
+        // Emergency PhoneAccount
+        PhoneAccountHandle accountHandle = request.getAccountHandle();
+        boolean isEmergency = false;
+        if (accountHandle != null && PhoneUtils.EMERGENCY_ACCOUNT_HANDLE_ID.equals(
+                accountHandle.getId())) {
+            Log.i(this, "Emergency PhoneAccountHandle is being used for unknown call... " +
+                    "Treat as an Emergency Call.");
+            isEmergency = true;
+        }
+        Phone phone = getPhoneForAccount(accountHandle, isEmergency);
         if (phone == null) {
             return Connection.createFailedConnection(
                     DisconnectCauseUtil.toTelecomDisconnectCause(
                             android.telephony.DisconnectCause.ERROR_UNSPECIFIED,
                             "Phone is null"));
         }
+        Bundle extras = request.getExtras();
 
         final List<com.android.internal.telephony.Connection> allConnections = new ArrayList<>();
-        final Call ringingCall = phone.getRingingCall();
-        if (ringingCall.hasConnections()) {
-            allConnections.addAll(ringingCall.getConnections());
-        }
-        final Call foregroundCall = phone.getForegroundCall();
-        if ((foregroundCall.getState() != Call.State.DISCONNECTED)
-                && (foregroundCall.hasConnections())) {
-            allConnections.addAll(foregroundCall.getConnections());
-        }
-        if (phone.getImsPhone() != null) {
-            final Call imsFgCall = phone.getImsPhone().getForegroundCall();
-            if ((imsFgCall.getState() != Call.State.DISCONNECTED) && imsFgCall.hasConnections()) {
-                allConnections.addAll(imsFgCall.getConnections());
+
+        // Handle the case where an unknown connection has an IMS external call ID specified; we can
+        // skip the rest of the guesswork and just grad that unknown call now.
+        if (phone.getImsPhone() != null && extras != null &&
+                extras.containsKey(ImsExternalCallTracker.EXTRA_IMS_EXTERNAL_CALL_ID)) {
+
+            ImsPhone imsPhone = (ImsPhone) phone.getImsPhone();
+            ImsExternalCallTracker externalCallTracker = imsPhone.getExternalCallTracker();
+            int externalCallId = extras.getInt(ImsExternalCallTracker.EXTRA_IMS_EXTERNAL_CALL_ID,
+                    -1);
+
+            if (externalCallTracker != null) {
+                com.android.internal.telephony.Connection connection =
+                        externalCallTracker.getConnectionById(externalCallId);
+
+                if (connection != null) {
+                    allConnections.add(connection);
+                }
             }
         }
-        final Call backgroundCall = phone.getBackgroundCall();
-        if (backgroundCall.hasConnections()) {
-            allConnections.addAll(phone.getBackgroundCall().getConnections());
+
+        if (allConnections.isEmpty()) {
+            final Call ringingCall = phone.getRingingCall();
+            if (ringingCall.hasConnections()) {
+                allConnections.addAll(ringingCall.getConnections());
+            }
+            final Call foregroundCall = phone.getForegroundCall();
+            if ((foregroundCall.getState() != Call.State.DISCONNECTED)
+                    && (foregroundCall.hasConnections())) {
+                allConnections.addAll(foregroundCall.getConnections());
+            }
+            if (phone.getImsPhone() != null) {
+                final Call imsFgCall = phone.getImsPhone().getForegroundCall();
+                if ((imsFgCall.getState() != Call.State.DISCONNECTED) && imsFgCall
+                        .hasConnections()) {
+                    allConnections.addAll(imsFgCall.getConnections());
+                }
+            }
+            final Call backgroundCall = phone.getBackgroundCall();
+            if (backgroundCall.hasConnections()) {
+                allConnections.addAll(phone.getBackgroundCall().getConnections());
+            }
         }
 
         com.android.internal.telephony.Connection unknownConnection = null;
@@ -416,10 +810,16 @@
             return Connection.createCanceledConnection();
         }
 
+        // We should rely on the originalConnection to get the video state.  The request coming
+        // from Telecom does not know the video state of the unknown call.
+        int videoState = unknownConnection != null ? unknownConnection.getVideoState() :
+                VideoProfile.STATE_AUDIO_ONLY;
+
         TelephonyConnection connection =
                 createConnectionFor(phone, unknownConnection,
                         !unknownConnection.isIncoming() /* isOutgoing */,
-                        request.getAccountHandle());
+                        request.getAccountHandle(), request.getTelecomCallId(),
+                        request.getAddress(), videoState);
 
         if (connection == null) {
             return Connection.createCanceledConnection();
@@ -429,29 +829,170 @@
         }
     }
 
+    /**
+     * Conferences two connections.
+     *
+     * Note: The {@link android.telecom.RemoteConnection#setConferenceableConnections(List)} API has
+     * a limitation in that it can only specify conferenceables which are instances of
+     * {@link android.telecom.RemoteConnection}.  In the case of an {@link ImsConference}, the
+     * regular {@link Connection#setConferenceables(List)} API properly handles being able to merge
+     * a {@link Conference} and a {@link Connection}.  As a result when, merging a
+     * {@link android.telecom.RemoteConnection} into a {@link android.telecom.RemoteConference}
+     * require merging a {@link ConferenceParticipantConnection} which is a child of the
+     * {@link Conference} with a {@link TelephonyConnection}.  The
+     * {@link ConferenceParticipantConnection} class does not have the capability to initiate a
+     * conference merge, so we need to call
+     * {@link TelephonyConnection#performConference(Connection)} on either {@code connection1} or
+     * {@code connection2}, one of which is an instance of {@link TelephonyConnection}.
+     *
+     * @param connection1 A connection to merge into a conference call.
+     * @param connection2 A connection to merge into a conference call.
+     */
     @Override
     public void onConference(Connection connection1, Connection connection2) {
-        if (connection1 instanceof TelephonyConnection &&
-                connection2 instanceof TelephonyConnection) {
-            ((TelephonyConnection) connection1).performConference(
-                (TelephonyConnection) connection2);
+        if (connection1 instanceof TelephonyConnection) {
+            ((TelephonyConnection) connection1).performConference(connection2);
+        } else if (connection2 instanceof TelephonyConnection) {
+            ((TelephonyConnection) connection2).performConference(connection1);
+        } else {
+            Log.w(this, "onConference - cannot merge connections " +
+                    "Connection1: %s, Connection2: %2", connection1, connection2);
+        }
+    }
+
+    private boolean blockCallForwardingNumberWhileRoaming(Phone phone, String number) {
+        if (phone == null || TextUtils.isEmpty(number) || !phone.getServiceState().getRoaming()) {
+            return false;
+        }
+        String[] blockPrefixes = null;
+        CarrierConfigManager cfgManager = (CarrierConfigManager)
+                phone.getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        if (cfgManager != null) {
+            blockPrefixes = cfgManager.getConfigForSubId(phone.getSubId()).getStringArray(
+                    CarrierConfigManager.KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY);
         }
 
+        if (blockPrefixes != null) {
+            for (String prefix : blockPrefixes) {
+                if (number.startsWith(prefix)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private boolean isRadioOn() {
+        boolean result = false;
+        for (Phone phone : mPhoneFactoryProxy.getPhones()) {
+            result |= phone.isRadioOn();
+        }
+        return result;
+    }
+
+    private Pair<WeakReference<TelephonyConnection>, Queue<Phone>> makeCachedConnectionPhonePair(
+            TelephonyConnection c) {
+        Queue<Phone> phones = new LinkedList<>(Arrays.asList(mPhoneFactoryProxy.getPhones()));
+        return new Pair<>(new WeakReference<>(c), phones);
+    }
+
+    // Update the mEmergencyRetryCache by removing the Phone used to call the last failed emergency
+    // number and then moving it to the back of the queue if it is not a permanent failure cause
+    // from the modem.
+    private void updateCachedConnectionPhonePair(TelephonyConnection c,
+            boolean isPermanentFailure) {
+        // No cache exists, create a new one.
+        if (mEmergencyRetryCache == null) {
+            Log.i(this, "updateCachedConnectionPhonePair, cache is null. Generating new cache");
+            mEmergencyRetryCache = makeCachedConnectionPhonePair(c);
+        // Cache is stale, create a new one with the new TelephonyConnection.
+        } else if (mEmergencyRetryCache.first.get() != c) {
+            Log.i(this, "updateCachedConnectionPhonePair, cache is stale. Regenerating.");
+            mEmergencyRetryCache = makeCachedConnectionPhonePair(c);
+        }
+
+        Queue<Phone> cachedPhones = mEmergencyRetryCache.second;
+        Phone phoneUsed = c.getPhone();
+        if (phoneUsed == null) {
+            return;
+        }
+        // Remove phone used from the list, but for temporary fail cause, it will be added
+        // back to list further in this method. However in case of permanent failure, the
+        // phone shouldn't be reused, hence it will not be added back again.
+        cachedPhones.remove(phoneUsed);
+        Log.i(this, "updateCachedConnectionPhonePair, isPermanentFailure:" + isPermanentFailure);
+        if (!isPermanentFailure) {
+            // In case of temporary failure, add the phone back, this will result adding it
+            // to tail of list mEmergencyRetryCache.second, giving other phone more
+            // priority and that is what we want.
+            cachedPhones.offer(phoneUsed);
+        }
+    }
+
+    /**
+     * Updates a cache containing all of the slots that are available for redial at any point.
+     *
+     * - If a Connection returns with the disconnect cause EMERGENCY_TEMP_FAILURE, keep that phone
+     * in the cache, but move it to the lowest priority in the list. Then, place the emergency call
+     * on the next phone in the list.
+     * - If a Connection returns with the disconnect cause EMERGENCY_PERM_FAILURE, remove that phone
+     * from the cache and pull another phone from the cache to place the emergency call.
+     *
+     * This will continue until there are no more slots to dial on.
+     */
+    @VisibleForTesting
+    public void retryOutgoingOriginalConnection(TelephonyConnection c, boolean isPermanentFailure) {
+        int phoneId = (c.getPhone() == null) ? -1 : c.getPhone().getPhoneId();
+        updateCachedConnectionPhonePair(c, isPermanentFailure);
+        // Pull next phone to use from the cache or null if it is empty
+        Phone newPhoneToUse = (mEmergencyRetryCache.second != null)
+                ? mEmergencyRetryCache.second.peek() : null;
+        if (newPhoneToUse != null) {
+            int videoState = c.getVideoState();
+            Bundle connExtras = c.getExtras();
+            Log.i(this, "retryOutgoingOriginalConnection, redialing on Phone Id: " + newPhoneToUse);
+            c.clearOriginalConnection();
+            if (phoneId != newPhoneToUse.getPhoneId()) updatePhoneAccount(c, newPhoneToUse);
+            placeOutgoingConnection(c, newPhoneToUse, videoState, connExtras);
+        } else {
+            // We have run out of Phones to use. Disconnect the call and destroy the connection.
+            Log.i(this, "retryOutgoingOriginalConnection, no more Phones to use. Disconnecting.");
+            c.setDisconnected(new DisconnectCause(DisconnectCause.ERROR));
+            c.clearOriginalConnection();
+            c.destroy();
+        }
+    }
+
+    private void updatePhoneAccount(TelephonyConnection connection, Phone phone) {
+        PhoneAccountHandle pHandle = PhoneUtils.makePstnPhoneAccountHandle(phone);
+        // For ECall handling on MSIM, until the request reaches here (i.e PhoneApp), we don't know
+        // on which phone account ECall can be placed. After deciding, we should notify Telecom of
+        // the change so that the proper PhoneAccount can be displayed.
+        Log.i(this, "updatePhoneAccount setPhoneAccountHandle, account = " + pHandle);
+        connection.notifyPhoneAccountChanged(pHandle);
     }
 
     private void placeOutgoingConnection(
             TelephonyConnection connection, Phone phone, ConnectionRequest request) {
+        placeOutgoingConnection(connection, phone, request.getVideoState(), request.getExtras());
+    }
+
+    private void placeOutgoingConnection(
+            TelephonyConnection connection, Phone phone, int videoState, Bundle extras) {
         String number = connection.getAddress().getSchemeSpecificPart();
 
-        com.android.internal.telephony.Connection originalConnection;
+        com.android.internal.telephony.Connection originalConnection = null;
         try {
-            originalConnection =
-                    phone.dial(number, null, request.getVideoState(), request.getExtras());
+            if (phone != null) {
+                originalConnection = phone.dial(number, null, videoState, extras);
+            }
         } catch (CallStateException e) {
             Log.e(this, e, "placeOutgoingConnection, phone.dial exception: " + e);
             int cause = android.telephony.DisconnectCause.OUTGOING_FAILURE;
-            if (e.getError() == CallStateException.ERROR_DISCONNECTED) {
+            if (e.getError() == CallStateException.ERROR_OUT_OF_SERVICE) {
                 cause = android.telephony.DisconnectCause.OUT_OF_SERVICE;
+            } else if (e.getError() == CallStateException.ERROR_POWER_OFF) {
+                cause = android.telephony.DisconnectCause.POWER_OFF;
             }
             connection.setDisconnected(DisconnectCauseUtil.toTelecomDisconnectCause(
                     cause, e.getMessage()));
@@ -463,10 +1004,15 @@
             // On GSM phones, null connection means that we dialed an MMI code
             if (phone.getPhoneType() == PhoneConstants.PHONE_TYPE_GSM) {
                 Log.d(this, "dialed MMI code");
+                int subId = phone.getSubId();
+                Log.d(this, "subId: "+subId);
                 telephonyDisconnectCause = android.telephony.DisconnectCause.DIALED_MMI;
                 final Intent intent = new Intent(this, MMIDialogActivity.class);
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
                         Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+                if (SubscriptionManager.isValidSubscriptionId(subId)) {
+                    intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
+                }
                 startActivity(intent);
             }
             Log.d(this, "placeOutgoingConnection, phone.dial returned null");
@@ -481,15 +1027,18 @@
             Phone phone,
             com.android.internal.telephony.Connection originalConnection,
             boolean isOutgoing,
-            PhoneAccountHandle phoneAccountHandle) {
+            PhoneAccountHandle phoneAccountHandle,
+            String telecomCallId,
+            Uri address,
+            int videoState) {
         TelephonyConnection returnConnection = null;
         int phoneType = phone.getPhoneType();
         if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
-            returnConnection = new GsmConnection(originalConnection);
+            returnConnection = new GsmConnection(originalConnection, telecomCallId, isOutgoing);
         } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
-            boolean allowMute = allowMute(phone);
-            returnConnection = new CdmaConnection(
-                    originalConnection, mEmergencyTonePlayer, allowMute, isOutgoing);
+            boolean allowsMute = allowsMute(phone);
+            returnConnection = new CdmaConnection(originalConnection, mEmergencyTonePlayer,
+                    allowsMute, isOutgoing, telecomCallId);
         }
         if (returnConnection != null) {
             // Listen to Telephony specific callbacks from the connection
@@ -497,9 +1046,6 @@
             returnConnection.setVideoPauseSupported(
                     TelecomAccountRegistry.getInstance(this).isVideoPauseSupported(
                             phoneAccountHandle));
-            returnConnection.setConferenceSupported(
-                    TelecomAccountRegistry.getInstance(this).isMergeCallSupported(
-                            phoneAccountHandle));
         }
         return returnConnection;
     }
@@ -518,54 +1064,156 @@
     }
 
     private Phone getPhoneForAccount(PhoneAccountHandle accountHandle, boolean isEmergency) {
-        if (isEmergency) {
-            return PhoneFactory.getDefaultPhone();
-        }
-
+        Phone chosenPhone = null;
         int subId = PhoneUtils.getSubIdForPhoneAccountHandle(accountHandle);
         if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            int phoneId = SubscriptionController.getInstance().getPhoneId(subId);
-            return PhoneFactory.getPhone(phoneId);
+            int phoneId = mSubscriptionManagerProxy.getPhoneId(subId);
+            chosenPhone = mPhoneFactoryProxy.getPhone(phoneId);
         }
-
-        return null;
+        // If this is an emergency call and the phone we originally planned to make this call
+        // with is not in service or was invalid, try to find one that is in service, using the
+        // default as a last chance backup.
+        if (isEmergency && (chosenPhone == null || ServiceState.STATE_IN_SERVICE != chosenPhone
+                .getServiceState().getState())) {
+            Log.d(this, "getPhoneForAccount: phone for phone acct handle %s is out of service "
+                    + "or invalid for emergency call.", accountHandle);
+            chosenPhone = getFirstPhoneForEmergencyCall();
+            Log.d(this, "getPhoneForAccount: using subId: " +
+                    (chosenPhone == null ? "null" : chosenPhone.getSubId()));
+        }
+        return chosenPhone;
     }
 
-    private Phone getFirstPhoneForEmergencyCall() {
-        Phone selectPhone = null;
-        for (int i = 0; i < TelephonyManager.getDefault().getSimCount(); i++) {
-            int[] subIds = SubscriptionController.getInstance().getSubIdUsingSlotId(i);
-            if (subIds.length == 0)
-                continue;
-
-            int phoneId = SubscriptionController.getInstance().getPhoneId(subIds[0]);
-            Phone phone = PhoneFactory.getPhone(phoneId);
-            if (phone == null)
-                continue;
-
-            if (ServiceState.STATE_IN_SERVICE == phone.getServiceState().getState()) {
-                // the slot is radio on & state is in service
-                Log.d(this, "pickBestPhoneForEmergencyCall, radio on & in service, slotId:" + i);
-                return phone;
-            } else if (ServiceState.STATE_POWER_OFF != phone.getServiceState().getState()) {
-                // the slot is radio on & with SIM card inserted.
-                if (TelephonyManager.getDefault().hasIccCard(i)) {
-                    Log.d(this, "pickBestPhoneForEmergencyCall," +
-                            "radio on and SIM card inserted, slotId:" + i);
-                    selectPhone = phone;
-                } else if (selectPhone == null) {
-                    Log.d(this, "pickBestPhoneForEmergencyCall, radio on, slotId:" + i);
-                    selectPhone = phone;
-                }
+    /**
+     * Retrieves the most sensible Phone to use for an emergency call using the following Priority
+     *  list (for multi-SIM devices):
+     *  1) The User's SIM preference for Voice calling
+     *  2) The First Phone that is currently IN_SERVICE or is available for emergency calling
+     *  3) If there is a PUK locked SIM, compare the SIMs that are not PUK locked. If all the SIMs
+     *     are locked, skip to condition 4).
+     *  4) The Phone with more Capabilities.
+     *  5) The First Phone that has a SIM card in it (Starting from Slot 0...N)
+     *  6) The Default Phone (Currently set as Slot 0)
+     */
+    @VisibleForTesting
+    public Phone getFirstPhoneForEmergencyCall() {
+        // 1)
+        int phoneId = mSubscriptionManagerProxy.getDefaultVoicePhoneId();
+        if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) {
+            Phone defaultPhone = mPhoneFactoryProxy.getPhone(phoneId);
+            if (defaultPhone != null && isAvailableForEmergencyCalls(defaultPhone)) {
+                return defaultPhone;
             }
         }
 
-        if (selectPhone == null) {
-            Log.d(this, "pickBestPhoneForEmergencyCall, return default phone");
-            selectPhone = PhoneFactory.getDefaultPhone();
+        Phone firstPhoneWithSim = null;
+        int phoneCount = mTelephonyManagerProxy.getPhoneCount();
+        List<SlotStatus> phoneSlotStatus = new ArrayList<>(phoneCount);
+        for (int i = 0; i < phoneCount; i++) {
+            Phone phone = mPhoneFactoryProxy.getPhone(i);
+            if (phone == null) {
+                continue;
+            }
+            // 2)
+            if (isAvailableForEmergencyCalls(phone)) {
+                // the slot has the radio on & state is in service.
+                Log.i(this, "getFirstPhoneForEmergencyCall, radio on & in service, Phone Id:" + i);
+                return phone;
+            }
+            // 4)
+            // Store the RAF Capabilities for sorting later.
+            int radioAccessFamily = phone.getRadioAccessFamily();
+            SlotStatus status = new SlotStatus(i, radioAccessFamily);
+            phoneSlotStatus.add(status);
+            Log.i(this, "getFirstPhoneForEmergencyCall, RAF:" +
+                    Integer.toHexString(radioAccessFamily) + " saved for Phone Id:" + i);
+            // 3)
+            // Report Slot's PIN/PUK lock status for sorting later.
+            int simState = mSubscriptionManagerProxy.getSimStateForSlotIdx(i);
+            if (simState == TelephonyManager.SIM_STATE_PIN_REQUIRED ||
+                    simState == TelephonyManager.SIM_STATE_PUK_REQUIRED) {
+                status.isLocked = true;
+            }
+            // 5)
+            if (firstPhoneWithSim == null && mTelephonyManagerProxy.hasIccCard(i)) {
+                // The slot has a SIM card inserted, but is not in service, so keep track of this
+                // Phone. Do not return because we want to make sure that none of the other Phones
+                // are in service (because that is always faster).
+                firstPhoneWithSim = phone;
+                Log.i(this, "getFirstPhoneForEmergencyCall, SIM card inserted, Phone Id:" +
+                        firstPhoneWithSim.getPhoneId());
+            }
         }
+        // 6)
+        if (firstPhoneWithSim == null && phoneSlotStatus.isEmpty()) {
+            // No Phones available, get the default.
+            Log.i(this, "getFirstPhoneForEmergencyCall, return default phone");
+            return mPhoneFactoryProxy.getDefaultPhone();
+        } else {
+            // 4)
+            final int defaultPhoneId = mPhoneFactoryProxy.getDefaultPhone().getPhoneId();
+            final Phone firstOccupiedSlot = firstPhoneWithSim;
+            if (!phoneSlotStatus.isEmpty()) {
+                // Only sort if there are enough elements to do so.
+                if (phoneSlotStatus.size() > 1) {
+                    Collections.sort(phoneSlotStatus, (o1, o2) -> {
+                        // First start by seeing if either of the phone slots are locked. If they
+                        // are, then sort by non-locked SIM first. If they are both locked, sort
+                        // by capability instead.
+                        if (o1.isLocked && !o2.isLocked) {
+                            return -1;
+                        }
+                        if (o2.isLocked && !o1.isLocked) {
+                            return 1;
+                        }
+                        // sort by number of RadioAccessFamily Capabilities.
+                        int compare = Integer.bitCount(o1.capabilities) -
+                                Integer.bitCount(o2.capabilities);
+                        if (compare == 0) {
+                            // Sort by highest RAF Capability if the number is the same.
+                            compare = RadioAccessFamily.getHighestRafCapability(o1.capabilities) -
+                                    RadioAccessFamily.getHighestRafCapability(o2.capabilities);
+                            if (compare == 0) {
+                                if (firstOccupiedSlot != null) {
+                                    // If the RAF capability is the same, choose based on whether or
+                                    // not any of the slots are occupied with a SIM card (if both
+                                    // are, always choose the first).
+                                    if (o1.slotId == firstOccupiedSlot.getPhoneId()) {
+                                        return 1;
+                                    } else if (o2.slotId == firstOccupiedSlot.getPhoneId()) {
+                                        return -1;
+                                    }
+                                } else {
+                                    // No slots have SIMs detected in them, so weight the default
+                                    // Phone Id greater than the others.
+                                    if (o1.slotId == defaultPhoneId) {
+                                        return 1;
+                                    } else if (o2.slotId == defaultPhoneId) {
+                                        return -1;
+                                    }
+                                }
+                            }
+                        }
+                        return compare;
+                    });
+                }
+                int mostCapablePhoneId = phoneSlotStatus.get(phoneSlotStatus.size() - 1).slotId;
+                Log.i(this, "getFirstPhoneForEmergencyCall, Using Phone Id: " + mostCapablePhoneId +
+                        "with highest capability");
+                return mPhoneFactoryProxy.getPhone(mostCapablePhoneId);
+            } else {
+                // 5)
+                return firstPhoneWithSim;
+            }
+        }
+    }
 
-        return selectPhone;
+    /**
+     * Returns true if the state of the Phone is IN_SERVICE or available for emergency calling only.
+     */
+    private boolean isAvailableForEmergencyCalls(Phone phone) {
+        return ServiceState.STATE_IN_SERVICE == phone.getServiceState().getState() ||
+                phone.getServiceState().isEmergencyOnly();
     }
 
     /**
@@ -574,16 +1222,12 @@
      * @param phone The current phone.
      * @return {@code True} if the connection should allow mute.
      */
-    private boolean allowMute(Phone phone) {
+    private boolean allowsMute(Phone phone) {
         // For CDMA phones, check if we are in Emergency Callback Mode (ECM).  Mute is disallowed
         // in ECM mode.
         if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-            PhoneProxy phoneProxy = (PhoneProxy)phone;
-            CDMAPhone cdmaPhone = (CDMAPhone)phoneProxy.getActivePhone();
-            if (cdmaPhone != null) {
-                if (cdmaPhone.isInEcm()) {
-                    return false;
-                }
+            if (phone.isInEcm()) {
+                return false;
             }
         }
 
@@ -606,25 +1250,100 @@
      * @param connection The connection to be added to the controller
      */
     public void addConnectionToConferenceController(TelephonyConnection connection) {
-        // TODO: Do we need to handle the case of the original connection changing
-        // and triggering this callback multiple times for the same connection?
-        // If that is the case, we might want to remove this connection from all
-        // conference controllers first before re-adding it.
+        // TODO: Need to revisit what happens when the original connection for the
+        // TelephonyConnection changes.  If going from CDMA --> GSM (for example), the
+        // instance of TelephonyConnection will still be a CdmaConnection, not a GsmConnection.
+        // The CDMA conference controller makes the assumption that it will only have CDMA
+        // connections in it, while the other conference controllers aren't as restrictive.  Really,
+        // when we go between CDMA and GSM we should replace the TelephonyConnection.
         if (connection.isImsConnection()) {
             Log.d(this, "Adding IMS connection to conference controller: " + connection);
             mImsConferenceController.add(connection);
+            mTelephonyConferenceController.remove(connection);
+            if (connection instanceof CdmaConnection) {
+                mCdmaConferenceController.remove((CdmaConnection) connection);
+            }
         } else {
             int phoneType = connection.getCall().getPhone().getPhoneType();
             if (phoneType == TelephonyManager.PHONE_TYPE_GSM) {
                 Log.d(this, "Adding GSM connection to conference controller: " + connection);
                 mTelephonyConferenceController.add(connection);
+                if (connection instanceof CdmaConnection) {
+                    mCdmaConferenceController.remove((CdmaConnection) connection);
+                }
             } else if (phoneType == TelephonyManager.PHONE_TYPE_CDMA &&
                     connection instanceof CdmaConnection) {
                 Log.d(this, "Adding CDMA connection to conference controller: " + connection);
-                mCdmaConferenceController.add((CdmaConnection)connection);
+                mCdmaConferenceController.add((CdmaConnection) connection);
+                mTelephonyConferenceController.remove(connection);
             }
             Log.d(this, "Removing connection from IMS conference controller: " + connection);
             mImsConferenceController.remove(connection);
         }
     }
+
+    /**
+     * Create a new CDMA connection. CDMA connections have additional limitations when creating
+     * additional calls which are handled in this method.  Specifically, CDMA has a "FLASH" command
+     * that can be used for three purposes: merging a call, swapping unmerged calls, and adding
+     * a new outgoing call. The function of the flash command depends on the context of the current
+     * set of calls. This method will prevent an outgoing call from being made if it is not within
+     * the right circumstances to support adding a call.
+     */
+    private Connection checkAdditionalOutgoingCallLimits(Phone phone) {
+        if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+            // Check to see if any CDMA conference calls exist, and if they do, check them for
+            // limitations.
+            for (Conference conference : getAllConferences()) {
+                if (conference instanceof CdmaConference) {
+                    CdmaConference cdmaConf = (CdmaConference) conference;
+
+                    // If the CDMA conference has not been merged, add-call will not work, so fail
+                    // this request to add a call.
+                    if (cdmaConf.can(Connection.CAPABILITY_MERGE_CONFERENCE)) {
+                        return Connection.createFailedConnection(new DisconnectCause(
+                                    DisconnectCause.RESTRICTED,
+                                    null,
+                                    getResources().getString(R.string.callFailed_cdma_call_limit),
+                                    "merge-capable call exists, prevent flash command."));
+                    }
+                }
+            }
+        }
+
+        return null; // null means nothing went wrong, and call should continue.
+    }
+
+    private boolean isTtyModeEnabled(Context context) {
+        return (android.provider.Settings.Secure.getInt(
+                context.getContentResolver(),
+                android.provider.Settings.Secure.PREFERRED_TTY_MODE,
+                TelecomManager.TTY_MODE_OFF) != TelecomManager.TTY_MODE_OFF);
+    }
+
+    /**
+     * For outgoing dialed calls, potentially send a ConnectionEvent if the user is on WFC and is
+     * dialing an international number.
+     * @param telephonyConnection The connection.
+     */
+    private void maybeSendInternationalCallEvent(TelephonyConnection telephonyConnection) {
+        if (telephonyConnection == null || telephonyConnection.getPhone() == null ||
+                telephonyConnection.getPhone().getDefaultPhone() == null) {
+            return;
+        }
+        Phone phone = telephonyConnection.getPhone().getDefaultPhone();
+        if (phone instanceof GsmCdmaPhone) {
+            GsmCdmaPhone gsmCdmaPhone = (GsmCdmaPhone) phone;
+            if (telephonyConnection.isOutgoingCall() &&
+                    gsmCdmaPhone.isNotificationOfWfcCallRequired(
+                            telephonyConnection.getOriginalConnection().getOrigDialString())) {
+                // Send connection event to InCall UI to inform the user of the fact they
+                // are potentially placing an international call on WFC.
+                Log.i(this, "placeOutgoingConnection - sending international call on WFC " +
+                        "confirmation event");
+                telephonyConnection.sendConnectionEvent(
+                        TelephonyManager.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC, null);
+            }
+        }
+    }
 }
diff --git a/src/com/android/services/telephony/TelephonyConnectionServiceProxy.java b/src/com/android/services/telephony/TelephonyConnectionServiceProxy.java
new file mode 100644
index 0000000..1ced34a
--- /dev/null
+++ b/src/com/android/services/telephony/TelephonyConnectionServiceProxy.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.telecom.PhoneAccountHandle;
+
+import java.util.Collection;
+
+/**
+ * TelephonyConnectionService Interface for testing purpose
+ */
+
+public interface TelephonyConnectionServiceProxy {
+    Collection<Connection> getAllConnections();
+    void addConference(TelephonyConference mTelephonyConference);
+    void addConference(ImsConference mImsConference);
+    void removeConnection(Connection connection);
+    void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
+            Connection connection);
+    void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
+                               Connection connection, Conference conference);
+    void addConnectionToConferenceController(TelephonyConnection connection);
+}
diff --git a/src/com/android/services/telephony/TtyManager.java b/src/com/android/services/telephony/TtyManager.java
index a3aeeb2..3389ce8 100644
--- a/src/com/android/services/telephony/TtyManager.java
+++ b/src/com/android/services/telephony/TtyManager.java
@@ -23,6 +23,7 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
+import android.provider.Settings;
 import android.telecom.TelecomManager;
 
 import com.android.internal.telephony.Phone;
@@ -83,6 +84,9 @@
             ttyMode = telecomManager.getCurrentTtyMode();
         }
         updateTtyMode(ttyMode);
+        //Get preferred TTY mode from data base as UI Tty mode is always user preferred Tty mode.
+        ttyMode = Settings.Secure.getInt(context.getContentResolver(),
+                Settings.Secure.PREFERRED_TTY_MODE, TelecomManager.TTY_MODE_OFF);
         updateUiTtyMode(ttyMode);
     }
 
diff --git a/src/com/android/services/telephony/activation/Activator.java b/src/com/android/services/telephony/activation/Activator.java
deleted file mode 100644
index 7dee5b3..0000000
--- a/src/com/android/services/telephony/activation/Activator.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-/**
- * SIM Activation implementation generic interface.
- */
-public interface Activator {
-    void onActivate();
-}
diff --git a/src/com/android/services/telephony/activation/OtaspActivator.java b/src/com/android/services/telephony/activation/OtaspActivator.java
deleted file mode 100644
index 11ba726..0000000
--- a/src/com/android/services/telephony/activation/OtaspActivator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-/**
- * Over-The-Air SIM Provisioning (OTASP) activation implementation.
- *
- * Handles OTASP activation requests and returns status updates as activation progresses.
- */
-public class OtaspActivator implements Activator {
-    @Override
-    public void onActivate() {
-        // TODO: handle otasp activation
-    }
-}
diff --git a/src/com/android/services/telephony/activation/SimActivationActivity.java b/src/com/android/services/telephony/activation/SimActivationActivity.java
deleted file mode 100644
index ae11a3f..0000000
--- a/src/com/android/services/telephony/activation/SimActivationActivity.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
-import android.content.Intent;
-import android.os.Bundle;
-import android.telephony.TelephonyManager;
-
-import com.android.phone.PhoneGlobals;
-import com.android.services.telephony.Log;
-
-/**
- * Invisible activity that handles the android.intent.action.SIM_ACTIVATION_REQUEST intent.
- * This activity is protected by the android.permission.PERFORM_SIM_ACTIVATION permission.
- */
-public class SimActivationActivity extends Activity {
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        Log.i(this, "onCreate");
-
-        Intent intent = getIntent();
-        if (Intent.ACTION_SIM_ACTIVATION_REQUEST.equals(intent.getAction())) {
-            Log.i(this, "Activation requested " + intent);
-
-            runActivation(intent);
-        }
-        finish();
-    }
-
-    private void runActivation(Intent intent) {
-        final PendingIntent response =
-                intent.getParcelableExtra(Intent.EXTRA_SIM_ACTIVATION_RESPONSE);
-
-        Log.i(this, "Running activation w/ response " + response);
-
-        PhoneGlobals app = PhoneGlobals.getInstance();
-        app.simActivationManager.runActivation(SimActivationManager.Triggers.EXPLICIT_REQUEST,
-                new SimActivationManager.Response() {
-                    @Override
-                    public void onResponse(int status) {
-                        if (response != null) {
-                            try {
-                                response.send();
-                            } catch (CanceledException e) {
-                                Log.w(this, "Could not respond to SIM Activation.");
-                            }
-                        }
-                    }
-                });
-
-        // TODO: Set this status to the return value of runActivation
-        // Return the response as an activity result and the pending intent.
-        setResult(TelephonyManager.SIM_ACTIVATION_RESULT_IN_PROGRESS);
-    }
-}
diff --git a/src/com/android/services/telephony/activation/SimActivationManager.java b/src/com/android/services/telephony/activation/SimActivationManager.java
deleted file mode 100644
index ce9e508..0000000
--- a/src/com/android/services/telephony/activation/SimActivationManager.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-import android.app.PendingIntent;
-import android.telephony.TelephonyManager;
-
-/**
- * Handles SIM activation requests and runs the appropriate activation process until it completes
- * or fails. When done, sends back a response if needed.
- */
-public class SimActivationManager {
-    public static final class Triggers {
-        public static final int SYSTEM_START = 1;
-        public static final int EXPLICIT_REQUEST = 2;
-    }
-
-    public interface Response {
-        /**
-         * @param status See {@link android.telephony.TelephonyManager} for SIM_ACTIVATION_RESULT_*
-         *               constants.
-         */
-        void onResponse(int status);
-    }
-
-    public void runActivation(int trigger, Response response) {
-        Activator activator = selectActivator(trigger);
-
-        activator.onActivate();
-
-        // TODO: Specify some way to determine if activation is even necessary.
-
-        // TODO: specify some way to return the result.
-
-        if (response != null) {
-            response.onResponse(TelephonyManager.SIM_ACTIVATION_RESULT_COMPLETE);
-        }
-    }
-
-    private Activator selectActivator(int trigger) {
-        // TODO: Select among all activator types
-
-        // For now, pick a do-nothing activator
-        return new Activator() {
-
-            /** ${inheritDoc} */
-                @Override
-            public void onActivate() {
-                // do something
-            }
-        };
-    }
-}
diff --git a/src/org/apache/commons/io/IOUtils.java b/src/org/apache/commons/io/IOUtils.java
deleted file mode 100644
index b414507..0000000
--- a/src/org/apache/commons/io/IOUtils.java
+++ /dev/null
@@ -1,1202 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.io;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayWriter;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * General IO stream manipulation utilities.
- * <p>
- * This class provides static utility methods for input/output operations.
- * <ul>
- * <li>closeQuietly - these methods close a stream ignoring nulls and exceptions
- * <li>toXxx/read - these methods read data from a stream
- * <li>write - these methods write data to a stream
- * <li>copy - these methods copy all the data from one stream to another
- * <li>contentEquals - these methods compare the content of two streams
- * </ul>
- * <p>
- * The byte-to-char methods and char-to-byte methods involve a conversion step.
- * Two methods are provided in each case, one that uses the platform default
- * encoding and the other which allows you to specify an encoding. You are
- * encouraged to always specify an encoding because relying on the platform
- * default can lead to unexpected results, for example when moving from
- * development to production.
- * <p>
- * All the methods in this class that read a stream are buffered internally.
- * This means that there is no cause to use a <code>BufferedInputStream</code>
- * or <code>BufferedReader</code>. The default buffer size of 4K has been shown
- * to be efficient in tests.
- * <p>
- * Wherever possible, the methods in this class do <em>not</em> flush or close
- * the stream. This is to avoid making non-portable assumptions about the
- * streams' origin and further use. Thus the caller is still responsible for
- * closing streams after use.
- * <p>
- * Origin of code: Excalibur.
- *
- * @author Peter Donald
- * @author Jeff Turner
- * @author Matthew Hawthorne
- * @author Stephen Colebourne
- * @author Gareth Davis
- * @author Ian Springer
- * @author Niall Pemberton
- * @author Sandy McArthur
- * @version $Id: IOUtils.java 481854 2006-12-03 18:30:07Z scolebourne $
- */
-public class IOUtils {
-    // NOTE: This class is focussed on InputStream, OutputStream, Reader and
-    // Writer. Each method should take at least one of these as a parameter,
-    // or return one of them.
-
-    /**
-     * The Unix directory separator character.
-     */
-    public static final char DIR_SEPARATOR_UNIX = '/';
-    /**
-     * The Windows directory separator character.
-     */
-    public static final char DIR_SEPARATOR_WINDOWS = '\\';
-    /**
-     * The system directory separator character.
-     */
-    public static final char DIR_SEPARATOR = File.separatorChar;
-    /**
-     * The Unix line separator string.
-     */
-    public static final String LINE_SEPARATOR_UNIX = "\n";
-    /**
-     * The Windows line separator string.
-     */
-    public static final String LINE_SEPARATOR_WINDOWS = "\r\n";
-    /**
-     * The system line separator string.
-     */
-    public static final String LINE_SEPARATOR;
-    static {
-        // avoid security issues
-        StringWriter buf = new StringWriter(4);
-        PrintWriter out = new PrintWriter(buf);
-        out.println();
-        LINE_SEPARATOR = buf.toString();
-    }
-
-    /**
-     * The default buffer size to use.
-     */
-    private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
-
-    /**
-     * Instances should NOT be constructed in standard programming.
-     */
-    public IOUtils() {
-        super();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Unconditionally close an <code>Reader</code>.
-     * <p>
-     * Equivalent to {@link Reader#close()}, except any exceptions will be ignored.
-     * This is typically used in finally blocks.
-     *
-     * @param input  the Reader to close, may be null or already closed
-     */
-    public static void closeQuietly(Reader input) {
-        try {
-            if (input != null) {
-                input.close();
-            }
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    /**
-     * Unconditionally close a <code>Writer</code>.
-     * <p>
-     * Equivalent to {@link Writer#close()}, except any exceptions will be ignored.
-     * This is typically used in finally blocks.
-     *
-     * @param output  the Writer to close, may be null or already closed
-     */
-    public static void closeQuietly(Writer output) {
-        try {
-            if (output != null) {
-                output.close();
-            }
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    /**
-     * Unconditionally close an <code>InputStream</code>.
-     * <p>
-     * Equivalent to {@link InputStream#close()}, except any exceptions will be ignored.
-     * This is typically used in finally blocks.
-     *
-     * @param input  the InputStream to close, may be null or already closed
-     */
-    public static void closeQuietly(InputStream input) {
-        try {
-            if (input != null) {
-                input.close();
-            }
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    /**
-     * Unconditionally close an <code>OutputStream</code>.
-     * <p>
-     * Equivalent to {@link OutputStream#close()}, except any exceptions will be ignored.
-     * This is typically used in finally blocks.
-     *
-     * @param output  the OutputStream to close, may be null or already closed
-     */
-    public static void closeQuietly(OutputStream output) {
-        try {
-            if (output != null) {
-                output.close();
-            }
-        } catch (IOException ioe) {
-            // ignore
-        }
-    }
-
-    // read toByteArray
-    //-----------------------------------------------------------------------
-    /**
-     * Get the contents of an <code>InputStream</code> as a <code>byte[]</code>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @return the requested byte array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static byte[] toByteArray(InputStream input) throws IOException {
-        ByteArrayOutputStream output = new ByteArrayOutputStream();
-        copy(input, output);
-        return output.toByteArray();
-    }
-
-    /**
-     * Get the contents of a <code>Reader</code> as a <code>byte[]</code>
-     * using the default character encoding of the platform.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @return the requested byte array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static byte[] toByteArray(Reader input) throws IOException {
-        ByteArrayOutputStream output = new ByteArrayOutputStream();
-        copy(input, output);
-        return output.toByteArray();
-    }
-
-    /**
-     * Get the contents of a <code>Reader</code> as a <code>byte[]</code>
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @param encoding  the encoding to use, null means platform default
-     * @return the requested byte array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static byte[] toByteArray(Reader input, String encoding)
-            throws IOException {
-        ByteArrayOutputStream output = new ByteArrayOutputStream();
-        copy(input, output, encoding);
-        return output.toByteArray();
-    }
-
-    /**
-     * Get the contents of a <code>String</code> as a <code>byte[]</code>
-     * using the default character encoding of the platform.
-     * <p>
-     * This is the same as {@link String#getBytes()}.
-     *
-     * @param input  the <code>String</code> to convert
-     * @return the requested byte array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs (never occurs)
-     * @deprecated Use {@link String#getBytes()}
-     */
-    @Deprecated
-    public static byte[] toByteArray(String input) throws IOException {
-        return input.getBytes();
-    }
-
-    // read char[]
-    //-----------------------------------------------------------------------
-    /**
-     * Get the contents of an <code>InputStream</code> as a character array
-     * using the default character encoding of the platform.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param is  the <code>InputStream</code> to read from
-     * @return the requested character array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static char[] toCharArray(InputStream is) throws IOException {
-        CharArrayWriter output = new CharArrayWriter();
-        copy(is, output);
-        return output.toCharArray();
-    }
-
-    /**
-     * Get the contents of an <code>InputStream</code> as a character array
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param is  the <code>InputStream</code> to read from
-     * @param encoding  the encoding to use, null means platform default
-     * @return the requested character array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static char[] toCharArray(InputStream is, String encoding)
-            throws IOException {
-        CharArrayWriter output = new CharArrayWriter();
-        copy(is, output, encoding);
-        return output.toCharArray();
-    }
-
-    /**
-     * Get the contents of a <code>Reader</code> as a character array.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @return the requested character array
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static char[] toCharArray(Reader input) throws IOException {
-        CharArrayWriter sw = new CharArrayWriter();
-        copy(input, sw);
-        return sw.toCharArray();
-    }
-
-    // read toString
-    //-----------------------------------------------------------------------
-    /**
-     * Get the contents of an <code>InputStream</code> as a String
-     * using the default character encoding of the platform.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @return the requested String
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static String toString(InputStream input) throws IOException {
-        StringWriter sw = new StringWriter();
-        copy(input, sw);
-        return sw.toString();
-    }
-
-    /**
-     * Get the contents of an <code>InputStream</code> as a String
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @param encoding  the encoding to use, null means platform default
-     * @return the requested String
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static String toString(InputStream input, String encoding)
-            throws IOException {
-        StringWriter sw = new StringWriter();
-        copy(input, sw, encoding);
-        return sw.toString();
-    }
-
-    /**
-     * Get the contents of a <code>Reader</code> as a String.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @return the requested String
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static String toString(Reader input) throws IOException {
-        StringWriter sw = new StringWriter();
-        copy(input, sw);
-        return sw.toString();
-    }
-
-    /**
-     * Get the contents of a <code>byte[]</code> as a String
-     * using the default character encoding of the platform.
-     *
-     * @param input the byte array to read from
-     * @return the requested String
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs (never occurs)
-     * @deprecated Use {@link String#String(byte[])}
-     */
-    @Deprecated
-    public static String toString(byte[] input) throws IOException {
-        return new String(input);
-    }
-
-    /**
-     * Get the contents of a <code>byte[]</code> as a String
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     *
-     * @param input the byte array to read from
-     * @param encoding  the encoding to use, null means platform default
-     * @return the requested String
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs (never occurs)
-     * @deprecated Use {@link String#String(byte[],String)}
-     */
-    @Deprecated
-    public static String toString(byte[] input, String encoding)
-            throws IOException {
-        if (encoding == null) {
-            return new String(input);
-        } else {
-            return new String(input, encoding);
-        }
-    }
-
-    // readLines
-    //-----------------------------------------------------------------------
-    /**
-     * Get the contents of an <code>InputStream</code> as a list of Strings,
-     * one entry per line, using the default character encoding of the platform.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from, not null
-     * @return the list of Strings, never null
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static List<String> readLines(InputStream input) throws IOException {
-        InputStreamReader reader = new InputStreamReader(input);
-        return readLines(reader);
-    }
-
-    /**
-     * Get the contents of an <code>InputStream</code> as a list of Strings,
-     * one entry per line, using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from, not null
-     * @param encoding  the encoding to use, null means platform default
-     * @return the list of Strings, never null
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static List<String> readLines(InputStream input, String encoding) throws IOException {
-        if (encoding == null) {
-            return readLines(input);
-        } else {
-            InputStreamReader reader = new InputStreamReader(input, encoding);
-            return readLines(reader);
-        }
-    }
-
-    /**
-     * Get the contents of a <code>Reader</code> as a list of Strings,
-     * one entry per line.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from, not null
-     * @return the list of Strings, never null
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static List<String> readLines(Reader input) throws IOException {
-        BufferedReader reader = new BufferedReader(input);
-        List<String> list = new ArrayList<String>();
-        String line = reader.readLine();
-        while (line != null) {
-            list.add(line);
-            line = reader.readLine();
-        }
-        return list;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Convert the specified string to an input stream, encoded as bytes
-     * using the default character encoding of the platform.
-     *
-     * @param input the string to convert
-     * @return an input stream
-     * @since Commons IO 1.1
-     */
-    public static InputStream toInputStream(String input) {
-        byte[] bytes = input.getBytes();
-        return new ByteArrayInputStream(bytes);
-    }
-
-    /**
-     * Convert the specified string to an input stream, encoded as bytes
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     *
-     * @param input the string to convert
-     * @param encoding the encoding to use, null means platform default
-     * @throws IOException if the encoding is invalid
-     * @return an input stream
-     * @since Commons IO 1.1
-     */
-    public static InputStream toInputStream(String input, String encoding) throws IOException {
-        byte[] bytes = encoding != null ? input.getBytes(encoding) : input.getBytes();
-        return new ByteArrayInputStream(bytes);
-    }
-
-    // write byte[]
-    //-----------------------------------------------------------------------
-    /**
-     * Writes bytes from a <code>byte[]</code> to an <code>OutputStream</code>.
-     *
-     * @param data  the byte array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(byte[] data, OutputStream output)
-            throws IOException {
-        if (data != null) {
-            output.write(data);
-        }
-    }
-
-    /**
-     * Writes bytes from a <code>byte[]</code> to chars on a <code>Writer</code>
-     * using the default character encoding of the platform.
-     * <p>
-     * This method uses {@link String#String(byte[])}.
-     *
-     * @param data  the byte array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>Writer</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(byte[] data, Writer output) throws IOException {
-        if (data != null) {
-            output.write(new String(data));
-        }
-    }
-
-    /**
-     * Writes bytes from a <code>byte[]</code> to chars on a <code>Writer</code>
-     * using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method uses {@link String#String(byte[], String)}.
-     *
-     * @param data  the byte array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>Writer</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(byte[] data, Writer output, String encoding)
-            throws IOException {
-        if (data != null) {
-            if (encoding == null) {
-                write(data, output);
-            } else {
-                output.write(new String(data, encoding));
-            }
-        }
-    }
-
-    // write char[]
-    //-----------------------------------------------------------------------
-    /**
-     * Writes chars from a <code>char[]</code> to a <code>Writer</code>
-     * using the default character encoding of the platform.
-     *
-     * @param data  the char array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>Writer</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(char[] data, Writer output) throws IOException {
-        if (data != null) {
-            output.write(data);
-        }
-    }
-
-    /**
-     * Writes chars from a <code>char[]</code> to bytes on an
-     * <code>OutputStream</code>.
-     * <p>
-     * This method uses {@link String#String(char[])} and
-     * {@link String#getBytes()}.
-     *
-     * @param data  the char array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(char[] data, OutputStream output)
-            throws IOException {
-        if (data != null) {
-            output.write(new String(data).getBytes());
-        }
-    }
-
-    /**
-     * Writes chars from a <code>char[]</code> to bytes on an
-     * <code>OutputStream</code> using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method uses {@link String#String(char[])} and
-     * {@link String#getBytes(String)}.
-     *
-     * @param data  the char array to write, do not modify during output,
-     * null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(char[] data, OutputStream output, String encoding)
-            throws IOException {
-        if (data != null) {
-            if (encoding == null) {
-                write(data, output);
-            } else {
-                output.write(new String(data).getBytes(encoding));
-            }
-        }
-    }
-
-    // write String
-    //-----------------------------------------------------------------------
-    /**
-     * Writes chars from a <code>String</code> to a <code>Writer</code>.
-     *
-     * @param data  the <code>String</code> to write, null ignored
-     * @param output  the <code>Writer</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(String data, Writer output) throws IOException {
-        if (data != null) {
-            output.write(data);
-        }
-    }
-
-    /**
-     * Writes chars from a <code>String</code> to bytes on an
-     * <code>OutputStream</code> using the default character encoding of the
-     * platform.
-     * <p>
-     * This method uses {@link String#getBytes()}.
-     *
-     * @param data  the <code>String</code> to write, null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(String data, OutputStream output)
-            throws IOException {
-        if (data != null) {
-            output.write(data.getBytes());
-        }
-    }
-
-    /**
-     * Writes chars from a <code>String</code> to bytes on an
-     * <code>OutputStream</code> using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method uses {@link String#getBytes(String)}.
-     *
-     * @param data  the <code>String</code> to write, null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(String data, OutputStream output, String encoding)
-            throws IOException {
-        if (data != null) {
-            if (encoding == null) {
-                write(data, output);
-            } else {
-                output.write(data.getBytes(encoding));
-            }
-        }
-    }
-
-    // write StringBuffer
-    //-----------------------------------------------------------------------
-    /**
-     * Writes chars from a <code>StringBuffer</code> to a <code>Writer</code>.
-     *
-     * @param data  the <code>StringBuffer</code> to write, null ignored
-     * @param output  the <code>Writer</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(StringBuffer data, Writer output)
-            throws IOException {
-        if (data != null) {
-            output.write(data.toString());
-        }
-    }
-
-    /**
-     * Writes chars from a <code>StringBuffer</code> to bytes on an
-     * <code>OutputStream</code> using the default character encoding of the
-     * platform.
-     * <p>
-     * This method uses {@link String#getBytes()}.
-     *
-     * @param data  the <code>StringBuffer</code> to write, null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(StringBuffer data, OutputStream output)
-            throws IOException {
-        if (data != null) {
-            output.write(data.toString().getBytes());
-        }
-    }
-
-    /**
-     * Writes chars from a <code>StringBuffer</code> to bytes on an
-     * <code>OutputStream</code> using the specified character encoding.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method uses {@link String#getBytes(String)}.
-     *
-     * @param data  the <code>StringBuffer</code> to write, null ignored
-     * @param output  the <code>OutputStream</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void write(StringBuffer data, OutputStream output,
-            String encoding) throws IOException {
-        if (data != null) {
-            if (encoding == null) {
-                write(data, output);
-            } else {
-                output.write(data.toString().getBytes(encoding));
-            }
-        }
-    }
-
-    // writeLines
-    //-----------------------------------------------------------------------
-    /**
-     * Writes the <code>toString()</code> value of each item in a collection to
-     * an <code>OutputStream</code> line by line, using the default character
-     * encoding of the platform and the specified line ending.
-     *
-     * @param lines  the lines to write, null entries produce blank lines
-     * @param lineEnding  the line separator to use, null is system default
-     * @param output  the <code>OutputStream</code> to write to, not null, not closed
-     * @throws NullPointerException if the output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void writeLines(Collection<Object> lines, String lineEnding,
-            OutputStream output) throws IOException {
-        if (lines == null) {
-            return;
-        }
-        if (lineEnding == null) {
-            lineEnding = LINE_SEPARATOR;
-        }
-        for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
-            Object line = it.next();
-            if (line != null) {
-                output.write(line.toString().getBytes());
-            }
-            output.write(lineEnding.getBytes());
-        }
-    }
-
-    /**
-     * Writes the <code>toString()</code> value of each item in a collection to
-     * an <code>OutputStream</code> line by line, using the specified character
-     * encoding and the specified line ending.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     *
-     * @param lines  the lines to write, null entries produce blank lines
-     * @param lineEnding  the line separator to use, null is system default
-     * @param output  the <code>OutputStream</code> to write to, not null, not closed
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if the output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void writeLines(Collection<Object> lines, String lineEnding,
-            OutputStream output, String encoding) throws IOException {
-        if (encoding == null) {
-            writeLines(lines, lineEnding, output);
-        } else {
-            if (lines == null) {
-                return;
-            }
-            if (lineEnding == null) {
-                lineEnding = LINE_SEPARATOR;
-            }
-            for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
-                Object line = it.next();
-                if (line != null) {
-                    output.write(line.toString().getBytes(encoding));
-                }
-                output.write(lineEnding.getBytes(encoding));
-            }
-        }
-    }
-
-    /**
-     * Writes the <code>toString()</code> value of each item in a collection to
-     * a <code>Writer</code> line by line, using the specified line ending.
-     *
-     * @param lines  the lines to write, null entries produce blank lines
-     * @param lineEnding  the line separator to use, null is system default
-     * @param writer  the <code>Writer</code> to write to, not null, not closed
-     * @throws NullPointerException if the input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void writeLines(Collection<Object> lines, String lineEnding,
-            Writer writer) throws IOException {
-        if (lines == null) {
-            return;
-        }
-        if (lineEnding == null) {
-            lineEnding = LINE_SEPARATOR;
-        }
-        for (Iterator<Object> it = lines.iterator(); it.hasNext(); ) {
-            Object line = it.next();
-            if (line != null) {
-                writer.write(line.toString());
-            }
-            writer.write(lineEnding);
-        }
-    }
-
-    // copy from InputStream
-    //-----------------------------------------------------------------------
-    /**
-     * Copy bytes from an <code>InputStream</code> to an
-     * <code>OutputStream</code>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     * <p>
-     * Large streams (over 2GB) will return a bytes copied value of
-     * <code>-1</code> after the copy has completed since the correct
-     * number of bytes cannot be returned as an int. For large streams
-     * use the <code>copyLarge(InputStream, OutputStream)</code> method.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @param output  the <code>OutputStream</code> to write to
-     * @return the number of bytes copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @throws ArithmeticException if the byte count is too large
-     * @since Commons IO 1.1
-     */
-    public static int copy(InputStream input, OutputStream output) throws IOException {
-        long count = copyLarge(input, output);
-        if (count > Integer.MAX_VALUE) {
-            return -1;
-        }
-        return (int) count;
-    }
-
-    /**
-     * Copy bytes from a large (over 2GB) <code>InputStream</code> to an
-     * <code>OutputStream</code>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @param output  the <code>OutputStream</code> to write to
-     * @return the number of bytes copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.3
-     */
-    public static long copyLarge(InputStream input, OutputStream output)
-            throws IOException {
-        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
-        long count = 0;
-        int n = 0;
-        while (-1 != (n = input.read(buffer))) {
-            output.write(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-    /**
-     * Copy bytes from an <code>InputStream</code> to chars on a
-     * <code>Writer</code> using the default character encoding of the platform.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     * <p>
-     * This method uses {@link InputStreamReader}.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @param output  the <code>Writer</code> to write to
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void copy(InputStream input, Writer output)
-            throws IOException {
-        InputStreamReader in = new InputStreamReader(input);
-        copy(in, output);
-    }
-
-    /**
-     * Copy bytes from an <code>InputStream</code> to chars on a
-     * <code>Writer</code> using the specified character encoding.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedInputStream</code>.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * This method uses {@link InputStreamReader}.
-     *
-     * @param input  the <code>InputStream</code> to read from
-     * @param output  the <code>Writer</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void copy(InputStream input, Writer output, String encoding)
-            throws IOException {
-        if (encoding == null) {
-            copy(input, output);
-        } else {
-            InputStreamReader in = new InputStreamReader(input, encoding);
-            copy(in, output);
-        }
-    }
-
-    // copy from Reader
-    //-----------------------------------------------------------------------
-    /**
-     * Copy chars from a <code>Reader</code> to a <code>Writer</code>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     * <p>
-     * Large streams (over 2GB) will return a chars copied value of
-     * <code>-1</code> after the copy has completed since the correct
-     * number of chars cannot be returned as an int. For large streams
-     * use the <code>copyLarge(Reader, Writer)</code> method.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @param output  the <code>Writer</code> to write to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @throws ArithmeticException if the character count is too large
-     * @since Commons IO 1.1
-     */
-    public static int copy(Reader input, Writer output) throws IOException {
-        long count = copyLarge(input, output);
-        if (count > Integer.MAX_VALUE) {
-            return -1;
-        }
-        return (int) count;
-    }
-
-    /**
-     * Copy chars from a large (over 2GB) <code>Reader</code> to a <code>Writer</code>.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @param output  the <code>Writer</code> to write to
-     * @return the number of characters copied
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.3
-     */
-    public static long copyLarge(Reader input, Writer output) throws IOException {
-        char[] buffer = new char[DEFAULT_BUFFER_SIZE];
-        long count = 0;
-        int n = 0;
-        while (-1 != (n = input.read(buffer))) {
-            output.write(buffer, 0, n);
-            count += n;
-        }
-        return count;
-    }
-
-    /**
-     * Copy chars from a <code>Reader</code> to bytes on an
-     * <code>OutputStream</code> using the default character encoding of the
-     * platform, and calling flush.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     * <p>
-     * Due to the implementation of OutputStreamWriter, this method performs a
-     * flush.
-     * <p>
-     * This method uses {@link OutputStreamWriter}.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @param output  the <code>OutputStream</code> to write to
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void copy(Reader input, OutputStream output)
-            throws IOException {
-        OutputStreamWriter out = new OutputStreamWriter(output);
-        copy(input, out);
-        // XXX Unless anyone is planning on rewriting OutputStreamWriter, we
-        // have to flush here.
-        out.flush();
-    }
-
-    /**
-     * Copy chars from a <code>Reader</code> to bytes on an
-     * <code>OutputStream</code> using the specified character encoding, and
-     * calling flush.
-     * <p>
-     * This method buffers the input internally, so there is no need to use a
-     * <code>BufferedReader</code>.
-     * <p>
-     * Character encoding names can be found at
-     * <a href="http://www.iana.org/assignments/character-sets">IANA</a>.
-     * <p>
-     * Due to the implementation of OutputStreamWriter, this method performs a
-     * flush.
-     * <p>
-     * This method uses {@link OutputStreamWriter}.
-     *
-     * @param input  the <code>Reader</code> to read from
-     * @param output  the <code>OutputStream</code> to write to
-     * @param encoding  the encoding to use, null means platform default
-     * @throws NullPointerException if the input or output is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static void copy(Reader input, OutputStream output, String encoding)
-            throws IOException {
-        if (encoding == null) {
-            copy(input, output);
-        } else {
-            OutputStreamWriter out = new OutputStreamWriter(output, encoding);
-            copy(input, out);
-            // XXX Unless anyone is planning on rewriting OutputStreamWriter,
-            // we have to flush here.
-            out.flush();
-        }
-    }
-
-    // content equals
-    //-----------------------------------------------------------------------
-    /**
-     * Compare the contents of two Streams to determine if they are equal or
-     * not.
-     * <p>
-     * This method buffers the input internally using
-     * <code>BufferedInputStream</code> if they are not already buffered.
-     *
-     * @param input1  the first stream
-     * @param input2  the second stream
-     * @return true if the content of the streams are equal or they both don't
-     * exist, false otherwise
-     * @throws NullPointerException if either input is null
-     * @throws IOException if an I/O error occurs
-     */
-    public static boolean contentEquals(InputStream input1, InputStream input2)
-            throws IOException {
-        if (!(input1 instanceof BufferedInputStream)) {
-            input1 = new BufferedInputStream(input1);
-        }
-        if (!(input2 instanceof BufferedInputStream)) {
-            input2 = new BufferedInputStream(input2);
-        }
-
-        int ch = input1.read();
-        while (-1 != ch) {
-            int ch2 = input2.read();
-            if (ch != ch2) {
-                return false;
-            }
-            ch = input1.read();
-        }
-
-        int ch2 = input2.read();
-        return (ch2 == -1);
-    }
-
-    /**
-     * Compare the contents of two Readers to determine if they are equal or
-     * not.
-     * <p>
-     * This method buffers the input internally using
-     * <code>BufferedReader</code> if they are not already buffered.
-     *
-     * @param input1  the first reader
-     * @param input2  the second reader
-     * @return true if the content of the readers are equal or they both don't
-     * exist, false otherwise
-     * @throws NullPointerException if either input is null
-     * @throws IOException if an I/O error occurs
-     * @since Commons IO 1.1
-     */
-    public static boolean contentEquals(Reader input1, Reader input2)
-            throws IOException {
-        if (!(input1 instanceof BufferedReader)) {
-            input1 = new BufferedReader(input1);
-        }
-        if (!(input2 instanceof BufferedReader)) {
-            input2 = new BufferedReader(input2);
-        }
-
-        int ch = input1.read();
-        while (-1 != ch) {
-            int ch2 = input2.read();
-            if (ch != ch2) {
-                return false;
-            }
-            ch = input1.read();
-        }
-
-        int ch2 = input2.read();
-        return (ch2 == -1);
-    }
-
-}
diff --git a/src/org/apache/james/mime4j/BodyDescriptor.java b/src/org/apache/james/mime4j/BodyDescriptor.java
deleted file mode 100644
index 867c43d..0000000
--- a/src/org/apache/james/mime4j/BodyDescriptor.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Encapsulates the values of the MIME-specific header fields
- * (which starts with <code>Content-</code>).
- *
- *
- * @version $Id: BodyDescriptor.java,v 1.4 2005/02/11 10:08:37 ntherning Exp $
- */
-public class BodyDescriptor {
-    private static Log log = LogFactory.getLog(BodyDescriptor.class);
-
-    private String mimeType = "text/plain";
-    private String boundary = null;
-    private String charset = "us-ascii";
-    private String transferEncoding = "7bit";
-    private Map<String, String> parameters = new HashMap<String, String>();
-    private boolean contentTypeSet = false;
-    private boolean contentTransferEncSet = false;
-
-    /**
-     * Creates a new root <code>BodyDescriptor</code> instance.
-     */
-    public BodyDescriptor() {
-        this(null);
-    }
-
-    /**
-     * Creates a new <code>BodyDescriptor</code> instance.
-     *
-     * @param parent the descriptor of the parent or <code>null</code> if this
-     *        is the root descriptor.
-     */
-    public BodyDescriptor(BodyDescriptor parent) {
-        if (parent != null && parent.isMimeType("multipart/digest")) {
-            mimeType = "message/rfc822";
-        } else {
-            mimeType = "text/plain";
-        }
-    }
-
-    /**
-     * Should be called for each <code>Content-</code> header field of
-     * a MIME message or part.
-     *
-     * @param name the field name.
-     * @param value the field value.
-     */
-    public void addField(String name, String value) {
-
-        name = name.trim().toLowerCase();
-
-        if (name.equals("content-transfer-encoding") && !contentTransferEncSet) {
-            contentTransferEncSet = true;
-
-            value = value.trim().toLowerCase();
-            if (value.length() > 0) {
-                transferEncoding = value;
-            }
-
-        } else if (name.equals("content-type") && !contentTypeSet) {
-            contentTypeSet = true;
-
-            value = value.trim();
-
-            /*
-             * Unfold Content-Type value
-             */
-            StringBuffer sb = new StringBuffer();
-            for (int i = 0; i < value.length(); i++) {
-                char c = value.charAt(i);
-                if (c == '\r' || c == '\n') {
-                    continue;
-                }
-                sb.append(c);
-            }
-
-            Map<String, String> params = getHeaderParams(sb.toString());
-
-            String main = params.get("");
-            if (main != null) {
-                main = main.toLowerCase().trim();
-                int index = main.indexOf('/');
-                boolean valid = false;
-                if (index != -1) {
-                    String type = main.substring(0, index).trim();
-                    String subtype = main.substring(index + 1).trim();
-                    if (type.length() > 0 && subtype.length() > 0) {
-                        main = type + "/" + subtype;
-                        valid = true;
-                    }
-                }
-
-                if (!valid) {
-                    main = null;
-                }
-            }
-            String b = params.get("boundary");
-
-            if (main != null
-                    && ((main.startsWith("multipart/") && b != null)
-                            || !main.startsWith("multipart/"))) {
-
-                mimeType = main;
-            }
-
-            if (isMultipart()) {
-                boundary = b;
-            }
-
-            String c = params.get("charset");
-            if (c != null) {
-                c = c.trim();
-                if (c.length() > 0) {
-                    charset = c.toLowerCase();
-                }
-            }
-
-            /*
-             * Add all other parameters to parameters.
-             */
-            parameters.putAll(params);
-            parameters.remove("");
-            parameters.remove("boundary");
-            parameters.remove("charset");
-        }
-    }
-
-    private Map<String, String> getHeaderParams(String headerValue) {
-        Map<String, String> result = new HashMap<String, String>();
-
-        // split main value and parameters
-        String main;
-        String rest;
-        if (headerValue.indexOf(";") == -1) {
-            main = headerValue;
-            rest = null;
-        } else {
-            main = headerValue.substring(0, headerValue.indexOf(";"));
-            rest = headerValue.substring(main.length() + 1);
-        }
-
-        result.put("", main);
-        if (rest != null) {
-            char[] chars = rest.toCharArray();
-            StringBuffer paramName = new StringBuffer();
-            StringBuffer paramValue = new StringBuffer();
-
-            final byte READY_FOR_NAME = 0;
-            final byte IN_NAME = 1;
-            final byte READY_FOR_VALUE = 2;
-            final byte IN_VALUE = 3;
-            final byte IN_QUOTED_VALUE = 4;
-            final byte VALUE_DONE = 5;
-            final byte ERROR = 99;
-
-            byte state = READY_FOR_NAME;
-            boolean escaped = false;
-            for (int i = 0; i < chars.length; i++) {
-                char c = chars[i];
-
-                switch (state) {
-                    case ERROR:
-                        if (c == ';')
-                            state = READY_FOR_NAME;
-                        break;
-
-                    case READY_FOR_NAME:
-                        if (c == '=') {
-                            log.error("Expected header param name, got '='");
-                            state = ERROR;
-                            break;
-                        }
-
-                        paramName = new StringBuffer();
-                        paramValue = new StringBuffer();
-
-                        state = IN_NAME;
-                        // $FALL-THROUGH$
-
-                    case IN_NAME:
-                        if (c == '=') {
-                            if (paramName.length() == 0)
-                                state = ERROR;
-                            else
-                                state = READY_FOR_VALUE;
-                            break;
-                        }
-
-                        // not '='... just add to name
-                        paramName.append(c);
-                        break;
-
-                    case READY_FOR_VALUE:
-                        boolean fallThrough = false;
-                        switch (c) {
-                            case ' ':
-                            case '\t':
-                                break;  // ignore spaces, especially before '"'
-
-                            case '"':
-                                state = IN_QUOTED_VALUE;
-                                break;
-
-                            default:
-                                state = IN_VALUE;
-                                fallThrough = true;
-                                break;
-                        }
-                        if (!fallThrough)
-                            break;
-
-                        // $FALL-THROUGH$
-
-                    case IN_VALUE:
-                        fallThrough = false;
-                        switch (c) {
-                            case ';':
-                            case ' ':
-                            case '\t':
-                                result.put(
-                                   paramName.toString().trim().toLowerCase(),
-                                   paramValue.toString().trim());
-                                state = VALUE_DONE;
-                                fallThrough = true;
-                                break;
-                            default:
-                                paramValue.append(c);
-                                break;
-                        }
-                        if (!fallThrough)
-                            break;
-
-                        // $FALL-THROUGH$
-
-                    case VALUE_DONE:
-                        switch (c) {
-                            case ';':
-                                state = READY_FOR_NAME;
-                                break;
-
-                            case ' ':
-                            case '\t':
-                                break;
-
-                            default:
-                                state = ERROR;
-                                break;
-                        }
-                        break;
-
-                    case IN_QUOTED_VALUE:
-                        switch (c) {
-                            case '"':
-                                if (!escaped) {
-                                    // don't trim quoted strings; the spaces could be intentional.
-                                    result.put(
-                                            paramName.toString().trim().toLowerCase(),
-                                            paramValue.toString());
-                                    state = VALUE_DONE;
-                                } else {
-                                    escaped = false;
-                                    paramValue.append(c);
-                                }
-                                break;
-
-                            case '\\':
-                                if (escaped) {
-                                    paramValue.append('\\');
-                                }
-                                escaped = !escaped;
-                                break;
-
-                            default:
-                                if (escaped) {
-                                    paramValue.append('\\');
-                                }
-                                escaped = false;
-                                paramValue.append(c);
-                                break;
-                        }
-                        break;
-
-                }
-            }
-
-            // done looping.  check if anything is left over.
-            if (state == IN_VALUE) {
-                result.put(
-                        paramName.toString().trim().toLowerCase(),
-                        paramValue.toString().trim());
-            }
-        }
-
-        return result;
-    }
-
-
-    public boolean isMimeType(String mimeType) {
-        return this.mimeType.equals(mimeType.toLowerCase());
-    }
-
-    /**
-     * Return true if the BodyDescriptor belongs to a message
-     */
-    public boolean isMessage() {
-        return mimeType.equals("message/rfc822");
-    }
-
-    /**
-     * Return true if the BodyDescripotro belongs to a multipart
-     */
-    public boolean isMultipart() {
-        return mimeType.startsWith("multipart/");
-    }
-
-    /**
-     * Return the MimeType
-     */
-    public String getMimeType() {
-        return mimeType;
-    }
-
-    /**
-     * Return the boundary
-     */
-    public String getBoundary() {
-        return boundary;
-    }
-
-    /**
-     * Return the charset
-     */
-    public String getCharset() {
-        return charset;
-    }
-
-    /**
-     * Return all parameters for the BodyDescriptor
-     */
-    public Map<String, String> getParameters() {
-        return parameters;
-    }
-
-    /**
-     * Return the TransferEncoding
-     */
-    public String getTransferEncoding() {
-        return transferEncoding;
-    }
-
-    /**
-     * Return true if it's base64 encoded
-     */
-    public boolean isBase64Encoded() {
-        return "base64".equals(transferEncoding);
-    }
-
-    /**
-     * Return true if it's quoted-printable
-     */
-    public boolean isQuotedPrintableEncoded() {
-        return "quoted-printable".equals(transferEncoding);
-    }
-
-    @Override
-    public String toString() {
-        return mimeType;
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/CloseShieldInputStream.java b/src/org/apache/james/mime4j/CloseShieldInputStream.java
deleted file mode 100644
index d9f3b07..0000000
--- a/src/org/apache/james/mime4j/CloseShieldInputStream.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-/**
- * InputStream that shields its underlying input stream from
- * being closed.
- *
- *
- * @version $Id: CloseShieldInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
- */
-public class CloseShieldInputStream extends InputStream {
-
-    /**
-     * Underlying InputStream
-     */
-    private InputStream is;
-
-    public CloseShieldInputStream(InputStream is) {
-        this.is = is;
-    }
-
-    public InputStream getUnderlyingStream() {
-        return is;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        checkIfClosed();
-        return is.read();
-    }
-
-    /**
-     * @see java.io.InputStream#available()
-     */
-    public int available() throws IOException {
-        checkIfClosed();
-        return is.available();
-    }
-
-
-    /**
-     * Set the underlying InputStream to null
-     */
-    public void close() throws IOException {
-        is = null;
-    }
-
-    /**
-     * @see java.io.FilterInputStream#reset()
-     */
-    public synchronized void reset() throws IOException {
-        checkIfClosed();
-        is.reset();
-    }
-
-    /**
-     * @see java.io.FilterInputStream#markSupported()
-     */
-    public boolean markSupported() {
-        if (is == null)
-            return false;
-        return is.markSupported();
-    }
-
-    /**
-     * @see java.io.FilterInputStream#mark(int)
-     */
-    public synchronized void mark(int readlimit) {
-        if (is != null)
-            is.mark(readlimit);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#skip(long)
-     */
-    public long skip(long n) throws IOException {
-        checkIfClosed();
-        return is.skip(n);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#read(byte[])
-     */
-    public int read(byte b[]) throws IOException {
-        checkIfClosed();
-        return is.read(b);
-    }
-
-    /**
-     * @see java.io.FilterInputStream#read(byte[], int, int)
-     */
-    public int read(byte b[], int off, int len) throws IOException {
-        checkIfClosed();
-        return is.read(b, off, len);
-    }
-
-    /**
-     * Check if the underlying InputStream is null. If so throw an Exception
-     *
-     * @throws IOException if the underlying InputStream is null
-     */
-    private void checkIfClosed() throws IOException {
-        if (is == null)
-            throw new IOException("Stream is closed");
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/ContentHandler.java b/src/org/apache/james/mime4j/ContentHandler.java
deleted file mode 100644
index b437e73..0000000
--- a/src/org/apache/james/mime4j/ContentHandler.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * <p>
- * Receives notifications of the content of a plain RFC822 or MIME message.
- * Implement this interface and register an instance of that implementation
- * with a <code>MimeStreamParser</code> instance using its
- * {@link org.apache.james.mime4j.MimeStreamParser#setContentHandler(ContentHandler)}
- * method. The parser uses the <code>ContentHandler</code> instance to report
- * basic message-related events like the start and end of the body of a
- * part in a multipart MIME entity.
- * </p>
- * <p>
- * Events will be generated in the order the corresponding elements occur in
- * the message stream parsed by the parser. E.g.:
- * <pre>
- *      startMessage()
- *          startHeader()
- *              field(...)
- *              field(...)
- *              ...
- *          endHeader()
- *          startMultipart()
- *              preamble(...)
- *              startBodyPart()
- *                  startHeader()
- *                      field(...)
- *                      field(...)
- *                      ...
- *                  endHeader()
- *                  body()
- *              endBodyPart()
- *              startBodyPart()
- *                  startHeader()
- *                      field(...)
- *                      field(...)
- *                      ...
- *                  endHeader()
- *                  body()
- *              endBodyPart()
- *              epilogue(...)
- *          endMultipart()
- *      endMessage()
- * </pre>
- * The above shows an example of a MIME message consisting of a multipart
- * body containing two body parts.
- * </p>
- * <p>
- * See MIME RFCs 2045-2049 for more information on the structure of MIME
- * messages and RFC 822 and 2822 for the general structure of Internet mail
- * messages.
- * </p>
- *
- *
- * @version $Id: ContentHandler.java,v 1.3 2004/10/02 12:41:10 ntherning Exp $
- */
-public interface ContentHandler {
-    /**
-     * Called when a new message starts (a top level message or an embedded
-     * rfc822 message).
-     */
-    void startMessage();
-
-    /**
-     * Called when a message ends.
-     */
-    void endMessage();
-
-    /**
-     * Called when a new body part starts inside a
-     * <code>multipart/*</code> entity.
-     */
-    void startBodyPart();
-
-    /**
-     * Called when a body part ends.
-     */
-    void endBodyPart();
-
-    /**
-     * Called when a header (of a message or body part) is about to be parsed.
-     */
-    void startHeader();
-
-    /**
-     * Called for each field of a header.
-     *
-     * @param fieldData the raw contents of the field
-     *        (<code>Field-Name: field value</code>). The value will not be
-     *        unfolded.
-     */
-    void field(String fieldData);
-
-    /**
-     * Called when there are no more header fields in a message or body part.
-     */
-    void endHeader();
-
-    /**
-     * Called for the preamble (whatever comes before the first body part)
-     * of a <code>multipart/*</code> entity.
-     *
-     * @param is used to get the contents of the preamble.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void preamble(InputStream is) throws IOException;
-
-    /**
-     * Called for the epilogue (whatever comes after the final body part)
-     * of a <code>multipart/*</code> entity.
-     *
-     * @param is used to get the contents of the epilogue.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void epilogue(InputStream is) throws IOException;
-
-    /**
-     * Called when the body of a multipart entity is about to be parsed.
-     *
-     * @param bd encapsulates the values (either read from the
-     *        message stream or, if not present, determined implictly
-     *        as described in the
-     *        MIME rfc:s) of the <code>Content-Type</code> and
-     *        <code>Content-Transfer-Encoding</code> header fields.
-     */
-    void startMultipart(BodyDescriptor bd);
-
-    /**
-     * Called when the body of an entity has been parsed.
-     */
-    void endMultipart();
-
-    /**
-     * Called when the body of a discrete (non-multipart) entity is about to
-     * be parsed.
-     *
-     * @param bd see {@link #startMultipart(BodyDescriptor)}
-     * @param is the contents of the body. NOTE: this is the raw body contents
-     *           - it will not be decoded if encoded. The <code>bd</code>
-     *           parameter should be used to determine how the stream data
-     *           should be decoded.
-     * @throws IOException should be thrown on I/O errors.
-     */
-    void body(BodyDescriptor bd, InputStream is) throws IOException;
-
-    /**
-     * Called when a new entity (message or body part) starts and the
-     * parser is in <code>raw</code> mode.
-     *
-     * @param is the raw contents of the entity.
-     * @throws IOException should be thrown on I/O errors.
-     * @see MimeStreamParser#setRaw(boolean)
-     */
-    void raw(InputStream is) throws IOException;
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/EOLConvertingInputStream.java b/src/org/apache/james/mime4j/EOLConvertingInputStream.java
deleted file mode 100644
index d6ef706..0000000
--- a/src/org/apache/james/mime4j/EOLConvertingInputStream.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-
-/**
- * InputStream which converts <code>\r</code>
- * bytes not followed by <code>\n</code> and <code>\n</code> not
- * preceded by <code>\r</code> to <code>\r\n</code>.
- *
- *
- * @version $Id: EOLConvertingInputStream.java,v 1.4 2004/11/29 13:15:42 ntherning Exp $
- */
-public class EOLConvertingInputStream extends InputStream {
-    /** Converts single '\r' to '\r\n' */
-    public static final int CONVERT_CR   = 1;
-    /** Converts single '\n' to '\r\n' */
-    public static final int CONVERT_LF   = 2;
-    /** Converts single '\r' and '\n' to '\r\n' */
-    public static final int CONVERT_BOTH = 3;
-
-    private PushbackInputStream in = null;
-    private int previous = 0;
-    private int flags = CONVERT_BOTH;
-    private int size = 0;
-    private int pos = 0;
-    private int nextTenPctPos;
-    private int tenPctSize;
-    private Callback callback;
-
-    public interface Callback {
-        public void report(int bytesRead);
-    }
-
-    /**
-     * Creates a new <code>EOLConvertingInputStream</code>
-     * instance converting bytes in the given <code>InputStream</code>.
-     * The flag <code>CONVERT_BOTH</code> is the default.
-     *
-     * @param in the <code>InputStream</code> to read from.
-     */
-    public EOLConvertingInputStream(InputStream _in) {
-        super();
-        in = new PushbackInputStream(_in, 2);
-    }
-
-    /**
-     * Creates a new <code>EOLConvertingInputStream</code>
-     * instance converting bytes in the given <code>InputStream</code>.
-     *
-     * @param _in the <code>InputStream</code> to read from.
-     * @param _size the size of the input stream (need not be exact)
-     * @param _callback a callback reporting when each 10% of stream's size is reached
-     */
-    public EOLConvertingInputStream(InputStream _in, int _size, Callback _callback) {
-        this(_in);
-        size = _size;
-        tenPctSize = size / 10;
-        nextTenPctPos = tenPctSize;
-        callback = _callback;
-    }
-
-    /**
-     * Closes the underlying stream.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        in.close();
-    }
-
-    private int readByte() throws IOException {
-        int b = in.read();
-        if (b != -1) {
-            if (callback != null && pos++ == nextTenPctPos) {
-                nextTenPctPos += tenPctSize;
-                if (callback != null) {
-                    callback.report(pos);
-                }
-            }
-        }
-        return b;
-    }
-
-    private void unreadByte(int c) throws IOException {
-        in.unread(c);
-        pos--;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        int b = readByte();
-
-        if (b == -1) {
-            pos = size;
-            return -1;
-        }
-
-        if ((flags & CONVERT_CR) != 0 && b == '\r') {
-            int c = readByte();
-            if (c != -1) {
-                unreadByte(c);
-            }
-            if (c != '\n') {
-                unreadByte('\n');
-            }
-        } else if ((flags & CONVERT_LF) != 0 && b == '\n' && previous != '\r') {
-            b = '\r';
-            unreadByte('\n');
-        }
-
-        previous = b;
-
-        return b;
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/Log.java b/src/org/apache/james/mime4j/Log.java
deleted file mode 100644
index 5eeead5..0000000
--- a/src/org/apache/james/mime4j/Log.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.james.mime4j;
-
-/**
- * Empty stub for the apache logging library.
- */
-public class Log {
-    private static final String LOG_TAG = "Email Log";
-
-    public Log(Class mClazz) {
-    }
-
-    public boolean isDebugEnabled() {
-        return false;
-    }
-
-    public boolean isErrorEnabled() {
-        return true;
-    }
-
-    public boolean isFatalEnabled() {
-        return true;
-    }
-
-    public boolean isInfoEnabled() {
-        return false;
-    }
-
-    public boolean isTraceEnabled() {
-        return false;
-    }
-
-    public boolean isWarnEnabled() {
-        return true;
-    }
-
-    public void trace(Object message) {
-        if (!isTraceEnabled()) return;
-        android.util.Log.v(LOG_TAG, toString(message, null));
-    }
-
-    public void trace(Object message, Throwable t) {
-        if (!isTraceEnabled()) return;
-        android.util.Log.v(LOG_TAG, toString(message, t));
-    }
-
-    public void debug(Object message) {
-        if (!isDebugEnabled()) return;
-        android.util.Log.d(LOG_TAG, toString(message, null));
-    }
-
-    public void debug(Object message, Throwable t) {
-        if (!isDebugEnabled()) return;
-        android.util.Log.d(LOG_TAG, toString(message, t));
-    }
-
-    public void info(Object message) {
-        if (!isInfoEnabled()) return;
-        android.util.Log.i(LOG_TAG, toString(message, null));
-    }
-
-    public void info(Object message, Throwable t) {
-        if (!isInfoEnabled()) return;
-        android.util.Log.i(LOG_TAG, toString(message, t));
-    }
-
-    public void warn(Object message) {
-        android.util.Log.w(LOG_TAG, toString(message, null));
-    }
-
-    public void warn(Object message, Throwable t) {
-        android.util.Log.w(LOG_TAG, toString(message, t));
-    }
-
-    public void error(Object message) {
-        android.util.Log.e(LOG_TAG, toString(message, null));
-    }
-
-    public void error(Object message, Throwable t) {
-        android.util.Log.e(LOG_TAG, toString(message, t));
-    }
-
-    public void fatal(Object message) {
-        android.util.Log.e(LOG_TAG, toString(message, null));
-    }
-
-    public void fatal(Object message, Throwable t) {
-        android.util.Log.e(LOG_TAG, toString(message, t));
-    }
-
-    private static String toString(Object o, Throwable t) {
-        String m = (o == null) ? "(null)" : o.toString();
-        if (t == null) {
-            return m;
-        } else {
-            return m + " " + t.getMessage();
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/LogFactory.java b/src/org/apache/james/mime4j/LogFactory.java
deleted file mode 100644
index ed6e3de..0000000
--- a/src/org/apache/james/mime4j/LogFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.james.mime4j;
-
-/**
- * Empty stub for the apache logging library.
- */
-public final class LogFactory {
-    private LogFactory() {
-    }
-
-    public static Log getLog(Class clazz) {
-        return new Log(clazz);
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/MimeBoundaryInputStream.java b/src/org/apache/james/mime4j/MimeBoundaryInputStream.java
deleted file mode 100644
index c6d6f24..0000000
--- a/src/org/apache/james/mime4j/MimeBoundaryInputStream.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-
-/**
- * Stream that constrains itself to a single MIME body part.
- * After the stream ends (i.e. read() returns -1) {@link #hasMoreParts()}
- * can be used to determine if a final boundary has been seen or not.
- * If {@link #parentEOF()} is <code>true</code> an unexpected end of stream
- * has been detected in the parent stream.
- *
- *
- *
- * @version $Id: MimeBoundaryInputStream.java,v 1.2 2004/11/29 13:15:42 ntherning Exp $
- */
-public class MimeBoundaryInputStream extends InputStream {
-
-    private PushbackInputStream s = null;
-    private byte[] boundary = null;
-    private boolean first = true;
-    private boolean eof = false;
-    private boolean parenteof = false;
-    private boolean moreParts = true;
-
-    /**
-     * Creates a new MimeBoundaryInputStream.
-     * @param s The underlying stream.
-     * @param boundary Boundary string (not including leading hyphens).
-     */
-    public MimeBoundaryInputStream(InputStream s, String boundary)
-            throws IOException {
-
-        this.s = new PushbackInputStream(s, boundary.length() + 4);
-
-        boundary = "--" + boundary;
-        this.boundary = new byte[boundary.length()];
-        for (int i = 0; i < this.boundary.length; i++) {
-            this.boundary[i] = (byte) boundary.charAt(i);
-        }
-
-        /*
-         * By reading one byte we will update moreParts to be as expected
-         * before any bytes have been read.
-         */
-        int b = read();
-        if (b != -1) {
-            this.s.unread(b);
-        }
-    }
-
-    /**
-     * Closes the underlying stream.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        s.close();
-    }
-
-    /**
-     * Determines if the underlying stream has more parts (this stream has
-     * not seen an end boundary).
-     *
-     * @return <code>true</code> if there are more parts in the underlying
-     *         stream, <code>false</code> otherwise.
-     */
-    public boolean hasMoreParts() {
-        return moreParts;
-    }
-
-    /**
-     * Determines if the parent stream has reached EOF
-     *
-     * @return <code>true</code>  if EOF has been reached for the parent stream,
-     *         <code>false</code> otherwise.
-     */
-    public boolean parentEOF() {
-        return parenteof;
-    }
-
-    /**
-     * Consumes all unread bytes of this stream. After a call to this method
-     * this stream will have reached EOF.
-     *
-     * @throws IOException on I/O errors.
-     */
-    public void consume() throws IOException {
-        while (read() != -1) {
-        }
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        if (eof) {
-            return -1;
-        }
-
-        if (first) {
-            first = false;
-            if (matchBoundary()) {
-                return -1;
-            }
-        }
-
-        int b1 = s.read();
-        int b2 = s.read();
-
-        if (b1 == '\r' && b2 == '\n') {
-            if (matchBoundary()) {
-                return -1;
-            }
-        }
-
-        if (b2 != -1) {
-            s.unread(b2);
-        }
-
-        parenteof = b1 == -1;
-        eof = parenteof;
-
-        return b1;
-    }
-
-    private boolean matchBoundary() throws IOException {
-
-        for (int i = 0; i < boundary.length; i++) {
-            int b = s.read();
-            if (b != boundary[i]) {
-                if (b != -1) {
-                    s.unread(b);
-                }
-                for (int j = i - 1; j >= 0; j--) {
-                    s.unread(boundary[j]);
-                }
-                return false;
-            }
-        }
-
-        /*
-         * We have a match. Is it an end boundary?
-         */
-        int prev = s.read();
-        int curr = s.read();
-        moreParts = !(prev == '-' && curr == '-');
-        do {
-            if (curr == '\n' && prev == '\r') {
-                break;
-            }
-            prev = curr;
-        } while ((curr = s.read()) != -1);
-
-        if (curr == -1) {
-            moreParts = false;
-            parenteof = true;
-        }
-
-        eof = true;
-
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/MimeStreamParser.java b/src/org/apache/james/mime4j/MimeStreamParser.java
deleted file mode 100644
index a8aad5a..0000000
--- a/src/org/apache/james/mime4j/MimeStreamParser.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import org.apache.james.mime4j.decoder.Base64InputStream;
-import org.apache.james.mime4j.decoder.QuotedPrintableInputStream;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.BitSet;
-import java.util.LinkedList;
-
-/**
- * <p>
- * Parses MIME (or RFC822) message streams of bytes or characters and reports
- * parsing events to a <code>ContentHandler</code> instance.
- * </p>
- * <p>
- * Typical usage:<br/>
- * <pre>
- *      ContentHandler handler = new MyHandler();
- *      MimeStreamParser parser = new MimeStreamParser();
- *      parser.setContentHandler(handler);
- *      parser.parse(new BufferedInputStream(new FileInputStream("mime.msg")));
- * </pre>
- * <strong>NOTE:</strong> All lines must end with CRLF
- * (<code>\r\n</code>). If you are unsure of the line endings in your stream
- * you should wrap it in a {@link org.apache.james.mime4j.EOLConvertingInputStream} instance.
- *
- *
- * @version $Id: MimeStreamParser.java,v 1.8 2005/02/11 10:12:02 ntherning Exp $
- */
-public class MimeStreamParser {
-    private static final Log log = LogFactory.getLog(MimeStreamParser.class);
-
-    private static BitSet fieldChars = null;
-
-    private RootInputStream rootStream = null;
-    private LinkedList<BodyDescriptor> bodyDescriptors = new LinkedList<BodyDescriptor>();
-    private ContentHandler handler = null;
-    private boolean raw = false;
-    private boolean prematureEof = false;
-
-    static {
-        fieldChars = new BitSet();
-        for (int i = 0x21; i <= 0x39; i++) {
-            fieldChars.set(i);
-        }
-        for (int i = 0x3b; i <= 0x7e; i++) {
-            fieldChars.set(i);
-        }
-    }
-
-    /**
-     * Creates a new <code>MimeStreamParser</code> instance.
-     */
-    public MimeStreamParser() {
-    }
-
-    /**
-     * Parses a stream of bytes containing a MIME message.
-     *
-     * @param is the stream to parse.
-     * @throws IOException on I/O errors.
-     */
-    public void parse(InputStream is) throws IOException {
-        rootStream = new RootInputStream(is);
-        parseMessage(rootStream);
-    }
-
-    /**
-     * Determines if this parser is currently in raw mode.
-     *
-     * @return <code>true</code> if in raw mode, <code>false</code>
-     *         otherwise.
-     * @see #setRaw(boolean)
-     */
-    public boolean isRaw() {
-        return raw;
-    }
-
-    /**
-     * Enables or disables raw mode. In raw mode all future entities
-     * (messages or body parts) in the stream will be reported to the
-     * {@link ContentHandler#raw(InputStream)} handler method only.
-     * The stream will contain the entire unparsed entity contents
-     * including header fields and whatever is in the body.
-     *
-     * @param raw <code>true</code> enables raw mode, <code>false</code>
-     *        disables it.
-     */
-    public void setRaw(boolean raw) {
-        this.raw = raw;
-    }
-
-    /**
-     * Finishes the parsing and stops reading lines.
-     * NOTE: No more lines will be parsed but the parser
-     * will still call
-     * {@link ContentHandler#endMultipart()},
-     * {@link ContentHandler#endBodyPart()},
-     * {@link ContentHandler#endMessage()}, etc to match previous calls
-     * to
-     * {@link ContentHandler#startMultipart(BodyDescriptor)},
-     * {@link ContentHandler#startBodyPart()},
-     * {@link ContentHandler#startMessage()}, etc.
-     */
-    public void stop() {
-        rootStream.truncate();
-    }
-
-    /**
-     * Parses an entity which consists of a header followed by a body containing
-     * arbitrary data, body parts or an embedded message.
-     *
-     * @param is the stream to parse.
-     * @throws IOException on I/O errors.
-     */
-    private void parseEntity(InputStream is) throws IOException {
-        BodyDescriptor bd = parseHeader(is);
-
-        if (bd.isMultipart()) {
-            bodyDescriptors.addFirst(bd);
-
-            handler.startMultipart(bd);
-
-            MimeBoundaryInputStream tempIs =
-                new MimeBoundaryInputStream(is, bd.getBoundary());
-            handler.preamble(new CloseShieldInputStream(tempIs));
-            tempIs.consume();
-
-            while (tempIs.hasMoreParts()) {
-                tempIs = new MimeBoundaryInputStream(is, bd.getBoundary());
-                parseBodyPart(tempIs);
-                tempIs.consume();
-                if (tempIs.parentEOF()) {
-                    prematureEof = true;
-//                    if (log.isWarnEnabled()) {
-//                        log.warn("Line " + rootStream.getLineNumber()
-//                                + ": Body part ended prematurely. "
-//                                + "Higher level boundary detected or "
-//                                + "EOF reached.");
-//                    }
-                    break;
-                }
-            }
-
-            handler.epilogue(new CloseShieldInputStream(is));
-
-            handler.endMultipart();
-
-            bodyDescriptors.removeFirst();
-
-        } else if (bd.isMessage()) {
-            if (bd.isBase64Encoded()) {
-                log.warn("base64 encoded message/rfc822 detected");
-                is = new EOLConvertingInputStream(
-                        new Base64InputStream(is));
-            } else if (bd.isQuotedPrintableEncoded()) {
-                log.warn("quoted-printable encoded message/rfc822 detected");
-                is = new EOLConvertingInputStream(
-                        new QuotedPrintableInputStream(is));
-            }
-            bodyDescriptors.addFirst(bd);
-            parseMessage(is);
-            bodyDescriptors.removeFirst();
-        } else {
-            handler.body(bd, new CloseShieldInputStream(is));
-        }
-
-        /*
-         * Make sure the stream has been consumed.
-         */
-        while (is.read() != -1) {
-        }
-    }
-
-    private void parseMessage(InputStream is) throws IOException {
-        if (raw) {
-            handler.raw(new CloseShieldInputStream(is));
-        } else {
-            handler.startMessage();
-            parseEntity(is);
-            handler.endMessage();
-        }
-    }
-
-    public boolean getPrematureEof() {
-        return prematureEof;
-    }
-
-    private void parseBodyPart(InputStream is) throws IOException {
-        if (raw) {
-            handler.raw(new CloseShieldInputStream(is));
-        } else {
-            handler.startBodyPart();
-            parseEntity(is);
-            handler.endBodyPart();
-        }
-    }
-
-    /**
-     * Parses a header.
-     *
-     * @param is the stream to parse.
-     * @return a <code>BodyDescriptor</code> describing the body following
-     *         the header.
-     */
-    private BodyDescriptor parseHeader(InputStream is) throws IOException {
-        BodyDescriptor bd = new BodyDescriptor(bodyDescriptors.isEmpty()
-                        ? null : (BodyDescriptor) bodyDescriptors.getFirst());
-
-        handler.startHeader();
-
-        int lineNumber = rootStream.getLineNumber();
-
-        StringBuffer sb = new StringBuffer();
-        int curr = 0;
-        int prev = 0;
-        while ((curr = is.read()) != -1) {
-            if (curr == '\n' && (prev == '\n' || prev == 0)) {
-                /*
-                 * [\r]\n[\r]\n or an immediate \r\n have been seen.
-                 */
-                sb.deleteCharAt(sb.length() - 1);
-                break;
-            }
-            sb.append((char) curr);
-            prev = curr == '\r' ? prev : curr;
-        }
-
-//        if (curr == -1 && log.isWarnEnabled()) {
-//            log.warn("Line " + rootStream.getLineNumber()
-//                    + ": Unexpected end of headers detected. "
-//                    + "Boundary detected in header or EOF reached.");
-//        }
-
-        int start = 0;
-        int pos = 0;
-        int startLineNumber = lineNumber;
-        while (pos < sb.length()) {
-            while (pos < sb.length() && sb.charAt(pos) != '\r') {
-                pos++;
-            }
-            if (pos < sb.length() - 1 && sb.charAt(pos + 1) != '\n') {
-                pos++;
-                continue;
-            }
-
-            if (pos >= sb.length() - 2 || fieldChars.get(sb.charAt(pos + 2))) {
-
-                /*
-                 * field should be the complete field data excluding the
-                 * trailing \r\n.
-                 */
-                String field = sb.substring(start, pos);
-                start = pos + 2;
-
-                /*
-                 * Check for a valid field.
-                 */
-                int index = field.indexOf(':');
-                boolean valid = false;
-                if (index != -1 && fieldChars.get(field.charAt(0))) {
-                    valid = true;
-                    String fieldName = field.substring(0, index).trim();
-                    for (int i = 0; i < fieldName.length(); i++) {
-                        if (!fieldChars.get(fieldName.charAt(i))) {
-                            valid = false;
-                            break;
-                        }
-                    }
-
-                    if (valid) {
-                        handler.field(field);
-                        bd.addField(fieldName, field.substring(index + 1));
-                    }
-                }
-
-                if (!valid && log.isWarnEnabled()) {
-                    log.warn("Line " + startLineNumber
-                            + ": Ignoring invalid field: '" + field.trim() + "'");
-                }
-
-                startLineNumber = lineNumber;
-            }
-
-            pos += 2;
-            lineNumber++;
-        }
-
-        handler.endHeader();
-
-        return bd;
-    }
-
-    /**
-     * Sets the <code>ContentHandler</code> to use when reporting
-     * parsing events.
-     *
-     * @param h the <code>ContentHandler</code>.
-     */
-    public void setContentHandler(ContentHandler h) {
-        this.handler = h;
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/RootInputStream.java b/src/org/apache/james/mime4j/RootInputStream.java
deleted file mode 100644
index cc8b241..0000000
--- a/src/org/apache/james/mime4j/RootInputStream.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * <code>InputStream</code> used by the parser to wrap the original user
- * supplied stream. This stream keeps track of the current line number and
- * can also be truncated. When truncated the stream will appear to have
- * reached end of file. This is used by the parser's
- * {@link org.apache.james.mime4j.MimeStreamParser#stop()} method.
- *
- *
- * @version $Id: RootInputStream.java,v 1.2 2004/10/02 12:41:10 ntherning Exp $
- */
-class RootInputStream extends InputStream {
-    private InputStream is = null;
-    private int lineNumber = 1;
-    private int prev = -1;
-    private boolean truncated = false;
-
-    /**
-     * Creates a new <code>RootInputStream</code>.
-     *
-     * @param in the stream to read from.
-     */
-    public RootInputStream(InputStream is) {
-        this.is = is;
-    }
-
-    /**
-     * Gets the current line number starting at 1
-     * (the number of <code>\r\n</code> read so far plus 1).
-     *
-     * @return the current line number.
-     */
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    /**
-     * Truncates this <code>InputStream</code>. After this call any
-     * call to {@link #read()}, {@link #read(byte[]) or
-     * {@link #read(byte[], int, int)} will return
-     * -1 as if end-of-file had been reached.
-     */
-    public void truncate() {
-        this.truncated = true;
-    }
-
-    /**
-     * @see java.io.InputStream#read()
-     */
-    public int read() throws IOException {
-        if (truncated) {
-            return -1;
-        }
-
-        int b = is.read();
-        if (prev == '\r' && b == '\n') {
-            lineNumber++;
-        }
-        prev = b;
-        return b;
-    }
-
-    /**
-     *
-     * @see java.io.InputStream#read(byte[], int, int)
-     */
-    public int read(byte[] b, int off, int len) throws IOException {
-        if (truncated) {
-            return -1;
-        }
-
-        int n = is.read(b, off, len);
-        for (int i = off; i < off + n; i++) {
-            if (prev == '\r' && b[i] == '\n') {
-                lineNumber++;
-            }
-            prev = b[i];
-        }
-        return n;
-    }
-
-    /**
-     * @see java.io.InputStream#read(byte[])
-     */
-    public int read(byte[] b) throws IOException {
-        return read(b, 0, b.length);
-    }
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/codec/EncoderUtil.java b/src/org/apache/james/mime4j/codec/EncoderUtil.java
deleted file mode 100644
index 6841bc9..0000000
--- a/src/org/apache/james/mime4j/codec/EncoderUtil.java
+++ /dev/null
@@ -1,630 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.codec;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-import java.util.BitSet;
-import java.util.Locale;
-
-import org.apache.james.mime4j.util.CharsetUtil;
-
-/**
- * ANDROID:  THIS CLASS IS COPIED FROM A NEWER VERSION OF MIME4J
- */
-
-/**
- * Static methods for encoding header field values. This includes encoded-words
- * as defined in <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a>
- * or display-names of an e-mail address, for example.
- * 
- */
-public class EncoderUtil {
-
-    // This array is a lookup table that translates 6-bit positive integer index
-    // values into their "Base64 Alphabet" equivalents as specified in Table 1
-    // of RFC 2045.
-    // ANDROID:  THIS TABLE IS COPIED FROM BASE64OUTPUTSTREAM
-    static final byte[] BASE64_TABLE = { 'A', 'B', 'C', 'D', 'E', 'F',
-            'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
-            'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
-            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
-            't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5',
-            '6', '7', '8', '9', '+', '/' };
-
-    // Byte used to pad output.
-    private static final byte BASE64_PAD = '=';
-
-    private static final BitSet Q_REGULAR_CHARS = initChars("=_?");
-
-    private static final BitSet Q_RESTRICTED_CHARS = initChars("=_?\"#$%&'(),.:;<>@[\\]^`{|}~");
-
-    private static final int MAX_USED_CHARACTERS = 50;
-
-    private static final String ENC_WORD_PREFIX = "=?";
-    private static final String ENC_WORD_SUFFIX = "?=";
-
-    private static final int ENCODED_WORD_MAX_LENGTH = 75; // RFC 2047
-
-    private static final BitSet TOKEN_CHARS = initChars("()<>@,;:\\\"/[]?=");
-
-    private static final BitSet ATEXT_CHARS = initChars("()<>@.,;:\\\"[]");
-
-    private static BitSet initChars(String specials) {
-        BitSet bs = new BitSet(128);
-        for (char ch = 33; ch < 127; ch++) {
-            if (specials.indexOf(ch) == -1) {
-                bs.set(ch);
-            }
-        }
-        return bs;
-    }
-
-    /**
-     * Selects one of the two encodings specified in RFC 2047.
-     */
-    public enum Encoding {
-        /** The B encoding (identical to base64 defined in RFC 2045). */
-        B,
-        /** The Q encoding (similar to quoted-printable defined in RFC 2045). */
-        Q
-    }
-
-    /**
-     * Indicates the intended usage of an encoded word.
-     */
-    public enum Usage {
-        /**
-         * Encoded word is used to replace a 'text' token in any Subject or
-         * Comments header field.
-         */
-        TEXT_TOKEN,
-        /**
-         * Encoded word is used to replace a 'word' entity within a 'phrase',
-         * for example, one that precedes an address in a From, To, or Cc
-         * header.
-         */
-        WORD_ENTITY
-    }
-
-    private EncoderUtil() {
-    }
-
-    /**
-     * Encodes the display-name portion of an address. See <a
-     * href='http://www.faqs.org/rfcs/rfc5322.html'>RFC 5322</a> section 3.4
-     * and <a href='http://www.faqs.org/rfcs/rfc2047.html'>RFC 2047</a> section
-     * 5.3. The specified string should not be folded.
-     * 
-     * @param displayName
-     *            display-name to encode.
-     * @return encoded display-name.
-     */
-    public static String encodeAddressDisplayName(String displayName) {
-        // display-name = phrase
-        // phrase = 1*( encoded-word / word )
-        // word = atom / quoted-string
-        // atom = [CFWS] 1*atext [CFWS]
-        // CFWS = comment or folding white space
-
-        if (isAtomPhrase(displayName)) {
-            return displayName;
-        } else if (hasToBeEncoded(displayName, 0)) {
-            return encodeEncodedWord(displayName, Usage.WORD_ENTITY);
-        } else {
-            return quote(displayName);
-        }
-    }
-
-    /**
-     * Encodes the local part of an address specification as described in RFC
-     * 5322 section 3.4.1. Leading and trailing CFWS should have been removed
-     * before calling this method. The specified string should not contain any
-     * illegal (control or non-ASCII) characters.
-     * 
-     * @param localPart
-     *            the local part to encode
-     * @return the encoded local part.
-     */
-    public static String encodeAddressLocalPart(String localPart) {
-        // local-part = dot-atom / quoted-string
-        // dot-atom = [CFWS] dot-atom-text [CFWS]
-        // CFWS = comment or folding white space
-
-        if (isDotAtomText(localPart)) {
-            return localPart;
-        } else {
-            return quote(localPart);
-        }
-    }
-
-    /**
-     * Encodes the specified strings into a header parameter as described in RFC
-     * 2045 section 5.1 and RFC 2183 section 2. The specified strings should not
-     * contain any illegal (control or non-ASCII) characters.
-     * 
-     * @param name
-     *            parameter name.
-     * @param value
-     *            parameter value.
-     * @return encoded result.
-     */
-    public static String encodeHeaderParameter(String name, String value) {
-        name = name.toLowerCase(Locale.US);
-
-        // value := token / quoted-string
-        if (isToken(value)) {
-            return name + "=" + value;
-        } else {
-            return name + "=" + quote(value);
-        }
-    }
-
-    /**
-     * Shortcut method that encodes the specified text into an encoded-word if
-     * the text has to be encoded.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return the specified text if encoding is not necessary or an encoded
-     *         word or a sequence of encoded words otherwise.
-     */
-    public static String encodeIfNecessary(String text, Usage usage,
-            int usedCharacters) {
-        if (hasToBeEncoded(text, usedCharacters))
-            return encodeEncodedWord(text, usage, usedCharacters);
-        else
-            return text;
-    }
-
-    /**
-     * Determines if the specified string has to encoded into an encoded-word.
-     * Returns <code>true</code> if the text contains characters that don't
-     * fall into the printable ASCII character set or if the text contains a
-     * 'word' (sequence of non-whitespace characters) longer than 77 characters
-     * (including characters already used up in the line).
-     * 
-     * @param text
-     *            text to analyze.
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return <code>true</code> if the specified text has to be encoded into
-     *         an encoded-word, <code>false</code> otherwise.
-     */
-    public static boolean hasToBeEncoded(String text, int usedCharacters) {
-        if (text == null)
-            throw new IllegalArgumentException();
-        if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
-            throw new IllegalArgumentException();
-
-        int nonWhiteSpaceCount = usedCharacters;
-
-        for (int idx = 0; idx < text.length(); idx++) {
-            char ch = text.charAt(idx);
-            if (ch == '\t' || ch == ' ') {
-                nonWhiteSpaceCount = 0;
-            } else {
-                nonWhiteSpaceCount++;
-                if (nonWhiteSpaceCount > 77) {
-                    // Line cannot be folded into multiple lines with no more
-                    // than 78 characters each. Encoding as encoded-words makes
-                    // that possible. One character has to be reserved for
-                    // folding white space; that leaves 77 characters.
-                    return true;
-                }
-
-                if (ch < 32 || ch >= 127) {
-                    // non-printable ascii character has to be encoded
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * <p>
-     * The charset to encode the specified text into a byte array and the
-     * encoding to use for the encoded-word are detected automatically.
-     * <p>
-     * This method assumes that zero characters have already been used up in the
-     * current line.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage) {
-        return encodeEncodedWord(text, usage, 0, null, null);
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * <p>
-     * The charset to encode the specified text into a byte array and the
-     * encoding to use for the encoded-word are detected automatically.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage,
-            int usedCharacters) {
-        return encodeEncodedWord(text, usage, usedCharacters, null, null);
-    }
-
-    /**
-     * Encodes the specified text into an encoded word or a sequence of encoded
-     * words separated by space. The text is separated into a sequence of
-     * encoded words if it does not fit in a single one.
-     * 
-     * @param text
-     *            text to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @param usedCharacters
-     *            number of characters already used up (<code>0 <= usedCharacters <= 50</code>).
-     * @param charset
-     *            the Java charset that should be used to encode the specified
-     *            string into a byte array. A suitable charset is detected
-     *            automatically if this parameter is <code>null</code>.
-     * @param encoding
-     *            the encoding to use for the encoded-word (either B or Q). A
-     *            suitable encoding is automatically chosen if this parameter is
-     *            <code>null</code>.
-     * @return the encoded word (or sequence of encoded words if the given text
-     *         does not fit in a single encoded word).
-     * @see #hasToBeEncoded(String, int)
-     */
-    public static String encodeEncodedWord(String text, Usage usage,
-            int usedCharacters, Charset charset, Encoding encoding) {
-        if (text == null)
-            throw new IllegalArgumentException();
-        if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
-            throw new IllegalArgumentException();
-
-        if (charset == null)
-            charset = determineCharset(text);
-
-        String mimeCharset = CharsetUtil.toMimeCharset(charset.name());
-        if (mimeCharset == null) {
-            // cannot happen if charset was originally null
-            throw new IllegalArgumentException("Unsupported charset");
-        }
-
-        byte[] bytes = encode(text, charset);
-
-        if (encoding == null)
-            encoding = determineEncoding(bytes, usage);
-
-        if (encoding == Encoding.B) {
-            String prefix = ENC_WORD_PREFIX + mimeCharset + "?B?";
-            return encodeB(prefix, text, usedCharacters, charset, bytes);
-        } else {
-            String prefix = ENC_WORD_PREFIX + mimeCharset + "?Q?";
-            return encodeQ(prefix, text, usage, usedCharacters, charset, bytes);
-        }
-    }
-
-    /**
-     * Encodes the specified byte array using the B encoding defined in RFC
-     * 2047.
-     * 
-     * @param bytes
-     *            byte array to encode.
-     * @return encoded string.
-     */
-    public static String encodeB(byte[] bytes) {
-        StringBuilder sb = new StringBuilder();
-
-        int idx = 0;
-        final int end = bytes.length;
-        for (; idx < end - 2; idx += 3) {
-            int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8
-                    | bytes[idx + 2] & 0xff;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data & 0x3f]);
-        }
-
-        if (idx == end - 2) {
-            int data = (bytes[idx] & 0xff) << 16 | (bytes[idx + 1] & 0xff) << 8;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 6 & 0x3f]);
-            sb.append((char) BASE64_PAD);
-
-        } else if (idx == end - 1) {
-            int data = (bytes[idx] & 0xff) << 16;
-            sb.append((char) BASE64_TABLE[data >> 18 & 0x3f]);
-            sb.append((char) BASE64_TABLE[data >> 12 & 0x3f]);
-            sb.append((char) BASE64_PAD);
-            sb.append((char) BASE64_PAD);
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Encodes the specified byte array using the Q encoding defined in RFC
-     * 2047.
-     * 
-     * @param bytes
-     *            byte array to encode.
-     * @param usage
-     *            whether the encoded-word is to be used to replace a text token
-     *            or a word entity (see RFC 822).
-     * @return encoded string.
-     */
-    public static String encodeQ(byte[] bytes, Usage usage) {
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        StringBuilder sb = new StringBuilder();
-
-        final int end = bytes.length;
-        for (int idx = 0; idx < end; idx++) {
-            int v = bytes[idx] & 0xff;
-            if (v == 32) {
-                sb.append('_');
-            } else if (!qChars.get(v)) {
-                sb.append('=');
-                sb.append(hexDigit(v >>> 4));
-                sb.append(hexDigit(v & 0xf));
-            } else {
-                sb.append((char) v);
-            }
-        }
-
-        return sb.toString();
-    }
-
-    /**
-     * Tests whether the specified string is a token as defined in RFC 2045
-     * section 5.1.
-     * 
-     * @param str
-     *            string to test.
-     * @return <code>true</code> if the specified string is a RFC 2045 token,
-     *         <code>false</code> otherwise.
-     */
-    public static boolean isToken(String str) {
-        // token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>
-        // tspecials := "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" /
-        // <"> / "/" / "[" / "]" / "?" / "="
-        // CTL := 0.- 31., 127.
-
-        final int length = str.length();
-        if (length == 0)
-            return false;
-
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-            if (!TOKEN_CHARS.get(ch))
-                return false;
-        }
-
-        return true;
-    }
-
-    private static boolean isAtomPhrase(String str) {
-        // atom = [CFWS] 1*atext [CFWS]
-
-        boolean containsAText = false;
-
-        final int length = str.length();
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-            if (ATEXT_CHARS.get(ch)) {
-                containsAText = true;
-            } else if (!CharsetUtil.isWhitespace(ch)) {
-                return false;
-            }
-        }
-
-        return containsAText;
-    }
-
-    // RFC 5322 section 3.2.3
-    private static boolean isDotAtomText(String str) {
-        // dot-atom-text = 1*atext *("." 1*atext)
-        // atext = ALPHA / DIGIT / "!" / "#" / "$" / "%" / "&" / "'" / "*" /
-        // "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
-
-        char prev = '.';
-
-        final int length = str.length();
-        if (length == 0)
-            return false;
-
-        for (int idx = 0; idx < length; idx++) {
-            char ch = str.charAt(idx);
-
-            if (ch == '.') {
-                if (prev == '.' || idx == length - 1)
-                    return false;
-            } else {
-                if (!ATEXT_CHARS.get(ch))
-                    return false;
-            }
-
-            prev = ch;
-        }
-
-        return true;
-    }
-
-    // RFC 5322 section 3.2.4
-    private static String quote(String str) {
-        // quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
-        // qcontent = qtext / quoted-pair
-        // qtext = %d33 / %d35-91 / %d93-126
-        // quoted-pair = ("\" (VCHAR / WSP))
-        // VCHAR = %x21-7E
-        // DQUOTE = %x22
-
-        String escaped = str.replaceAll("[\\\\\"]", "\\\\$0");
-        return "\"" + escaped + "\"";
-    }
-
-    private static String encodeB(String prefix, String text,
-            int usedCharacters, Charset charset, byte[] bytes) {
-        int encodedLength = bEncodedLength(bytes);
-
-        int totalLength = prefix.length() + encodedLength
-                + ENC_WORD_SUFFIX.length();
-        if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
-            return prefix + encodeB(bytes) + ENC_WORD_SUFFIX;
-        } else {
-            int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
-                                                         
-            String part1 = text.substring(0, splitOffset);
-            byte[] bytes1 = encode(part1, charset);
-            String word1 = encodeB(prefix, part1, usedCharacters, charset,
-                    bytes1);
-
-            String part2 = text.substring(splitOffset);
-            byte[] bytes2 = encode(part2, charset);
-            String word2 = encodeB(prefix, part2, 0, charset, bytes2);
-
-            return word1 + " " + word2;
-        }
-    }
-
-    private static int bEncodedLength(byte[] bytes) {
-        return (bytes.length + 2) / 3 * 4;
-    }
-
-    private static String encodeQ(String prefix, String text, Usage usage,
-            int usedCharacters, Charset charset, byte[] bytes) {
-        int encodedLength = qEncodedLength(bytes, usage);
-
-        int totalLength = prefix.length() + encodedLength
-                + ENC_WORD_SUFFIX.length();
-        if (totalLength <= ENCODED_WORD_MAX_LENGTH - usedCharacters) {
-            return prefix + encodeQ(bytes, usage) + ENC_WORD_SUFFIX;
-        } else {
-            int splitOffset = text.offsetByCodePoints(text.length() / 2, -1);
-
-            String part1 = text.substring(0, splitOffset);
-            byte[] bytes1 = encode(part1, charset);
-            String word1 = encodeQ(prefix, part1, usage, usedCharacters,
-                    charset, bytes1);
-
-            String part2 = text.substring(splitOffset);
-            byte[] bytes2 = encode(part2, charset);
-            String word2 = encodeQ(prefix, part2, usage, 0, charset, bytes2);
-
-            return word1 + " " + word2;
-        }
-    }
-
-    private static int qEncodedLength(byte[] bytes, Usage usage) {
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        int count = 0;
-
-        for (int idx = 0; idx < bytes.length; idx++) {
-            int v = bytes[idx] & 0xff;
-            if (v == 32) {
-                count++;
-            } else if (!qChars.get(v)) {
-                count += 3;
-            } else {
-                count++;
-            }
-        }
-
-        return count;
-    }
-
-    private static byte[] encode(String text, Charset charset) {
-        ByteBuffer buffer = charset.encode(text);
-        byte[] bytes = new byte[buffer.limit()];
-        buffer.get(bytes);
-        return bytes;
-    }
-
-    private static Charset determineCharset(String text) {
-        // it is an important property of iso-8859-1 that it directly maps
-        // unicode code points 0000 to 00ff to byte values 00 to ff.
-        boolean ascii = true;
-        final int len = text.length();
-        for (int index = 0; index < len; index++) {
-            char ch = text.charAt(index);
-            if (ch > 0xff) {
-                return CharsetUtil.UTF_8;
-            }
-            if (ch > 0x7f) {
-                ascii = false;
-            }
-        }
-        return ascii ? CharsetUtil.US_ASCII : CharsetUtil.ISO_8859_1;
-    }
-
-    private static Encoding determineEncoding(byte[] bytes, Usage usage) {
-        if (bytes.length == 0)
-            return Encoding.Q;
-
-        BitSet qChars = usage == Usage.TEXT_TOKEN ? Q_REGULAR_CHARS
-                : Q_RESTRICTED_CHARS;
-
-        int qEncoded = 0;
-        for (int i = 0; i < bytes.length; i++) {
-            int v = bytes[i] & 0xff;
-            if (v != 32 && !qChars.get(v)) {
-                qEncoded++;
-            }
-        }
-
-        int percentage = qEncoded * 100 / bytes.length;
-        return percentage > 30 ? Encoding.B : Encoding.Q;
-    }
-
-    private static char hexDigit(int i) {
-        return i < 10 ? (char) (i + '0') : (char) (i - 10 + 'A');
-    }
-}
diff --git a/src/org/apache/james/mime4j/decoder/Base64InputStream.java b/src/org/apache/james/mime4j/decoder/Base64InputStream.java
deleted file mode 100644
index 77f5d7d..0000000
--- a/src/org/apache/james/mime4j/decoder/Base64InputStream.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-/**
- * Modified to improve efficiency by Android   21-Aug-2009
- */
-
-package org.apache.james.mime4j.decoder;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Performs Base-64 decoding on an underlying stream.
- * 
- * 
- * @version $Id: Base64InputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
- */
-public class Base64InputStream extends InputStream {
-    private final InputStream s;
-    private int outCount = 0;
-    private int outIndex = 0;
-    private final int[] outputBuffer = new int[3];
-    private final byte[] inputBuffer = new byte[4];
-    private boolean done = false;
-
-    public Base64InputStream(InputStream s) {
-        this.s = s;
-    }
-
-    /**
-     * Closes the underlying stream.
-     * 
-     * @throws IOException on I/O errors.
-     */
-    @Override
-    public void close() throws IOException {
-        s.close();
-    }
-    
-    @Override
-    public int read() throws IOException {
-        if (outIndex == outCount) {
-            fillBuffer();
-            if (outIndex == outCount) {
-                return -1;
-            }
-        }
-
-        return outputBuffer[outIndex++];
-    }
-
-    /**
-     * Retrieve data from the underlying stream, decode it,
-     * and put the results in the byteq.
-     * @throws IOException
-     */
-    private void fillBuffer() throws IOException {
-        outCount = 0;
-        outIndex = 0;
-        int inCount = 0;
-
-        int i;
-        // "done" is needed for the two successive '=' at the end
-        while (!done) {
-            switch (i = s.read()) {
-                case -1:
-                    // No more input - just return, let outputBuffer drain out, and be done
-                    return;
-                case '=':
-                    // once we meet the first '=', avoid reading the second '='
-                    done = true;
-                    decodeAndEnqueue(inCount);
-                    return;
-                default:
-                    byte sX = TRANSLATION[i];
-                    if (sX < 0) continue;
-                    inputBuffer[inCount++] = sX;
-                    if (inCount == 4) {
-                        decodeAndEnqueue(inCount);
-                        return;
-                    }
-                    break;
-            }
-        }
-    }
-
-    private void decodeAndEnqueue(int len) {
-        int accum = 0;
-        accum |= inputBuffer[0] << 18;
-        accum |= inputBuffer[1] << 12;
-        accum |= inputBuffer[2] << 6;
-        accum |= inputBuffer[3];
-
-        // There's a bit of duplicated code here because we want to have straight-through operation
-        // for the most common case of len==4
-        if (len == 4) {
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outputBuffer[1] = (accum >> 8) & 0xFF;
-            outputBuffer[2] = (accum) & 0xFF;
-            outCount = 3;
-            return;
-        } else if (len == 3) {
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outputBuffer[1] = (accum >> 8) & 0xFF;
-            outCount = 2;
-            return;
-        } else {    // len == 2
-            outputBuffer[0] = (accum >> 16) & 0xFF;
-            outCount = 1;
-            return;
-        }
-    }
-
-    private static byte[] TRANSLATION = {
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, /* 0x20 */
-        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, /* 0x30 */
-        -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, /* 0x40 */
-        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, /* 0x50 */
-        -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, /* 0x60 */
-        41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, /* 0x70 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0x90 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xA0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xB0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xC0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xD0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 0xE0 */
-        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1     /* 0xF0 */
-    };
-
-
-}
diff --git a/src/org/apache/james/mime4j/decoder/ByteQueue.java b/src/org/apache/james/mime4j/decoder/ByteQueue.java
deleted file mode 100644
index 6d7ccef..0000000
--- a/src/org/apache/james/mime4j/decoder/ByteQueue.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.decoder;
-
-import java.util.Iterator;
-
-public class ByteQueue {
-
-    private UnboundedFifoByteBuffer buf;
-    private int initialCapacity = -1;
-
-    public ByteQueue() {
-        buf = new UnboundedFifoByteBuffer();
-    }
-
-    public ByteQueue(int initialCapacity) {
-        buf = new UnboundedFifoByteBuffer(initialCapacity);
-        this.initialCapacity = initialCapacity;
-    }
-
-    public void enqueue(byte b) {
-        buf.add(b);
-    }
-
-    public byte dequeue() {
-        return buf.remove();
-    }
-
-    public int count() {
-        return buf.size();
-    }
-
-    public void clear() {
-        if (initialCapacity != -1)
-            buf = new UnboundedFifoByteBuffer(initialCapacity);
-        else
-            buf = new UnboundedFifoByteBuffer();
-    }
-
-    public Iterator iterator() {
-        return buf.iterator();
-    }
-
-
-}
diff --git a/src/org/apache/james/mime4j/decoder/DecoderUtil.java b/src/org/apache/james/mime4j/decoder/DecoderUtil.java
deleted file mode 100644
index 48fe07d..0000000
--- a/src/org/apache/james/mime4j/decoder/DecoderUtil.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.decoder;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.util.CharsetUtil;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-/**
- * Static methods for decoding strings, byte arrays and encoded words.
- *
- * 
- * @version $Id: DecoderUtil.java,v 1.3 2005/02/07 15:33:59 ntherning Exp $
- */
-public class DecoderUtil {
-    private static Log log = LogFactory.getLog(DecoderUtil.class);
-    
-    /**
-     * Decodes a string containing quoted-printable encoded data. 
-     * 
-     * @param s the string to decode.
-     * @return the decoded bytes.
-     */
-    public static byte[] decodeBaseQuotedPrintable(String s) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        
-        try {
-            byte[] bytes = s.getBytes("US-ASCII");
-            
-            QuotedPrintableInputStream is = new QuotedPrintableInputStream(
-                                               new ByteArrayInputStream(bytes));
-            
-            int b = 0;
-            while ((b = is.read()) != -1) {
-                baos.write(b);
-            }
-        } catch (IOException e) {
-            /*
-             * This should never happen!
-             */
-            log.error(e);
-        }
-        
-        return baos.toByteArray();
-    }
-    
-    /**
-     * Decodes a string containing base64 encoded data. 
-     * 
-     * @param s the string to decode.
-     * @return the decoded bytes.
-     */
-    public static byte[] decodeBase64(String s) {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        
-        try {
-            byte[] bytes = s.getBytes("US-ASCII");
-            
-            Base64InputStream is = new Base64InputStream(
-                                        new ByteArrayInputStream(bytes));
-            
-            int b = 0;
-            while ((b = is.read()) != -1) {
-                baos.write(b);
-            }
-        } catch (IOException e) {
-            /*
-             * This should never happen!
-             */
-            log.error(e);
-        }
-        
-        return baos.toByteArray();
-    }
-    
-    /**
-     * Decodes an encoded word encoded with the 'B' encoding (described in 
-     * RFC 2047) found in a header field body.
-     * 
-     * @param encodedWord the encoded word to decode.
-     * @param charset the Java charset to use.
-     * @return the decoded string.
-     * @throws UnsupportedEncodingException if the given Java charset isn't 
-     *         supported.
-     */
-    public static String decodeB(String encodedWord, String charset) 
-            throws UnsupportedEncodingException {
-        
-        return new String(decodeBase64(encodedWord), charset);
-    }
-    
-    /**
-     * Decodes an encoded word encoded with the 'Q' encoding (described in 
-     * RFC 2047) found in a header field body.
-     * 
-     * @param encodedWord the encoded word to decode.
-     * @param charset the Java charset to use.
-     * @return the decoded string.
-     * @throws UnsupportedEncodingException if the given Java charset isn't 
-     *         supported.
-     */
-    public static String decodeQ(String encodedWord, String charset)
-            throws UnsupportedEncodingException {
-           
-        /*
-         * Replace _ with =20
-         */
-        StringBuffer sb = new StringBuffer();
-        for (int i = 0; i < encodedWord.length(); i++) {
-            char c = encodedWord.charAt(i);
-            if (c == '_') {
-                sb.append("=20");
-            } else {
-                sb.append(c);
-            }
-        }
-        
-        return new String(decodeBaseQuotedPrintable(sb.toString()), charset);
-    }
-    
-    /**
-     * Decodes a string containing encoded words as defined by RFC 2047.
-     * Encoded words in have the form 
-     * =?charset?enc?Encoded word?= where enc is either 'Q' or 'q' for 
-     * quoted-printable and 'B' or 'b' for Base64.
-     * 
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     * 
-     * @param body the string to decode.
-     * @return the decoded string.
-     */
-    public static String decodeEncodedWords(String body) {
-        
-        // ANDROID:  Most strings will not include "=?" so a quick test can prevent unneeded
-        // object creation.  This could also be handled via lazy creation of the StringBuilder.
-        if (body.indexOf("=?") == -1) {
-            return body;
-        }
-
-        int previousEnd = 0;
-        boolean previousWasEncoded = false;
-
-        StringBuilder sb = new StringBuilder();
-
-        while (true) {
-            int begin = body.indexOf("=?", previousEnd);
-
-            // ANDROID:  The mime4j original version has an error here.  It gets confused if
-            // the encoded string begins with an '=' (just after "?Q?").  This patch seeks forward
-            // to find the two '?' in the "header", before looking for the final "?=".
-            if (begin == -1) {
-                break;
-            }
-            int qm1 = body.indexOf('?', begin + 2);
-            if (qm1 == -1) {
-                break;
-            }
-            int qm2 = body.indexOf('?', qm1 + 1);
-            if (qm2 == -1) {
-                break;
-            }
-            int end = body.indexOf("?=", qm2 + 1);
-            if (end == -1) {
-                break;
-            }
-            end += 2;
-
-            String sep = body.substring(previousEnd, begin);
-
-            String decoded = decodeEncodedWord(body, begin, end);
-            if (decoded == null) {
-                sb.append(sep);
-                sb.append(body.substring(begin, end));
-            } else {
-                if (!previousWasEncoded || !CharsetUtil.isWhitespace(sep)) {
-                    sb.append(sep);
-                }
-                sb.append(decoded);
-            }
-
-            previousEnd = end;
-            previousWasEncoded = decoded != null;
-        }
-
-        if (previousEnd == 0)
-            return body;
-
-        sb.append(body.substring(previousEnd));
-        return sb.toString();
-    }
-
-    // return null on error. Begin is index of '=?' in body.
-    public static String decodeEncodedWord(String body, int begin, int end) {
-        // Skip the '?=' chars in body and scan forward from there for next '?'
-        int qm1 = body.indexOf('?', begin + 2);
-        if (qm1 == -1 || qm1 == end - 2)
-            return null;
-
-        int qm2 = body.indexOf('?', qm1 + 1);
-        if (qm2 == -1 || qm2 == end - 2)
-            return null;
-
-        String mimeCharset = body.substring(begin + 2, qm1);
-        String encoding = body.substring(qm1 + 1, qm2);
-        String encodedText = body.substring(qm2 + 1, end - 2);
-
-        String charset = CharsetUtil.toJavaCharset(mimeCharset);
-        if (charset == null) {
-            if (log.isWarnEnabled()) {
-                log.warn("MIME charset '" + mimeCharset + "' in encoded word '"
-                        + body.substring(begin, end) + "' doesn't have a "
-                        + "corresponding Java charset");
-            }
-            return null;
-        } else if (!CharsetUtil.isDecodingSupported(charset)) {
-            if (log.isWarnEnabled()) {
-                log.warn("Current JDK doesn't support decoding of charset '"
-                        + charset + "' (MIME charset '" + mimeCharset
-                        + "' in encoded word '" + body.substring(begin, end)
-                        + "')");
-            }
-            return null;
-        }
-
-        if (encodedText.length() == 0) {
-            if (log.isWarnEnabled()) {
-                log.warn("Missing encoded text in encoded word: '"
-                        + body.substring(begin, end) + "'");
-            }
-            return null;
-        }
-
-        try {
-            if (encoding.equalsIgnoreCase("Q")) {
-                return DecoderUtil.decodeQ(encodedText, charset);
-            } else if (encoding.equalsIgnoreCase("B")) {
-                return DecoderUtil.decodeB(encodedText, charset);
-            } else {
-                if (log.isWarnEnabled()) {
-                    log.warn("Warning: Unknown encoding in encoded word '"
-                            + body.substring(begin, end) + "'");
-                }
-                return null;
-            }
-        } catch (UnsupportedEncodingException e) {
-            // should not happen because of isDecodingSupported check above
-            if (log.isWarnEnabled()) {
-                log.warn("Unsupported encoding in encoded word '"
-                        + body.substring(begin, end) + "'", e);
-            }
-            return null;
-        } catch (RuntimeException e) {
-            if (log.isWarnEnabled()) {
-                log.warn("Could not decode encoded word '"
-                        + body.substring(begin, end) + "'", e);
-            }
-            return null;
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java b/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
deleted file mode 100644
index e43f398..0000000
--- a/src/org/apache/james/mime4j/decoder/QuotedPrintableInputStream.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.decoder;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-
-/**
- * Performs Quoted-Printable decoding on an underlying stream.
- * 
- * 
- * 
- * @version $Id: QuotedPrintableInputStream.java,v 1.3 2004/11/29 13:15:47 ntherning Exp $
- */
-public class QuotedPrintableInputStream extends InputStream {
-    private static Log log = LogFactory.getLog(QuotedPrintableInputStream.class);
-    
-    private InputStream stream;
-    ByteQueue byteq = new ByteQueue();
-    ByteQueue pushbackq = new ByteQueue();
-    private byte state = 0;
-
-    public QuotedPrintableInputStream(InputStream stream) {
-        this.stream = stream;
-    }
-    
-    /**
-     * Closes the underlying stream.
-     * 
-     * @throws IOException on I/O errors.
-     */
-    public void close() throws IOException {
-        stream.close();
-    }
-
-    public int read() throws IOException {
-        fillBuffer();
-        if (byteq.count() == 0)
-            return -1;
-        else {
-            byte val = byteq.dequeue();
-            if (val >= 0)
-                return val;
-            else
-                return val & 0xFF;
-        }
-    }
-
-    /**
-     * Pulls bytes out of the underlying stream and places them in the
-     * pushback queue.  This is necessary (vs. reading from the
-     * underlying stream directly) to detect and filter out "transport
-     * padding" whitespace, i.e., all whitespace that appears immediately
-     * before a CRLF.
-     *
-     * @throws IOException Underlying stream threw IOException.
-     */
-    private void populatePushbackQueue() throws IOException {
-        //Debug.verify(pushbackq.count() == 0, "PopulatePushbackQueue called when pushback queue was not empty!");
-
-        if (pushbackq.count() != 0)
-            return;
-
-        while (true) {
-            int i = stream.read();
-            switch (i) {
-                case -1:
-                    // stream is done
-                    pushbackq.clear();  // discard any whitespace preceding EOF
-                    return;
-                case ' ':
-                case '\t':
-                    pushbackq.enqueue((byte)i);
-                    break;
-                case '\r':
-                case '\n':
-                    pushbackq.clear();  // discard any whitespace preceding EOL
-                    pushbackq.enqueue((byte)i);
-                    return;
-                default:
-                    pushbackq.enqueue((byte)i);
-                    return;
-            }
-        }
-    }
-
-    /**
-     * Causes the pushback queue to get populated if it is empty, then
-     * consumes and decodes bytes out of it until one or more bytes are
-     * in the byte queue.  This decoding step performs the actual QP
-     * decoding.
-     *
-     * @throws IOException Underlying stream threw IOException.
-     */
-    private void fillBuffer() throws IOException {
-        byte msdChar = 0;  // first digit of escaped num
-        while (byteq.count() == 0) {
-            if (pushbackq.count() == 0) {
-                populatePushbackQueue();
-                if (pushbackq.count() == 0)
-                    return;
-            }
-
-            byte b = (byte)pushbackq.dequeue();
-
-            switch (state) {
-                case 0:  // start state, no bytes pending
-                    if (b != '=') {
-                        byteq.enqueue(b);
-                        break;  // state remains 0
-                    } else {
-                        state = 1;
-                        break;
-                    }
-                case 1:  // encountered "=" so far
-                    if (b == '\r') {
-                        state = 2;
-                        break;
-                    } else if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
-                        state = 3;
-                        msdChar = b;  // save until next digit encountered
-                        break;
-                    } else if (b == '=') {
-                        /*
-                         * Special case when == is encountered.
-                         * Emit one = and stay in this state.
-                         */
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; got ==");
-                        }
-                        byteq.enqueue((byte)'=');
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected \\r or "
-                                    + "[0-9A-Z], got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue(b);
-                        break;
-                    }
-                case 2:  // encountered "=\r" so far
-                    if (b == '\n') {
-                        state = 0;
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected " 
-                                    + (int)'\n' + ", got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue((byte)'\r');
-                        byteq.enqueue(b);
-                        break;
-                    }
-                case 3:  // encountered =<digit> so far; expecting another <digit> to complete the octet
-                    if ((b >= '0' && b <= '9') || (b >= 'A' && b <= 'F') || (b >= 'a' && b <= 'f')) {
-                        byte msd = asciiCharToNumericValue(msdChar);
-                        byte low = asciiCharToNumericValue(b);
-                        state = 0;
-                        byteq.enqueue((byte)((msd << 4) | low));
-                        break;
-                    } else {
-                        if (log.isWarnEnabled()) {
-                            log.warn("Malformed MIME; expected "
-                                     + "[0-9A-Z], got " + b);
-                        }
-                        state = 0;
-                        byteq.enqueue((byte)'=');
-                        byteq.enqueue(msdChar);
-                        byteq.enqueue(b);
-                        break;
-                    }
-                default:  // should never happen
-                    log.error("Illegal state: " + state);
-                    state = 0;
-                    byteq.enqueue(b);
-                    break;
-            }
-        }
-    }
-
-    /**
-     * Converts '0' => 0, 'A' => 10, etc.
-     * @param c ASCII character value.
-     * @return Numeric value of hexadecimal character.
-     */
-    private byte asciiCharToNumericValue(byte c) {
-        if (c >= '0' && c <= '9') {
-            return (byte)(c - '0');
-        } else if (c >= 'A' && c <= 'Z') {
-            return (byte)(0xA + (c - 'A'));
-        } else if (c >= 'a' && c <= 'z') {
-            return (byte)(0xA + (c - 'a'));
-        } else {
-            /*
-             * This should never happen since all calls to this method
-             * are preceded by a check that c is in [0-9A-Za-z]
-             */
-            throw new IllegalArgumentException((char) c 
-                    + " is not a hexadecimal digit");
-        }
-    }
-
-}
diff --git a/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java b/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
deleted file mode 100644
index f01194f..0000000
--- a/src/org/apache/james/mime4j/decoder/UnboundedFifoByteBuffer.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.decoder;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * UnboundedFifoByteBuffer is a very efficient buffer implementation.
- * According to performance testing, it exhibits a constant access time, but it
- * also outperforms ArrayList when used for the same purpose.
- * <p>
- * The removal order of an <code>UnboundedFifoByteBuffer</code> is based on the insertion
- * order; elements are removed in the same order in which they were added.
- * The iteration order is the same as the removal order.
- * <p>
- * The {@link #remove()} and {@link #get()} operations perform in constant time.
- * The {@link #add(Object)} operation performs in amortized constant time.  All
- * other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>UnboundedFifoByteBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new UnboundedFifoByteBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- *
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2004/08/24 06:52:02 $
- *
- * 
- * 
- * 
- * 
- * 
- */
-class UnboundedFifoByteBuffer {
-
-    protected byte[] buffer;
-    protected int head;
-    protected int tail;
-
-    /**
-     * Constructs an UnboundedFifoByteBuffer with the default number of elements.
-     * It is exactly the same as performing the following:
-     *
-     * <pre>
-     *   new UnboundedFifoByteBuffer(32);
-     * </pre>
-     */
-    public UnboundedFifoByteBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs an UnboundedFifoByteBuffer with the specified number of elements.
-     * The integer must be a positive integer.
-     *
-     * @param initialSize  the initial size of the buffer
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public UnboundedFifoByteBuffer(int initialSize) {
-        if (initialSize <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        buffer = new byte[initialSize + 1];
-        head = 0;
-        tail = 0;
-    }
-
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (tail < head) {
-            size = buffer.length - head + tail;
-        } else {
-            size = tail - head;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param b  the byte to add
-     * @return true, always
-     */
-    public boolean add(final byte b) {
-
-        if (size() + 1 >= buffer.length) {
-            byte[] tmp = new byte[((buffer.length - 1) * 2) + 1];
-
-            int j = 0;
-            for (int i = head; i != tail;) {
-                tmp[j] = buffer[i];
-                buffer[i] = 0;
-
-                j++;
-                i++;
-                if (i == buffer.length) {
-                    i = 0;
-                }
-            }
-
-            buffer = tmp;
-            head = 0;
-            tail = j;
-        }
-
-        buffer[tail] = b;
-        tail++;
-        if (tail >= buffer.length) {
-            tail = 0;
-        }
-        return true;
-    }
-
-    /**
-     * Returns the next object in the buffer.
-     *
-     * @return the next object in the buffer
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public byte get() {
-        if (isEmpty()) {
-            throw new IllegalStateException("The buffer is already empty");
-        }
-
-        return buffer[head];
-    }
-
-    /**
-     * Removes the next object from the buffer
-     *
-     * @return the removed object
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public byte remove() {
-        if (isEmpty()) {
-            throw new IllegalStateException("The buffer is already empty");
-        }
-
-        byte element = buffer[head];
-
-        head++;
-        if (head >= buffer.length) {
-            head = 0;
-        }
-
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     *
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++;
-        if (index >= buffer.length) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     *
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = buffer.length - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = head;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index != tail;
-
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                lastReturnedIndex = index;
-                index = increment(index);
-                return new Byte(buffer[lastReturnedIndex]);
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == head) {
-                    UnboundedFifoByteBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                // Other elements require us to shift the subsequent elements
-                int i = lastReturnedIndex + 1;
-                while (i != tail) {
-                    if (i >= buffer.length) {
-                        buffer[i - 1] = buffer[0];
-                        i = 0;
-                    } else {
-                        buffer[i - 1] = buffer[i];
-                        i++;
-                    }
-                }
-
-                lastReturnedIndex = -1;
-                tail = decrement(tail);
-                buffer[tail] = 0;
-                index = decrement(index);
-            }
-
-        };
-    }
-
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/AddressListField.java b/src/org/apache/james/mime4j/field/AddressListField.java
deleted file mode 100644
index df9f398..0000000
--- a/src/org/apache/james/mime4j/field/AddressListField.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class AddressListField extends Field {
-    private AddressList addressList;
-    private ParseException parseException;
-
-    protected AddressListField(String name, String body, String raw, AddressList addressList, ParseException parseException) {
-        super(name, body, raw);
-        this.addressList = addressList;
-        this.parseException = parseException;
-    }
-
-    public AddressList getAddressList() {
-        return addressList;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            AddressList addressList = null;
-            ParseException parseException = null;
-            try {
-                addressList = AddressList.parse(body);
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new AddressListField(name, body, raw, addressList, parseException);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java b/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java
deleted file mode 100644
index 73d8d23..0000000
--- a/src/org/apache/james/mime4j/field/ContentTransferEncodingField.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-
-
-/**
- * Represents a <code>Content-Transfer-Encoding</code> field.
- *
- * 
- * @version $Id: ContentTransferEncodingField.java,v 1.2 2004/10/02 12:41:11 ntherning Exp $
- */
-public class ContentTransferEncodingField extends Field {
-    /**
-     * The <code>7bit</code> encoding.
-     */
-    public static final String ENC_7BIT = "7bit";
-    /**
-     * The <code>8bit</code> encoding.
-     */
-    public static final String ENC_8BIT = "8bit";
-    /**
-     * The <code>binary</code> encoding.
-     */
-    public static final String ENC_BINARY = "binary";
-    /**
-     * The <code>quoted-printable</code> encoding.
-     */
-    public static final String ENC_QUOTED_PRINTABLE = "quoted-printable";
-    /**
-     * The <code>base64</code> encoding.
-     */
-    public static final String ENC_BASE64 = "base64";
-    
-    private String encoding;
-    
-    protected ContentTransferEncodingField(String name, String body, String raw, String encoding) {
-        super(name, body, raw);
-        this.encoding = encoding;
-    }
-
-    /**
-     * Gets the encoding defined in this field.
-     * 
-     * @return the encoding or an empty string if not set.
-     */
-    public String getEncoding() {
-        return encoding;
-    }
-    
-    /**
-     * Gets the encoding of the given field if. Returns the default 
-     * <code>7bit</code> if not set or if
-     * <code>f</code> is <code>null</code>.
-     * 
-     * @return the encoding.
-     */
-    public static String getEncoding(ContentTransferEncodingField f) {
-        if (f != null && f.getEncoding().length() != 0) {
-            return f.getEncoding();
-        }
-        return ENC_7BIT;
-    }
-    
-    public static class Parser implements FieldParser {
-        public Field parse(final String name, final String body, final String raw) {
-            final String encoding = body.trim().toLowerCase();
-            return new ContentTransferEncodingField(name, body, raw, encoding);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/ContentTypeField.java b/src/org/apache/james/mime4j/field/ContentTypeField.java
deleted file mode 100644
index ad9f7f9..0000000
--- a/src/org/apache/james/mime4j/field/ContentTypeField.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.contenttype.parser.ContentTypeParser;
-import org.apache.james.mime4j.field.contenttype.parser.ParseException;
-import org.apache.james.mime4j.field.contenttype.parser.TokenMgrError;
-
-/**
- * Represents a <code>Content-Type</code> field.
- *
- * <p>TODO: Remove dependency on Java 1.4 regexps</p>
- *
- *
- * @version $Id: ContentTypeField.java,v 1.6 2005/01/27 14:16:31 ntherning Exp $
- */
-public class ContentTypeField extends Field {
-
-    /**
-     * The prefix of all <code>multipart</code> MIME types.
-     */
-    public static final String TYPE_MULTIPART_PREFIX = "multipart/";
-    /**
-     * The <code>multipart/digest</code> MIME type.
-     */
-    public static final String TYPE_MULTIPART_DIGEST = "multipart/digest";
-    /**
-     * The <code>text/plain</code> MIME type.
-     */
-    public static final String TYPE_TEXT_PLAIN = "text/plain";
-    /**
-     * The <code>message/rfc822</code> MIME type.
-     */
-    public static final String TYPE_MESSAGE_RFC822 = "message/rfc822";
-    /**
-     * The name of the <code>boundary</code> parameter.
-     */
-    public static final String PARAM_BOUNDARY = "boundary";
-    /**
-     * The name of the <code>charset</code> parameter.
-     */
-    public static final String PARAM_CHARSET = "charset";
-
-    private String mimeType = "";
-    private Map<String, String> parameters = null;
-    private ParseException parseException;
-
-    protected ContentTypeField(String name, String body, String raw, String mimeType, Map<String, String> parameters, ParseException parseException) {
-        super(name, body, raw);
-        this.mimeType = mimeType;
-        this.parameters = parameters;
-        this.parseException = parseException;
-    }
-
-    /**
-     * Gets the exception that was raised during parsing of
-     * the field value, if any; otherwise, null.
-     */
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    /**
-     * Gets the MIME type defined in this Content-Type field.
-     *
-     * @return the MIME type or an empty string if not set.
-     */
-    public String getMimeType() {
-        return mimeType;
-    }
-
-    /**
-     * Gets the MIME type defined in the child's
-     * Content-Type field or derives a MIME type from the parent
-     * if child is <code>null</code> or hasn't got a MIME type value set.
-     * If child's MIME type is multipart but no boundary
-     * has been set the MIME type of child will be derived from
-     * the parent.
-     *
-     * @param child the child.
-     * @param parent the parent.
-     * @return the MIME type.
-     */
-    public static String getMimeType(ContentTypeField child,
-                                     ContentTypeField parent) {
-
-        if (child == null || child.getMimeType().length() == 0
-                || child.isMultipart() && child.getBoundary() == null) {
-
-            if (parent != null && parent.isMimeType(TYPE_MULTIPART_DIGEST)) {
-                return TYPE_MESSAGE_RFC822;
-            } else {
-                return TYPE_TEXT_PLAIN;
-            }
-        }
-
-        return child.getMimeType();
-    }
-
-    /**
-     * Gets the value of a parameter. Parameter names are case-insensitive.
-     *
-     * @param name the name of the parameter to get.
-     * @return the parameter value or <code>null</code> if not set.
-     */
-    public String getParameter(String name) {
-        return parameters != null
-                    ? parameters.get(name.toLowerCase())
-                    : null;
-    }
-
-    /**
-     * Gets all parameters.
-     *
-     * @return the parameters.
-     */
-    public Map<String, String> getParameters() {
-        if (parameters != null) {
-            return Collections.unmodifiableMap(parameters);
-        }
-        return Collections.emptyMap();
-    }
-
-    /**
-     * Gets the value of the <code>boundary</code> parameter if set.
-     *
-     * @return the <code>boundary</code> parameter value or <code>null</code>
-     *             if not set.
-     */
-    public String getBoundary() {
-        return getParameter(PARAM_BOUNDARY);
-    }
-
-    /**
-     * Gets the value of the <code>charset</code> parameter if set.
-     *
-     * @return the <code>charset</code> parameter value or <code>null</code>
-     *         if not set.
-     */
-    public String getCharset() {
-        return getParameter(PARAM_CHARSET);
-    }
-
-    /**
-     * Gets the value of the <code>charset</code> parameter if set for the
-     * given field. Returns the default <code>us-ascii</code> if not set or if
-     * <code>f</code> is <code>null</code>.
-     *
-     * @return the <code>charset</code> parameter value.
-     */
-    public static String getCharset(ContentTypeField f) {
-        if (f != null) {
-            if (f.getCharset() != null && f.getCharset().length() > 0) {
-                return f.getCharset();
-            }
-        }
-        return "us-ascii";
-    }
-
-    /**
-     * Determines if the MIME type of this field matches the given one.
-     *
-     * @param mimeType the MIME type to match against.
-     * @return <code>true</code> if the MIME type of this field matches,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isMimeType(String mimeType) {
-        return this.mimeType.equalsIgnoreCase(mimeType);
-    }
-
-    /**
-     * Determines if the MIME type of this field is <code>multipart/*</code>.
-     *
-     * @return <code>true</code> if this field is has a <code>multipart/*</code>
-     *         MIME type, <code>false</code> otherwise.
-     */
-    public boolean isMultipart() {
-        return mimeType.startsWith(TYPE_MULTIPART_PREFIX);
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            ParseException parseException = null;
-            String mimeType = "";
-            Map<String, String> parameters = null;
-
-            ContentTypeParser parser = new ContentTypeParser(new StringReader(body));
-            try {
-                parser.parseAll();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            catch (TokenMgrError e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = new ParseException(e.getMessage());
-            }
-
-            try {
-                final String type = parser.getType();
-                final String subType = parser.getSubType();
-
-                if (type != null && subType != null) {
-                    mimeType = (type + "/" + parser.getSubType()).toLowerCase();
-
-                    ArrayList<String> paramNames = parser.getParamNames();
-                    ArrayList<String> paramValues = parser.getParamValues();
-
-                    if (paramNames != null && paramValues != null) {
-                        for (int i = 0; i < paramNames.size() && i < paramValues.size(); i++) {
-                            if (parameters == null)
-                                parameters = new HashMap<String, String>((int)(paramNames.size() * 1.3 + 1));
-                            String paramName = paramNames.get(i).toLowerCase();
-                            String paramValue = paramValues.get(i);
-                            parameters.put(paramName, paramValue);
-                        }
-                    }
-                }
-            }
-            catch (NullPointerException npe) {
-            }
-            return new ContentTypeField(name, body, raw, mimeType, parameters, parseException);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/DateTimeField.java b/src/org/apache/james/mime4j/field/DateTimeField.java
deleted file mode 100644
index 5215534..0000000
--- a/src/org/apache/james/mime4j/field/DateTimeField.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-
-import com.android.phone.common.mail.utils.LogUtils;
-
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END
-import org.apache.james.mime4j.field.datetime.DateTime;
-import org.apache.james.mime4j.field.datetime.parser.ParseException;
-
-import java.util.Date;
-
-public class DateTimeField extends Field {
-    private Date date;
-    private ParseException parseException;
-
-    protected DateTimeField(String name, String body, String raw, Date date, ParseException parseException) {
-        super(name, body, raw);
-        this.date = date;
-        this.parseException = parseException;
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, String body, final String raw) {
-            Date date = null;
-            ParseException parseException = null;
-            //BEGIN android-changed
-            body = LogUtils.cleanUpMimeDate(body);
-            //END android-changed
-            try {
-                date = DateTime.parse(body).getDate();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new DateTimeField(name, body, raw, date, parseException);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/DefaultFieldParser.java b/src/org/apache/james/mime4j/field/DefaultFieldParser.java
deleted file mode 100644
index 3695afe..0000000
--- a/src/org/apache/james/mime4j/field/DefaultFieldParser.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Copyright 2006 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field;
-
-public class DefaultFieldParser extends DelegatingFieldParser {
-    
-    public DefaultFieldParser() {
-        setFieldParser(Field.CONTENT_TRANSFER_ENCODING, new ContentTransferEncodingField.Parser());
-        setFieldParser(Field.CONTENT_TYPE, new ContentTypeField.Parser());
-        
-        final DateTimeField.Parser dateTimeParser = new DateTimeField.Parser();
-        setFieldParser(Field.DATE, dateTimeParser);
-        setFieldParser(Field.RESENT_DATE, dateTimeParser);
-        
-        final MailboxListField.Parser mailboxListParser = new MailboxListField.Parser();
-        setFieldParser(Field.FROM, mailboxListParser);
-        setFieldParser(Field.RESENT_FROM, mailboxListParser);
-        
-        final MailboxField.Parser mailboxParser = new MailboxField.Parser();
-        setFieldParser(Field.SENDER, mailboxParser);
-        setFieldParser(Field.RESENT_SENDER, mailboxParser);
-        
-        final AddressListField.Parser addressListParser = new AddressListField.Parser();
-        setFieldParser(Field.TO, addressListParser);
-        setFieldParser(Field.RESENT_TO, addressListParser);
-        setFieldParser(Field.CC, addressListParser);
-        setFieldParser(Field.RESENT_CC, addressListParser);
-        setFieldParser(Field.BCC, addressListParser);
-        setFieldParser(Field.RESENT_BCC, addressListParser);
-        setFieldParser(Field.REPLY_TO, addressListParser);
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/DelegatingFieldParser.java b/src/org/apache/james/mime4j/field/DelegatingFieldParser.java
deleted file mode 100644
index 32b69ec..0000000
--- a/src/org/apache/james/mime4j/field/DelegatingFieldParser.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Copyright 2006 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class DelegatingFieldParser implements FieldParser {
-
-    private Map<String, FieldParser> parsers = new HashMap<String, FieldParser>();
-    private FieldParser defaultParser = new UnstructuredField.Parser();
-
-    /**
-     * Sets the parser used for the field named <code>name</code>.
-     * @param name the name of the field
-     * @param parser the parser for fields named <code>name</code>
-     */
-    public void setFieldParser(final String name, final FieldParser parser) {
-        parsers.put(name.toLowerCase(), parser);
-    }
-
-    public FieldParser getParser(final String name) {
-        final FieldParser field = parsers.get(name.toLowerCase());
-        if(field==null) {
-            return defaultParser;
-        }
-        return field;
-    }
-
-    public Field parse(final String name, final String body, final String raw) {
-        final FieldParser parser = getParser(name);
-        return parser.parse(name, body, raw);
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/Field.java b/src/org/apache/james/mime4j/field/Field.java
deleted file mode 100644
index 4dea5c5..0000000
--- a/src/org/apache/james/mime4j/field/Field.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * The base class of all field classes.
- *
- * 
- * @version $Id: Field.java,v 1.6 2004/10/25 07:26:46 ntherning Exp $
- */
-public abstract class Field {
-    public static final String SENDER = "Sender";
-    public static final String FROM = "From";
-    public static final String TO = "To";
-    public static final String CC = "Cc";
-    public static final String BCC = "Bcc";
-    public static final String REPLY_TO = "Reply-To";
-    public static final String RESENT_SENDER = "Resent-Sender";
-    public static final String RESENT_FROM = "Resent-From";
-    public static final String RESENT_TO = "Resent-To";
-    public static final String RESENT_CC = "Resent-Cc";
-    public static final String RESENT_BCC = "Resent-Bcc";
-
-    public static final String DATE = "Date";
-    public static final String RESENT_DATE = "Resent-Date";
-
-    public static final String SUBJECT = "Subject";
-    public static final String CONTENT_TYPE = "Content-Type";
-    public static final String CONTENT_TRANSFER_ENCODING = 
-                                        "Content-Transfer-Encoding";
-    
-    private static final String FIELD_NAME_PATTERN = 
-        "^([\\x21-\\x39\\x3b-\\x7e]+)[ \t]*:";
-    private static final Pattern fieldNamePattern = 
-        Pattern.compile(FIELD_NAME_PATTERN);
-        
-    private static final DefaultFieldParser parser = new DefaultFieldParser();
-    
-    private final String name;
-    private final String body;
-    private final String raw;
-    
-    protected Field(final String name, final String body, final String raw) {
-        this.name = name;
-        this.body = body;
-        this.raw = raw;
-    }
-    
-    /**
-     * Parses the given string and returns an instance of the 
-     * <code>Field</code> class. The type of the class returned depends on
-     * the field name:
-     * <table>
-     *      <tr>
-     *          <td><em>Field name</em></td><td><em>Class returned</em></td>
-     *          <td>Content-Type</td><td>org.apache.james.mime4j.field.ContentTypeField</td>
-     *          <td>other</td><td>org.apache.james.mime4j.field.UnstructuredField</td>
-     *      </tr>
-     * </table>
-     * 
-     * @param s the string to parse.
-     * @return a <code>Field</code> instance.
-     * @throws IllegalArgumentException on parse errors.
-     */
-    public static Field parse(final String raw) {
-        
-        /*
-         * Unfold the field.
-         */
-        final String unfolded = raw.replaceAll("\r|\n", "");
-        
-        /*
-         * Split into name and value.
-         */
-        final Matcher fieldMatcher = fieldNamePattern.matcher(unfolded);
-        if (!fieldMatcher.find()) {
-            throw new IllegalArgumentException("Invalid field in string");
-        }
-        final String name = fieldMatcher.group(1);
-        
-        String body = unfolded.substring(fieldMatcher.end());
-        if (body.length() > 0 && body.charAt(0) == ' ') {
-            body = body.substring(1);
-        }
-        
-        return parser.parse(name, body, raw);
-    }
-    
-    /**
-     * Gets the default parser used to parse fields.
-     * @return the default field parser
-     */
-    public static DefaultFieldParser getParser() {
-        return parser;
-    }
-    
-    /**
-     * Gets the name of the field (<code>Subject</code>, 
-     * <code>From</code>, etc).
-     * 
-     * @return the field name.
-     */
-    public String getName() {
-        return name;
-    }
-    
-    /**
-     * Gets the original raw field string.
-     * 
-     * @return the original raw field string.
-     */
-    public String getRaw() {
-        return raw;
-    }
-    
-    /**
-     * Gets the unfolded, unparsed and possibly encoded (see RFC 2047) field 
-     * body string.
-     * 
-     * @return the unfolded unparsed field body string.
-     */
-    public String getBody() {
-        return body;
-    }
-    
-    /**
-     * Determines if this is a <code>Content-Type</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>Content-Type</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isContentType() {
-        return CONTENT_TYPE.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>Subject</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>Subject</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isSubject() {
-        return SUBJECT.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>From</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>From</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isFrom() {
-        return FROM.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * Determines if this is a <code>To</code> field.
-     * 
-     * @return <code>true</code> if this is a <code>To</code> field,
-     *         <code>false</code> otherwise.
-     */
-    public boolean isTo() {
-        return TO.equalsIgnoreCase(name);
-    }
-    
-    /**
-     * @see #getRaw()
-     */
-    public String toString() {
-        return raw;
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/FieldParser.java b/src/org/apache/james/mime4j/field/FieldParser.java
deleted file mode 100644
index 78aaf13..0000000
--- a/src/org/apache/james/mime4j/field/FieldParser.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *  Copyright 2006 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field;
-
-public interface FieldParser {
-    
-    Field parse(final String name, final String body, final String raw);
-}
diff --git a/src/org/apache/james/mime4j/field/MailboxField.java b/src/org/apache/james/mime4j/field/MailboxField.java
deleted file mode 100644
index f159800..0000000
--- a/src/org/apache/james/mime4j/field/MailboxField.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.Mailbox;
-import org.apache.james.mime4j.field.address.MailboxList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class MailboxField extends Field {
-    private final Mailbox mailbox;
-    private final ParseException parseException;
-
-    protected MailboxField(final String name, final String body, final String raw, final Mailbox mailbox, final ParseException parseException) {
-        super(name, body, raw);
-        this.mailbox = mailbox;
-        this.parseException = parseException;
-    }
-
-    public Mailbox getMailbox() {
-        return mailbox;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-    
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            Mailbox mailbox = null;
-            ParseException parseException = null;
-            try {
-                MailboxList mailboxList = AddressList.parse(body).flatten();
-                if (mailboxList.size() > 0) {
-                    mailbox = mailboxList.get(0);
-                }
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new MailboxField(name, body, raw, mailbox, parseException);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/MailboxListField.java b/src/org/apache/james/mime4j/field/MailboxListField.java
deleted file mode 100644
index 23378d4..0000000
--- a/src/org/apache/james/mime4j/field/MailboxListField.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.MailboxList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-public class MailboxListField extends Field {
-    
-    private MailboxList mailboxList;
-    private ParseException parseException;
-
-    protected MailboxListField(final String name, final String body, final String raw, final MailboxList mailboxList, final ParseException parseException) {
-        super(name, body, raw);
-        this.mailboxList = mailboxList;
-        this.parseException = parseException;
-    }
-
-    public MailboxList getMailboxList() {
-        return mailboxList;
-    }
-
-    public ParseException getParseException() {
-        return parseException;
-    }
-    
-    public static class Parser implements FieldParser {
-        private static Log log = LogFactory.getLog(Parser.class);
-
-        public Field parse(final String name, final String body, final String raw) {
-            MailboxList mailboxList = null;
-            ParseException parseException = null;
-            try {
-                mailboxList = AddressList.parse(body).flatten();
-            }
-            catch (ParseException e) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Parsing value '" + body + "': "+ e.getMessage());
-                }
-                parseException = e;
-            }
-            return new MailboxListField(name, body, raw, mailboxList, parseException);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/UnstructuredField.java b/src/org/apache/james/mime4j/field/UnstructuredField.java
deleted file mode 100644
index 6084e44..0000000
--- a/src/org/apache/james/mime4j/field/UnstructuredField.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field;
-
-import org.apache.james.mime4j.decoder.DecoderUtil;
-
-
-/**
- * Simple unstructured field such as <code>Subject</code>.
- *
- * 
- * @version $Id: UnstructuredField.java,v 1.3 2004/10/25 07:26:46 ntherning Exp $
- */
-public class UnstructuredField extends Field {
-    private String value;
-    
-    protected UnstructuredField(String name, String body, String raw, String value) {
-        super(name, body, raw);
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public static class Parser implements FieldParser {
-        public Field parse(final String name, final String body, final String raw) {
-            final String value = DecoderUtil.decodeEncodedWords(body);
-            return new UnstructuredField(name, body, raw, value);
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/address/Address.java b/src/org/apache/james/mime4j/field/address/Address.java
deleted file mode 100644
index 3e24e91..0000000
--- a/src/org/apache/james/mime4j/field/address/Address.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * The abstract base for classes that represent RFC2822 addresses.
- * This includes groups and mailboxes.
- *
- * Currently, no public methods are introduced on this class.
- *
- *
- */
-public abstract class Address {
-
-	/**
-	 * Adds any mailboxes represented by this address
-	 * into the given ArrayList. Note that this method
-	 * has default (package) access, so a doAddMailboxesTo
-	 * method is needed to allow the behavior to be
-	 * overridden by subclasses.
-	 */
-	final void addMailboxesTo(ArrayList<Address> results) {
-		doAddMailboxesTo(results);
-	}
-
-	/**
-	 * Adds any mailboxes represented by this address
-	 * into the given ArrayList. Must be overridden by
-	 * concrete subclasses.
-	 */
-	protected abstract void doAddMailboxesTo(ArrayList<Address> results);
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/AddressList.java b/src/org/apache/james/mime4j/field/address/AddressList.java
deleted file mode 100644
index 1829e79..0000000
--- a/src/org/apache/james/mime4j/field/address/AddressList.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import org.apache.james.mime4j.field.address.parser.AddressListParser;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Address objects.
- *
- *
- */
-public class AddressList {
-
-	private ArrayList<Address> addresses;
-
-	/**
-	 * @param addresses An ArrayList that contains only Address objects.
-	 * @param dontCopy true iff it is not possible for the addresses ArrayList to be modified by someone else.
-	 */
-	public AddressList(ArrayList<Address> addresses, boolean dontCopy) {
-		if (addresses != null)
-			this.addresses = (dontCopy ? addresses : new ArrayList<Address>(addresses));
-		else
-			this.addresses = new ArrayList<Address>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return addresses.size();
-	}
-
-	/**
-	 * Gets an address.
-	 */
-	public Address get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return addresses.get(index);
-	}
-
-	/**
-	 * Returns a flat list of all mailboxes represented
-	 * in this address list. Use this if you don't care
-	 * about grouping.
-	 */
-	public MailboxList flatten() {
-		// in the common case, all addresses are mailboxes
-		boolean groupDetected = false;
-		for (int i = 0; i < size(); i++) {
-			if (!(get(i) instanceof Mailbox)) {
-				groupDetected = true;
-				break;
-			}
-		}
-
-		if (!groupDetected)
-			return new MailboxList(addresses, true);
-
-		ArrayList<Address> results = new ArrayList<Address>();
-		for (int i = 0; i < size(); i++) {
-			Address addr = get(i);
-			addr.addMailboxesTo(results);
-		}
-
-		// copy-on-construct this time, because subclasses
-		// could have held onto a reference to the results
-		return new MailboxList(results, false);
-	}
-
-	/**
-	 * Dumps a representation of this address list to
-	 * stdout, for debugging purposes.
-	 */
-	public void print() {
-		for (int i = 0; i < size(); i++) {
-			Address addr = get(i);
-			System.out.println(addr.toString());
-		}
-	}
-
-	/**
-	 * Parse the address list string, such as the value
-	 * of a From, To, Cc, Bcc, Sender, or Reply-To
-	 * header.
-	 *
-	 * The string MUST be unfolded already.
-	 */
-	public static AddressList parse(String rawAddressList) throws ParseException {
-		AddressListParser parser = new AddressListParser(new StringReader(rawAddressList));
-		return Builder.getInstance().buildAddressList(parser.parse());
-	}
-
-	/**
-	 * Test console.
-	 */
-	public static void main(String[] args) throws Exception {
-		java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
-		while (true) {
-			try {
-				System.out.print("> ");
-				String line = reader.readLine();
-				if (line.length() == 0 || line.toLowerCase().equals("exit") || line.toLowerCase().equals("quit")) {
-					System.out.println("Goodbye.");
-					return;
-				}
-				AddressList list = parse(line);
-				list.print();
-			}
-			catch(Exception e) {
-				e.printStackTrace();
-				Thread.sleep(300);
-			}
-		}
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/Builder.java b/src/org/apache/james/mime4j/field/address/Builder.java
deleted file mode 100644
index 3bcd15b..0000000
--- a/src/org/apache/james/mime4j/field/address/Builder.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.apache.james.mime4j.decoder.DecoderUtil;
-import org.apache.james.mime4j.field.address.parser.ASTaddr_spec;
-import org.apache.james.mime4j.field.address.parser.ASTaddress;
-import org.apache.james.mime4j.field.address.parser.ASTaddress_list;
-import org.apache.james.mime4j.field.address.parser.ASTangle_addr;
-import org.apache.james.mime4j.field.address.parser.ASTdomain;
-import org.apache.james.mime4j.field.address.parser.ASTgroup_body;
-import org.apache.james.mime4j.field.address.parser.ASTlocal_part;
-import org.apache.james.mime4j.field.address.parser.ASTmailbox;
-import org.apache.james.mime4j.field.address.parser.ASTname_addr;
-import org.apache.james.mime4j.field.address.parser.ASTphrase;
-import org.apache.james.mime4j.field.address.parser.ASTroute;
-import org.apache.james.mime4j.field.address.parser.Node;
-import org.apache.james.mime4j.field.address.parser.SimpleNode;
-import org.apache.james.mime4j.field.address.parser.Token;
-
-/**
- * Transforms the JJTree-generated abstract syntax tree
- * into a graph of org.apache.james.mime4j.field.address objects.
- *
- *
- */
-class Builder {
-
-	private static Builder singleton = new Builder();
-
-	public static Builder getInstance() {
-		return singleton;
-	}
-
-
-
-	public AddressList buildAddressList(ASTaddress_list node) {
-		ArrayList<Address> list = new ArrayList<Address>();
-		for (int i = 0; i < node.jjtGetNumChildren(); i++) {
-			ASTaddress childNode = (ASTaddress) node.jjtGetChild(i);
-			Address address = buildAddress(childNode);
-			list.add(address);
-		}
-		return new AddressList(list, true);
-	}
-
-	private Address buildAddress(ASTaddress node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		if (n instanceof ASTaddr_spec) {
-			return buildAddrSpec((ASTaddr_spec)n);
-		}
-		else if (n instanceof ASTangle_addr) {
-			return buildAngleAddr((ASTangle_addr)n);
-		}
-		else if (n instanceof ASTphrase) {
-			String name = buildString((ASTphrase)n, false);
-			Node n2 = it.nextNode();
-			if (n2 instanceof ASTgroup_body) {
-				return new Group(name, buildGroupBody((ASTgroup_body)n2));
-			}
-			else if (n2 instanceof ASTangle_addr) {
-                name = DecoderUtil.decodeEncodedWords(name);
-				return new NamedMailbox(name, buildAngleAddr((ASTangle_addr)n2));
-			}
-			else {
-				throw new IllegalStateException();
-			}
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-
-
-	private MailboxList buildGroupBody(ASTgroup_body node) {
-		ArrayList<Address> results = new ArrayList<Address>();
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		while (it.hasNext()) {
-			Node n = it.nextNode();
-			if (n instanceof ASTmailbox)
-				results.add(buildMailbox((ASTmailbox)n));
-			else
-				throw new IllegalStateException();
-		}
-		return new MailboxList(results, true);
-	}
-
-	private Mailbox buildMailbox(ASTmailbox node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		if (n instanceof ASTaddr_spec) {
-			return buildAddrSpec((ASTaddr_spec)n);
-		}
-		else if (n instanceof ASTangle_addr) {
-			return buildAngleAddr((ASTangle_addr)n);
-		}
-		else if (n instanceof ASTname_addr) {
-			return buildNameAddr((ASTname_addr)n);
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-	private NamedMailbox buildNameAddr(ASTname_addr node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		Node n = it.nextNode();
-		String name;
-		if (n instanceof ASTphrase) {
-			name = buildString((ASTphrase)n, false);
-		}
-		else {
-			throw new IllegalStateException();
-		}
-
-		n = it.nextNode();
-		if (n instanceof ASTangle_addr) {
-            name = DecoderUtil.decodeEncodedWords(name);
-			return new NamedMailbox(name, buildAngleAddr((ASTangle_addr) n));
-		}
-		else {
-			throw new IllegalStateException();
-		}
-	}
-
-	private Mailbox buildAngleAddr(ASTangle_addr node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		DomainList route = null;
-		Node n = it.nextNode();
-		if (n instanceof ASTroute) {
-			route = buildRoute((ASTroute)n);
-			n = it.nextNode();
-		}
-		else if (n instanceof ASTaddr_spec)
-			; // do nothing
-		else
-			throw new IllegalStateException();
-
-		if (n instanceof ASTaddr_spec)
-			return buildAddrSpec(route, (ASTaddr_spec)n);
-		else
-			throw new IllegalStateException();
-	}
-
-	private DomainList buildRoute(ASTroute node) {
-		ArrayList<String> results = new ArrayList<String>(node.jjtGetNumChildren());
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		while (it.hasNext()) {
-			Node n = it.nextNode();
-			if (n instanceof ASTdomain)
-				results.add(buildString((ASTdomain)n, true));
-			else
-				throw new IllegalStateException();
-		}
-		return new DomainList(results, true);
-	}
-
-	private Mailbox buildAddrSpec(ASTaddr_spec node) {
-		return buildAddrSpec(null, node);
-	}
-	private Mailbox buildAddrSpec(DomainList route, ASTaddr_spec node) {
-		ChildNodeIterator it = new ChildNodeIterator(node);
-		String localPart = buildString((ASTlocal_part)it.nextNode(), true);
-		String domain = buildString((ASTdomain)it.nextNode(), true);
-		return new Mailbox(route, localPart, domain);
-	}
-
-
-	private String buildString(SimpleNode node, boolean stripSpaces) {
-		Token head = node.firstToken;
-		Token tail = node.lastToken;
-		StringBuffer out = new StringBuffer();
-
-		while (head != tail) {
-			out.append(head.image);
-			head = head.next;
-			if (!stripSpaces)
-				addSpecials(out, head.specialToken);
-		}
-		out.append(tail.image);
-
-		return out.toString();
-	}
-
-	private void addSpecials(StringBuffer out, Token specialToken) {
-		if (specialToken != null) {
-			addSpecials(out, specialToken.specialToken);
-			out.append(specialToken.image);
-		}
-	}
-
-	private static class ChildNodeIterator implements Iterator<Node> {
-
-		private SimpleNode simpleNode;
-		private int index;
-		private int len;
-
-		public ChildNodeIterator(SimpleNode simpleNode) {
-			this.simpleNode = simpleNode;
-			this.len = simpleNode.jjtGetNumChildren();
-			this.index = 0;
-		}
-
-		public void remove() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean hasNext() {
-			return index < len;
-		}
-
-		public Node next() {
-			return nextNode();
-		}
-
-		public Node nextNode() {
-			return simpleNode.jjtGetChild(index++);
-		}
-
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/DomainList.java b/src/org/apache/james/mime4j/field/address/DomainList.java
deleted file mode 100644
index 49b0f3b..0000000
--- a/src/org/apache/james/mime4j/field/address/DomainList.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Strings (that
- * are supposedly domain names or domain literals).
- *
- *
- */
-public class DomainList {
-	private ArrayList<String> domains;
-
-	/**
-	 * @param domains An ArrayList that contains only String objects.
-	 * @param dontCopy true iff it is not possible for the domains ArrayList to be modified by someone else.
-	 */
-	public DomainList(ArrayList<String> domains, boolean dontCopy) {
-		if (domains != null)
-			this.domains = (dontCopy ? domains : new ArrayList<String>(domains));
-		else
-			this.domains = new ArrayList<String>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return domains.size();
-	}
-
-	/**
-	 * Gets the domain name or domain literal at the
-	 * specified index.
-	 * @throws IndexOutOfBoundsException If index is &lt; 0 or &gt;= size().
-	 */
-	public String get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return domains.get(index);
-	}
-
-	/**
-	 * Returns the list of domains formatted as a route
-	 * string (not including the trailing ':').
-	 */
-	public String toRouteString() {
-		StringBuffer out = new StringBuffer();
-		for (int i = 0; i < domains.size(); i++) {
-			out.append("@");
-			out.append(get(i));
-			if (i + 1 < domains.size())
-				out.append(",");
-		}
-		return out.toString();
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/Group.java b/src/org/apache/james/mime4j/field/address/Group.java
deleted file mode 100644
index c0ab7f7..0000000
--- a/src/org/apache/james/mime4j/field/address/Group.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * A named group of zero or more mailboxes.
- *
- *
- */
-public class Group extends Address {
-	private String name;
-	private MailboxList mailboxList;
-
-	/**
-	 * @param name The group name.
-	 * @param mailboxes The mailboxes in this group.
-	 */
-	public Group(String name, MailboxList mailboxes) {
-		this.name = name;
-		this.mailboxList = mailboxes;
-	}
-
-	/**
-	 * Returns the group name.
-	 */
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * Returns the mailboxes in this group.
-	 */
-	public MailboxList getMailboxes() {
-		return mailboxList;
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer buf = new StringBuffer();
-		buf.append(name);
-		buf.append(":");
-		for (int i = 0; i < mailboxList.size(); i++) {
-			buf.append(mailboxList.get(i).toString());
-			if (i + 1 < mailboxList.size())
-				buf.append(",");
-		}
-		buf.append(";");
-		return buf.toString();
-	}
-
-	@Override
-	protected void doAddMailboxesTo(ArrayList<Address> results) {
-		for (int i = 0; i < mailboxList.size(); i++)
-			results.add(mailboxList.get(i));
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/Mailbox.java b/src/org/apache/james/mime4j/field/address/Mailbox.java
deleted file mode 100644
index 25f2548..0000000
--- a/src/org/apache/james/mime4j/field/address/Mailbox.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * Represents a single e-mail address.
- *
- *
- */
-public class Mailbox extends Address {
-	private DomainList route;
-	private String localPart;
-	private String domain;
-
-	/**
-	 * Creates a mailbox without a route. Routes are obsolete.
-	 * @param localPart The part of the e-mail address to the left of the "@".
-	 * @param domain The part of the e-mail address to the right of the "@".
-	 */
-	public Mailbox(String localPart, String domain) {
-		this(null, localPart, domain);
-	}
-
-	/**
-	 * Creates a mailbox with a route. Routes are obsolete.
-	 * @param route The zero or more domains that make up the route. Can be null.
-	 * @param localPart The part of the e-mail address to the left of the "@".
-	 * @param domain The part of the e-mail address to the right of the "@".
-	 */
-	public Mailbox(DomainList route, String localPart, String domain) {
-		this.route = route;
-		this.localPart = localPart;
-		this.domain = domain;
-	}
-
-	/**
-	 * Returns the route list.
-	 */
-	public DomainList getRoute() {
-		return route;
-	}
-
-	/**
-	 * Returns the left part of the e-mail address
-	 * (before "@").
-	 */
-	public String getLocalPart() {
-		return localPart;
-	}
-
-	/**
-	 * Returns the right part of the e-mail address
-	 * (after "@").
-	 */
-	public String getDomain() {
-		return domain;
-	}
-
-	/**
-	 * Formats the address as a string, not including
-	 * the route.
-	 *
-	 * @see #getAddressString(boolean)
-	 */
-	public String getAddressString() {
-		return getAddressString(false);
-	}
-
-	/**
-	 * Note that this value may not be usable
-	 * for transport purposes, only display purposes.
-	 *
-	 * For example, if the unparsed address was
-	 *
-	 *   <"Joe Cheng"@joecheng.com>
-	 *
-	 * this method would return
-	 *
-	 *   <Joe Cheng@joecheng.com>
-	 *
-	 * which is not valid for transport; the local part
-	 * would need to be re-quoted.
-	 *
-	 * @param includeRoute true if the route should be included if it exists.
-	 */
-	public String getAddressString(boolean includeRoute) {
-		return "<" + (!includeRoute || route == null ? "" : route.toRouteString() + ":")
-			+ localPart
-			+ (domain == null ? "" : "@")
-			+ domain + ">";
-	}
-
-	@Override
-	protected final void doAddMailboxesTo(ArrayList<Address> results) {
-		results.add(this);
-	}
-
-	@Override
-	public String toString() {
-		return getAddressString();
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/MailboxList.java b/src/org/apache/james/mime4j/field/address/MailboxList.java
deleted file mode 100644
index 2c9efb3..0000000
--- a/src/org/apache/james/mime4j/field/address/MailboxList.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-import java.util.ArrayList;
-
-/**
- * An immutable, random-access list of Mailbox objects.
- *
- *
- */
-public class MailboxList {
-
-	private ArrayList<Address> mailboxes;
-
-	/**
-	 * @param mailboxes An ArrayList that contains only Mailbox objects.
-	 * @param dontCopy true iff it is not possible for the mailboxes ArrayList to be modified by someone else.
-	 */
-	public MailboxList(ArrayList<Address> mailboxes, boolean dontCopy) {
-		if (mailboxes != null)
-			this.mailboxes = (dontCopy ? mailboxes : new ArrayList<Address>(mailboxes));
-		else
-			this.mailboxes = new ArrayList<Address>(0);
-	}
-
-	/**
-	 * The number of elements in this list.
-	 */
-	public int size() {
-		return mailboxes.size();
-	}
-
-	/**
-	 * Gets an address.
-	 */
-	public Mailbox get(int index) {
-		if (0 > index || size() <= index)
-			throw new IndexOutOfBoundsException();
-		return (Mailbox)mailboxes.get(index);
-	}
-
-	/**
-	 * Dumps a representation of this mailbox list to
-	 * stdout, for debugging purposes.
-	 */
-	public void print() {
-		for (int i = 0; i < size(); i++) {
-			Mailbox mailbox = get(i);
-			System.out.println(mailbox.toString());
-		}
-	}
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/NamedMailbox.java b/src/org/apache/james/mime4j/field/address/NamedMailbox.java
deleted file mode 100644
index 4b83060..0000000
--- a/src/org/apache/james/mime4j/field/address/NamedMailbox.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address;
-
-/**
- * A Mailbox that has a name/description.
- *
- *
- */
-public class NamedMailbox extends Mailbox {
-	private String name;
-
-	/**
-	 * @see Mailbox#Mailbox(String, String)
-	 */
-	public NamedMailbox(String name, String localPart, String domain) {
-		super(localPart, domain);
-		this.name = name;
-	}
-
-	/**
-	 * @see Mailbox#Mailbox(DomainList, String, String)
-	 */
-	public NamedMailbox(String name, DomainList route, String localPart, String domain) {
-		super(route, localPart, domain);
-		this.name = name;
-	}
-
-	/**
-	 * Creates a named mailbox based on an unnamed mailbox.
-	 */
-	public NamedMailbox(String name, Mailbox baseMailbox) {
-		super(baseMailbox.getRoute(), baseMailbox.getLocalPart(), baseMailbox.getDomain());
-		this.name = name;
-	}
-
-	/**
-	 * Returns the name of the mailbox.
-	 */
-	public String getName() {
-		return this.name;
-	}
-
-	/**
-	 * Same features (or problems) as Mailbox.getAddressString(boolean),
-	 * only more so.
-	 *
-	 * @see Mailbox#getAddressString(boolean)
-	 */
-	@Override
-	public String getAddressString(boolean includeRoute) {
-		return (name == null ? "" : name + " ") + super.getAddressString(includeRoute);
-	}
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
deleted file mode 100644
index 4d56d00..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTaddr_spec.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddr_spec.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddr_spec extends SimpleNode {
-  public ASTaddr_spec(int id) {
-    super(id);
-  }
-
-  public ASTaddr_spec(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java
deleted file mode 100644
index 47bdeda..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTaddress.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddress.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddress extends SimpleNode {
-  public ASTaddress(int id) {
-    super(id);
-  }
-
-  public ASTaddress(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java b/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
deleted file mode 100644
index 737840e..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTaddress_list.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTaddress_list.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTaddress_list extends SimpleNode {
-  public ASTaddress_list(int id) {
-    super(id);
-  }
-
-  public ASTaddress_list(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java b/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
deleted file mode 100644
index 8cb8f42..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTangle_addr.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTangle_addr.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTangle_addr extends SimpleNode {
-  public ASTangle_addr(int id) {
-    super(id);
-  }
-
-  public ASTangle_addr(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java b/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java
deleted file mode 100644
index b526643..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTdomain.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTdomain.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTdomain extends SimpleNode {
-  public ASTdomain(int id) {
-    super(id);
-  }
-
-  public ASTdomain(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java b/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
deleted file mode 100644
index f6017b9..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTgroup_body.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTgroup_body.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTgroup_body extends SimpleNode {
-  public ASTgroup_body(int id) {
-    super(id);
-  }
-
-  public ASTgroup_body(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java b/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
deleted file mode 100644
index 5c244fa..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTlocal_part.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTlocal_part.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTlocal_part extends SimpleNode {
-  public ASTlocal_part(int id) {
-    super(id);
-  }
-
-  public ASTlocal_part(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java b/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
deleted file mode 100644
index aeb469d..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTmailbox.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTmailbox.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTmailbox extends SimpleNode {
-  public ASTmailbox(int id) {
-    super(id);
-  }
-
-  public ASTmailbox(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java b/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
deleted file mode 100644
index 846c731..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTname_addr.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTname_addr.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTname_addr extends SimpleNode {
-  public ASTname_addr(int id) {
-    super(id);
-  }
-
-  public ASTname_addr(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java b/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java
deleted file mode 100644
index 7d711c5..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTphrase.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTphrase.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTphrase extends SimpleNode {
-  public ASTphrase(int id) {
-    super(id);
-  }
-
-  public ASTphrase(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ASTroute.java b/src/org/apache/james/mime4j/field/address/parser/ASTroute.java
deleted file mode 100644
index 54ea115..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ASTroute.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. ASTroute.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class ASTroute extends SimpleNode {
-  public ASTroute(int id) {
-    super(id);
-  }
-
-  public ASTroute(AddressListParser p, int id) {
-    super(p, id);
-  }
-
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java
deleted file mode 100644
index 8094df0..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.java
+++ /dev/null
@@ -1,977 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParser.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants, AddressListParserConstants {/*@bgen(jjtree)*/
-  protected JJTAddressListParserState jjtree = new JJTAddressListParserState();public static void main(String args[]) throws ParseException {
-                while (true) {
-                    try {
-                                AddressListParser parser = new AddressListParser(System.in);
-                        parser.parseLine();
-                        ((SimpleNode)parser.jjtree.rootNode()).dump("> ");
-                    } catch (Exception x) {
-                                x.printStackTrace();
-                                return;
-                    }
-                }
-    }
-
-    private static void log(String msg) {
-        System.out.print(msg);
-    }
-
-    public ASTaddress_list parse() throws ParseException {
-        try {
-            parseAll();
-            return (ASTaddress_list)jjtree.rootNode();
-        } catch (TokenMgrError tme) {
-            throw new ParseException(tme.getMessage());
-        }
-    }
-
-
-    void jjtreeOpenNodeScope(Node n) {
-        ((SimpleNode)n).firstToken = getToken(1);
-    }
-
-    void jjtreeCloseNodeScope(Node n) {
-        ((SimpleNode)n).lastToken = getToken(0);
-    }
-
-  final public void parseLine() throws ParseException {
-    address_list();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-  }
-
-  final public void parseAll() throws ParseException {
-    address_list();
-    jj_consume_token(0);
-  }
-
-  final public void address_list() throws ParseException {
- /*@bgen(jjtree) address_list */
-  ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 6:
-      case DOTATOM:
-      case QUOTEDSTRING:
-        address();
-        break;
-      default:
-        jj_la1[1] = jj_gen;
-        ;
-      }
-      label_1:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-          ;
-          break;
-        default:
-          jj_la1[2] = jj_gen;
-          break label_1;
-        }
-        jj_consume_token(3);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          address();
-          break;
-        default:
-          jj_la1[3] = jj_gen;
-          ;
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void address() throws ParseException {
- /*@bgen(jjtree) address */
-  ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      if (jj_2_1(2147483647)) {
-        addr_spec();
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-          angle_addr();
-          break;
-        case DOTATOM:
-        case QUOTEDSTRING:
-          phrase();
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 4:
-            group_body();
-            break;
-          case 6:
-            angle_addr();
-            break;
-          default:
-            jj_la1[4] = jj_gen;
-            jj_consume_token(-1);
-            throw new ParseException();
-          }
-          break;
-        default:
-          jj_la1[5] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void mailbox() throws ParseException {
- /*@bgen(jjtree) mailbox */
-  ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      if (jj_2_2(2147483647)) {
-        addr_spec();
-      } else {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-          angle_addr();
-          break;
-        case DOTATOM:
-        case QUOTEDSTRING:
-          name_addr();
-          break;
-        default:
-          jj_la1[6] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void name_addr() throws ParseException {
- /*@bgen(jjtree) name_addr */
-  ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      phrase();
-      angle_addr();
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void group_body() throws ParseException {
- /*@bgen(jjtree) group_body */
-  ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(4);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 6:
-      case DOTATOM:
-      case QUOTEDSTRING:
-        mailbox();
-        break;
-      default:
-        jj_la1[7] = jj_gen;
-        ;
-      }
-      label_2:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-          ;
-          break;
-        default:
-          jj_la1[8] = jj_gen;
-          break label_2;
-        }
-        jj_consume_token(3);
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 6:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          mailbox();
-          break;
-        default:
-          jj_la1[9] = jj_gen;
-          ;
-        }
-      }
-      jj_consume_token(5);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void angle_addr() throws ParseException {
- /*@bgen(jjtree) angle_addr */
-  ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(6);
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 8:
-        route();
-        break;
-      default:
-        jj_la1[10] = jj_gen;
-        ;
-      }
-      addr_spec();
-      jj_consume_token(7);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void route() throws ParseException {
- /*@bgen(jjtree) route */
-  ASTroute jjtn000 = new ASTroute(JJTROUTE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      jj_consume_token(8);
-      domain();
-      label_3:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 3:
-        case 8:
-          ;
-          break;
-        default:
-          jj_la1[11] = jj_gen;
-          break label_3;
-        }
-        label_4:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 3:
-            ;
-            break;
-          default:
-            jj_la1[12] = jj_gen;
-            break label_4;
-          }
-          jj_consume_token(3);
-        }
-        jj_consume_token(8);
-        domain();
-      }
-      jj_consume_token(4);
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void phrase() throws ParseException {
- /*@bgen(jjtree) phrase */
-  ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      label_5:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-          jj_consume_token(DOTATOM);
-          break;
-        case QUOTEDSTRING:
-          jj_consume_token(QUOTEDSTRING);
-          break;
-        default:
-          jj_la1[13] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-        case QUOTEDSTRING:
-          ;
-          break;
-        default:
-          jj_la1[14] = jj_gen;
-          break label_5;
-        }
-      }
-    } finally {
-  if (jjtc000) {
-    jjtree.closeNodeScope(jjtn000, true);
-    jjtreeCloseNodeScope(jjtn000);
-  }
-    }
-  }
-
-  final public void addr_spec() throws ParseException {
- /*@bgen(jjtree) addr_spec */
-  ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-    try {
-      local_part();
-      jj_consume_token(8);
-      domain();
-    } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            {if (true) throw (RuntimeException)jjte000;}
-          }
-          if (jjte000 instanceof ParseException) {
-            {if (true) throw (ParseException)jjte000;}
-          }
-          {if (true) throw (Error)jjte000;}
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void local_part() throws ParseException {
- /*@bgen(jjtree) local_part */
-  ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case DOTATOM:
-        t = jj_consume_token(DOTATOM);
-        break;
-      case QUOTEDSTRING:
-        t = jj_consume_token(QUOTEDSTRING);
-        break;
-      default:
-        jj_la1[15] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-      label_6:
-      while (true) {
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 9:
-        case DOTATOM:
-        case QUOTEDSTRING:
-          ;
-          break;
-        default:
-          jj_la1[16] = jj_gen;
-          break label_6;
-        }
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case 9:
-          t = jj_consume_token(9);
-          break;
-        default:
-          jj_la1[17] = jj_gen;
-          ;
-        }
-                        if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
-                                {if (true) throw new ParseException("Words in local part must be separated by '.'");}
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case DOTATOM:
-          t = jj_consume_token(DOTATOM);
-          break;
-        case QUOTEDSTRING:
-          t = jj_consume_token(QUOTEDSTRING);
-          break;
-        default:
-          jj_la1[18] = jj_gen;
-          jj_consume_token(-1);
-          throw new ParseException();
-        }
-      }
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final public void domain() throws ParseException {
- /*@bgen(jjtree) domain */
-  ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);Token t;
-    try {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case DOTATOM:
-        t = jj_consume_token(DOTATOM);
-        label_7:
-        while (true) {
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 9:
-          case DOTATOM:
-            ;
-            break;
-          default:
-            jj_la1[19] = jj_gen;
-            break label_7;
-          }
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-          case 9:
-            t = jj_consume_token(9);
-            break;
-          default:
-            jj_la1[20] = jj_gen;
-            ;
-          }
-                                if (t.image.charAt(t.image.length() - 1) != '.')
-                                        {if (true) throw new ParseException("Atoms in domain names must be separated by '.'");}
-          t = jj_consume_token(DOTATOM);
-        }
-        break;
-      case DOMAINLITERAL:
-        jj_consume_token(DOMAINLITERAL);
-        break;
-      default:
-        jj_la1[21] = jj_gen;
-        jj_consume_token(-1);
-        throw new ParseException();
-      }
-    } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-    }
-  }
-
-  final private boolean jj_2_1(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_1(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(0, xla); }
-  }
-
-  final private boolean jj_2_2(int xla) {
-    jj_la = xla; jj_lastpos = jj_scanpos = token;
-    try { return !jj_3_2(); }
-    catch(LookaheadSuccess ls) { return true; }
-    finally { jj_save(1, xla); }
-  }
-
-  final private boolean jj_3R_11() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(9)) jj_scanpos = xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(14)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(31)) return true;
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_13() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(9)) jj_scanpos = xsp;
-    if (jj_scan_token(DOTATOM)) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_8() {
-    if (jj_3R_9()) return true;
-    if (jj_scan_token(8)) return true;
-    if (jj_3R_10()) return true;
-    return false;
-  }
-
-  final private boolean jj_3_1() {
-    if (jj_3R_8()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_12() {
-    if (jj_scan_token(DOTATOM)) return true;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_13()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_10() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_12()) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(18)) return true;
-    }
-    return false;
-  }
-
-  final private boolean jj_3_2() {
-    if (jj_3R_8()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_9() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(14)) {
-    jj_scanpos = xsp;
-    if (jj_scan_token(31)) return true;
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_11()) { jj_scanpos = xsp; break; }
-    }
-    return false;
-  }
-
-  public AddressListParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private Token jj_scanpos, jj_lastpos;
-  private int jj_la;
-  public boolean lookingAhead = false;
-  private boolean jj_semLA;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[22];
-  static private int[] jj_la1_0;
-  static private int[] jj_la1_1;
-  static {
-      jj_la1_0();
-      jj_la1_1();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x80004040,0x8,0x80004040,0x50,0x80004040,0x80004040,0x80004040,0x8,0x80004040,0x100,0x108,0x8,0x80004000,0x80004000,0x80004000,0x80004200,0x200,0x80004000,0x4200,0x200,0x44000,};
-   }
-   private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
-   }
-  final private JJCalls[] jj_2_rtns = new JJCalls[2];
-  private boolean jj_rescan = false;
-  private int jj_gc = 0;
-
-  public AddressListParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public AddressListParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new AddressListParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public AddressListParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new AddressListParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public AddressListParser(AddressListParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  public void ReInit(AddressListParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jjtree.reset();
-    jj_gen = 0;
-    for (int i = 0; i < 22; i++) jj_la1[i] = -1;
-    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      if (++jj_gc > 100) {
-        jj_gc = 0;
-        for (int i = 0; i < jj_2_rtns.length; i++) {
-          JJCalls c = jj_2_rtns[i];
-          while (c != null) {
-            if (c.gen < jj_gen) c.first = null;
-            c = c.next;
-          }
-        }
-      }
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  static private final class LookaheadSuccess extends java.lang.Error { }
-  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
-  final private boolean jj_scan_token(int kind) {
-    if (jj_scanpos == jj_lastpos) {
-      jj_la--;
-      if (jj_scanpos.next == null) {
-        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
-      } else {
-        jj_lastpos = jj_scanpos = jj_scanpos.next;
-      }
-    } else {
-      jj_scanpos = jj_scanpos.next;
-    }
-    if (jj_rescan) {
-      int i = 0; Token tok = token;
-      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
-      if (tok != null) jj_add_error_token(kind, i);
-    }
-    if (jj_scanpos.kind != kind) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
-    return false;
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = lookingAhead ? jj_scanpos : token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-  private int[] jj_lasttokens = new int[100];
-  private int jj_endpos;
-
-  private void jj_add_error_token(int kind, int pos) {
-    if (pos >= 100) return;
-    if (pos == jj_endpos + 1) {
-      jj_lasttokens[jj_endpos++] = kind;
-    } else if (jj_endpos != 0) {
-      jj_expentry = new int[jj_endpos];
-      for (int i = 0; i < jj_endpos; i++) {
-        jj_expentry[i] = jj_lasttokens[i];
-      }
-      boolean exists = false;
-      for (java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) {
-        int[] oldentry = e.nextElement();
-        if (oldentry.length == jj_expentry.length) {
-          exists = true;
-          for (int i = 0; i < jj_expentry.length; i++) {
-            if (oldentry[i] != jj_expentry[i]) {
-              exists = false;
-              break;
-            }
-          }
-          if (exists) break;
-        }
-      }
-      if (!exists) jj_expentries.addElement(jj_expentry);
-      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
-    }
-  }
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[34];
-    for (int i = 0; i < 34; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 22; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 34; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    jj_endpos = 0;
-    jj_rescan_token();
-    jj_add_error_token(0, 0);
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-  final private void jj_rescan_token() {
-    jj_rescan = true;
-    for (int i = 0; i < 2; i++) {
-    try {
-      JJCalls p = jj_2_rtns[i];
-      do {
-        if (p.gen > jj_gen) {
-          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
-          switch (i) {
-            case 0: jj_3_1(); break;
-            case 1: jj_3_2(); break;
-          }
-        }
-        p = p.next;
-      } while (p != null);
-      } catch(LookaheadSuccess ls) { }
-    }
-    jj_rescan = false;
-  }
-
-  final private void jj_save(int index, int xla) {
-    JJCalls p = jj_2_rtns[index];
-    while (p.gen > jj_gen) {
-      if (p.next == null) { p = p.next = new JJCalls(); break; }
-      p = p.next;
-    }
-    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
-  }
-
-  static final class JJCalls {
-    int gen;
-    Token first;
-    int arg;
-    JJCalls next;
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj b/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
deleted file mode 100644
index c14277b..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParser.jj
+++ /dev/null
@@ -1,595 +0,0 @@
-/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParser.jj */
-/*@egen*//****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-
-/**
- * RFC2822 address list parser.
- *
- * Created 9/17/2004
- * by Joe Cheng <code@joecheng.com>
- */
-
-options {
-	STATIC=false;
-	LOOKAHEAD=1;                                                                                                                               
-	//DEBUG_PARSER=true;
-	//DEBUG_TOKEN_MANAGER=true;
-}
-
-PARSER_BEGIN(AddressListParser)
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParser/*@bgen(jjtree)*/implements AddressListParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
-  protected JJTAddressListParserState jjtree = new JJTAddressListParserState();
-
-/*@egen*/
-    public static void main(String args[]) throws ParseException {
-		while (true) {
-		    try {
-				AddressListParser parser = new AddressListParser(System.in);
-		    	parser.parseLine();
-		    	((SimpleNode)parser.jjtree.rootNode()).dump("> ");
-		    } catch (Exception x) {
-				x.printStackTrace();
-				return;
-		    }
-		}
-    }
-    
-    private static void log(String msg) {
-    	System.out.print(msg);
-    }
-    
-    public ASTaddress_list parse() throws ParseException {
-        try {
-    	    parseAll();
-    	    return (ASTaddress_list)jjtree.rootNode();
-    	} catch (TokenMgrError tme) {
-    	    throw new ParseException(tme.getMessage());
-    	}
-    }
-    
-    
-    void jjtreeOpenNodeScope(Node n) {
-    	((SimpleNode)n).firstToken = getToken(1);
-    }
-    
-    void jjtreeCloseNodeScope(Node n) {
-    	((SimpleNode)n).lastToken = getToken(0);
-    }
-}
-
-PARSER_END(AddressListParser)
-
-void parseLine()       :
-{}
-{
-	address_list() ["\r"] "\n"
-}
-
-void parseAll()       :
-{}
-{
-	address_list() <EOF>
-}
-
-void address_list() :
-{/*@bgen(jjtree) address_list */
-  ASTaddress_list jjtn000 = new ASTaddress_list(JJTADDRESS_LIST);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) address_list */
-        try {
-/*@egen*/
-	[ address() ]
-	(
-		","
-		[ address() ]
-	)*/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void address() :
-{/*@bgen(jjtree) address */
-  ASTaddress jjtn000 = new ASTaddress(JJTADDRESS);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) address */
-        try {
-/*@egen*/
-	LOOKAHEAD(2147483647)
-	addr_spec()
-|	angle_addr()
-|	( phrase() (group_body() | angle_addr()) )/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void mailbox() :
-{/*@bgen(jjtree) mailbox */
-  ASTmailbox jjtn000 = new ASTmailbox(JJTMAILBOX);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) mailbox */
-        try {
-/*@egen*/
-	LOOKAHEAD(2147483647)
-	addr_spec()
-|	angle_addr()
-|	name_addr()/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void name_addr() :
-{/*@bgen(jjtree) name_addr */
-  ASTname_addr jjtn000 = new ASTname_addr(JJTNAME_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) name_addr */
-        try {
-/*@egen*/
-	phrase() angle_addr()/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void group_body() :
-{/*@bgen(jjtree) group_body */
-  ASTgroup_body jjtn000 = new ASTgroup_body(JJTGROUP_BODY);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) group_body */
-        try {
-/*@egen*/
-	":"
-	[ mailbox() ]
-	(
-		","
-		[ mailbox() ]
-	)*
-	";"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void angle_addr() :
-{/*@bgen(jjtree) angle_addr */
-  ASTangle_addr jjtn000 = new ASTangle_addr(JJTANGLE_ADDR);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) angle_addr */
-        try {
-/*@egen*/
-	"<" [ route() ] addr_spec() ">"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void route() :
-{/*@bgen(jjtree) route */
-  ASTroute jjtn000 = new ASTroute(JJTROUTE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) route */
-        try {
-/*@egen*/
-	"@" domain() ( (",")* "@" domain() )* ":"/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void phrase() :
-{/*@bgen(jjtree) phrase */
-  ASTphrase jjtn000 = new ASTphrase(JJTPHRASE);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) phrase */
-try {
-/*@egen*/
-(	<DOTATOM>
-|	<QUOTEDSTRING>
-)+/*@bgen(jjtree)*/
-} finally {
-  if (jjtc000) {
-    jjtree.closeNodeScope(jjtn000, true);
-    jjtreeCloseNodeScope(jjtn000);
-  }
-}
-/*@egen*/
-}
-
-void addr_spec() :
-{/*@bgen(jjtree) addr_spec */
-  ASTaddr_spec jjtn000 = new ASTaddr_spec(JJTADDR_SPEC);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/}
-{/*@bgen(jjtree) addr_spec */
-        try {
-/*@egen*/
-	( local_part() "@" domain() )/*@bgen(jjtree)*/
-        } catch (Throwable jjte000) {
-          if (jjtc000) {
-            jjtree.clearNodeScope(jjtn000);
-            jjtc000 = false;
-          } else {
-            jjtree.popNode();
-          }
-          if (jjte000 instanceof RuntimeException) {
-            throw (RuntimeException)jjte000;
-          }
-          if (jjte000 instanceof ParseException) {
-            throw (ParseException)jjte000;
-          }
-          throw (Error)jjte000;
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void local_part() :
-{/*@bgen(jjtree) local_part */
-  ASTlocal_part jjtn000 = new ASTlocal_part(JJTLOCAL_PART);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/ Token t; }
-{/*@bgen(jjtree) local_part */
-        try {
-/*@egen*/
-	( t=<DOTATOM> | t=<QUOTEDSTRING> )
-	(	[t="."]
-		{
-			if (t.image.charAt(t.image.length() - 1) != '.' || t.kind == AddressListParserConstants.QUOTEDSTRING)
-				throw new ParseException("Words in local part must be separated by '.'");
-		}
-		(	t=<DOTATOM> | t=<QUOTEDSTRING> )
-	)*/*@bgen(jjtree)*/
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-void domain() :
-{/*@bgen(jjtree) domain */
-  ASTdomain jjtn000 = new ASTdomain(JJTDOMAIN);
-  boolean jjtc000 = true;
-  jjtree.openNodeScope(jjtn000);
-  jjtreeOpenNodeScope(jjtn000);
-/*@egen*/ Token t; }
-{/*@bgen(jjtree) domain */
-        try {
-/*@egen*/
-	(	t=<DOTATOM>
-		(	[t="."]
-			{
-				if (t.image.charAt(t.image.length() - 1) != '.')
-					throw new ParseException("Atoms in domain names must be separated by '.'");
-			}
-			t=<DOTATOM>
-		)*
-	)
-|	<DOMAINLITERAL>/*@bgen(jjtree)*/
-        } finally {
-          if (jjtc000) {
-            jjtree.closeNodeScope(jjtn000, true);
-            jjtreeCloseNodeScope(jjtn000);
-          }
-        }
-/*@egen*/
-}
-
-SPECIAL_TOKEN :
-{
- 	< WS: ( [" ", "\t"] )+ >
-}
-
-TOKEN :
-{
-	< #ALPHA: ["a" - "z", "A" - "Z"] >
-|	< #DIGIT: ["0" - "9"] >
-|	< #ATEXT: ( <ALPHA> | <DIGIT>
-			  | "!" | "#" | "$" | "%"
-			  | "&" | "'" | "*" | "+"
-			  | "-" | "/" | "=" | "?"
-			  | "^" | "_" | "`" | "{"
-			  | "|" | "}" | "~"
-			  )>
-|	< DOTATOM: <ATEXT> ( <ATEXT> | "." )* >
-}
-
-TOKEN_MGR_DECLS :
-{
-	// Keeps track of how many levels of comment nesting
-	// we've encountered.  This is only used when the 2nd
-	// level is reached, for example ((this)), not (this).
-	// This is because the outermost level must be treated
-	// specially anyway, because the outermost ")" has a 
-	// different token type than inner ")" instances.
-	static int commentNest;
-}
-
-MORE :
-{
-	// domain literal
-	"[" : INDOMAINLITERAL
-}
-
-<INDOMAINLITERAL>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	< ~["[", "]", "\\"] >
-}
-
-<INDOMAINLITERAL>
-TOKEN :
-{
-	< DOMAINLITERAL: "]" > { matchedToken.image = image.toString(); }: DEFAULT
-}
-
-MORE :
-{
-	// starts a comment
-	"(" : INCOMMENT
-}
-
-<INCOMMENT>
-SKIP :
-{
-	// ends a comment
-	< COMMENT: ")" > : DEFAULT
-	// if this is ever changed to not be a SKIP, need
-	// to make sure matchedToken.token = token.toString()
-	// is called.
-}
-
-<INCOMMENT>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	"(" { commentNest = 1; } : NESTED_COMMENT
-|	< <ANY>>
-}
-
-<NESTED_COMMENT>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	"(" { ++commentNest; }
-|	")" { --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT); }
-|	< <ANY>>
-}
-
-
-// QUOTED STRINGS
-
-MORE :
-{
-	"\"" { image.deleteCharAt(image.length() - 1); } : INQUOTEDSTRING
-}
-
-<INQUOTEDSTRING>
-MORE :
-{
-	< <QUOTEDPAIR>> { image.deleteCharAt(image.length() - 2); }
-|	< (~["\"", "\\"])+ >
-}
-
-<INQUOTEDSTRING>
-TOKEN :
-{
-	< QUOTEDSTRING: "\"" > { matchedToken.image = image.substring(0, image.length() - 1); } : DEFAULT
-}
-
-// GLOBALS
-
-<*>
-TOKEN :
-{
-	< #QUOTEDPAIR: "\\" <ANY> >
-|	< #ANY: ~[] >
-}
-
-// ERROR!
-/*
-
-<*>
-TOKEN :
-{
-	< UNEXPECTED_CHAR: <ANY> >
-}
-
-*/
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
deleted file mode 100644
index 006a082..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParserConstants.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserConstants.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserConstants {
-
-  int EOF = 0;
-  int WS = 10;
-  int ALPHA = 11;
-  int DIGIT = 12;
-  int ATEXT = 13;
-  int DOTATOM = 14;
-  int DOMAINLITERAL = 18;
-  int COMMENT = 20;
-  int QUOTEDSTRING = 31;
-  int QUOTEDPAIR = 32;
-  int ANY = 33;
-
-  int DEFAULT = 0;
-  int INDOMAINLITERAL = 1;
-  int INCOMMENT = 2;
-  int NESTED_COMMENT = 3;
-  int INQUOTEDSTRING = 4;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\",\"",
-    "\":\"",
-    "\";\"",
-    "\"<\"",
-    "\">\"",
-    "\"@\"",
-    "\".\"",
-    "<WS>",
-    "<ALPHA>",
-    "<DIGIT>",
-    "<ATEXT>",
-    "<DOTATOM>",
-    "\"[\"",
-    "<token of kind 16>",
-    "<token of kind 17>",
-    "\"]\"",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 21>",
-    "\"(\"",
-    "<token of kind 23>",
-    "<token of kind 24>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 27>",
-    "\"\\\"\"",
-    "<token of kind 29>",
-    "<token of kind 30>",
-    "\"\\\"\"",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
deleted file mode 100644
index d2dd88d..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTokenManager.java
+++ /dev/null
@@ -1,1009 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. AddressListParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-public class AddressListParserTokenManager implements AddressListParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a 
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStopAtPos(0, 2);
-      case 13:
-         return jjStopAtPos(0, 1);
-      case 34:
-         return jjStopAtPos(0, 28);
-      case 40:
-         return jjStopAtPos(0, 19);
-      case 44:
-         return jjStopAtPos(0, 3);
-      case 46:
-         return jjStopAtPos(0, 9);
-      case 58:
-         return jjStopAtPos(0, 4);
-      case 59:
-         return jjStopAtPos(0, 5);
-      case 60:
-         return jjStopAtPos(0, 6);
-      case 62:
-         return jjStopAtPos(0, 7);
-      case 64:
-         return jjStopAtPos(0, 8);
-      case 91:
-         return jjStopAtPos(0, 15);
-      default :
-         return jjMoveNfa_0(1, 0);
-   }
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 1:
-                  if ((0xa3ffacfa00000000L & l) != 0L)
-                  {
-                     if (kind > 14)
-                        kind = 14;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 10)
-                        kind = 10;
-                     jjCheckNAdd(0);
-                  }
-                  break;
-               case 0:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 10;
-                  jjCheckNAdd(0);
-                  break;
-               case 2:
-                  if ((0xa3ffecfa00000000L & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 1:
-               case 2:
-                  if ((0x7fffffffc7fffffeL & l) == 0L)
-                     break;
-                  if (kind > 14)
-                     kind = 14;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 22);
-      case 41:
-         return jjStopAtPos(0, 20);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 23)
-                     kind = 23;
-                  break;
-               case 1:
-                  if (kind > 21)
-                     kind = 21;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 23)
-                     kind = 23;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 21)
-                     kind = 21;
-                  break;
-               case 2:
-                  if (kind > 23)
-                     kind = 23;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 23)
-                     kind = 23;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 21)
-                     kind = 21;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_4(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_4(int pos, long active0)
-{
-   return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_4(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_4(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_4()
-{
-   switch(curChar)
-   {
-      case 34:
-         return jjStopAtPos(0, 31);
-      default :
-         return jjMoveNfa_4(0, 0);
-   }
-}
-private final int jjMoveNfa_4(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((0xfffffffbffffffffL & l) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if (kind > 29)
-                     kind = 29;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                  {
-                     if (kind > 30)
-                        kind = 30;
-                     jjCheckNAdd(2);
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 29)
-                     kind = 29;
-                  break;
-               case 2:
-                  if ((0xffffffffefffffffL & l) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 30)
-                     kind = 30;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 29)
-                     kind = 29;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_3(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_3(int pos, long active0)
-{
-   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_3(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_3(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_3()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 25);
-      case 41:
-         return jjStopAtPos(0, 26);
-      default :
-         return jjMoveNfa_3(0, 0);
-   }
-}
-private final int jjMoveNfa_3(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 27)
-                     kind = 27;
-                  break;
-               case 1:
-                  if (kind > 24)
-                     kind = 24;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 27)
-                     kind = 27;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 24)
-                     kind = 24;
-                  break;
-               case 2:
-                  if (kind > 27)
-                     kind = 27;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 27)
-                     kind = 27;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 24)
-                     kind = 24;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 93:
-         return jjStopAtPos(0, 18);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               case 1:
-                  if (kind > 16)
-                     kind = 16;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffc7ffffffL & l) != 0L)
-                  {
-                     if (kind > 17)
-                        kind = 17;
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 16)
-                     kind = 16;
-                  break;
-               case 2:
-                  if ((0xffffffffc7ffffffL & l) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
-                     kind = 16;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\54", "\72", "\73", "\74", "\76", "\100", "\56", null, null, 
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INDOMAINLITERAL", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-   "INQUOTEDSTRING", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, 2, 0, -1, 3, -1, -1, 
-   -1, -1, -1, 4, -1, -1, 0, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x800443ffL, 
-};
-static final long[] jjtoSkip = {
-   0x100400L, 
-};
-static final long[] jjtoSpecial = {
-   0x400L, 
-};
-static final long[] jjtoMore = {
-   0x7feb8000L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[3];
-private final int[] jjstateSet = new int[6];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public AddressListParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public AddressListParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 3; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 5 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-       case 3:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_3();
-         break;
-       case 4:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_4();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-           TokenLexicalActions(matchedToken);
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 16 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 21 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 22 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 24 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 25 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 26 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      case 28 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-               image.deleteCharAt(image.length() - 1);
-         break;
-      case 29 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      default : 
-         break;
-   }
-}
-void TokenLexicalActions(Token matchedToken)
-{
-   switch(jjmatchedKind)
-   {
-      case 18 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.toString();
-         break;
-      case 31 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.substring(0, image.length() - 1);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
deleted file mode 100644
index 5987f19..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserTreeConstants.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserTreeConstants
-{
-  public int JJTVOID = 0;
-  public int JJTADDRESS_LIST = 1;
-  public int JJTADDRESS = 2;
-  public int JJTMAILBOX = 3;
-  public int JJTNAME_ADDR = 4;
-  public int JJTGROUP_BODY = 5;
-  public int JJTANGLE_ADDR = 6;
-  public int JJTROUTE = 7;
-  public int JJTPHRASE = 8;
-  public int JJTADDR_SPEC = 9;
-  public int JJTLOCAL_PART = 10;
-  public int JJTDOMAIN = 11;
-
-
-  public String[] jjtNodeName = {
-    "void",
-    "address_list",
-    "address",
-    "mailbox",
-    "name_addr",
-    "group_body",
-    "angle_addr",
-    "route",
-    "phrase",
-    "addr_spec",
-    "local_part",
-    "domain",
-  };
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java b/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
deleted file mode 100644
index 8ec2fe7..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/AddressListParserVisitor.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public interface AddressListParserVisitor
-{
-  public Object visit(SimpleNode node, Object data);
-  public Object visit(ASTaddress_list node, Object data);
-  public Object visit(ASTaddress node, Object data);
-  public Object visit(ASTmailbox node, Object data);
-  public Object visit(ASTname_addr node, Object data);
-  public Object visit(ASTgroup_body node, Object data);
-  public Object visit(ASTangle_addr node, Object data);
-  public Object visit(ASTroute node, Object data);
-  public Object visit(ASTphrase node, Object data);
-  public Object visit(ASTaddr_spec node, Object data);
-  public Object visit(ASTlocal_part node, Object data);
-  public Object visit(ASTdomain node, Object data);
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/BaseNode.java b/src/org/apache/james/mime4j/field/address/parser/BaseNode.java
deleted file mode 100644
index 7809746..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/BaseNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.address.parser;
-
-import org.apache.james.mime4j.field.address.parser.Node;
-import org.apache.james.mime4j.field.address.parser.Token;
-
-public abstract class BaseNode implements Node {
-  
-  public Token firstToken;
-  public Token lastToken;
-
-}
\ No newline at end of file
diff --git a/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java b/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
deleted file mode 100644
index 08b5c5b..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. /Users/jason/Projects/apache-mime4j-0.3/target/generated-sources/jjtree/org/apache/james/mime4j/field/address/parser/JJTAddressListParserState.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-class JJTAddressListParserState {
-  private java.util.Stack<Node> nodes;
-  private java.util.Stack<Integer> marks;
-
-  private int sp;		// number of nodes on stack
-  private int mk;		// current mark
-  private boolean node_created;
-
-  JJTAddressListParserState() {
-    nodes = new java.util.Stack<Node>();
-    marks = new java.util.Stack<Integer>();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Determines whether the current node was actually closed and
-     pushed.  This should only be called in the final user action of a
-     node scope.  */
-  boolean nodeCreated() {
-    return node_created;
-  }
-
-  /* Call this to reinitialize the node stack.  It is called
-     automatically by the parser's ReInit() method. */
-  void reset() {
-    nodes.removeAllElements();
-    marks.removeAllElements();
-    sp = 0;
-    mk = 0;
-  }
-
-  /* Returns the root node of the AST.  It only makes sense to call
-     this after a successful parse. */
-  Node rootNode() {
-    return nodes.elementAt(0);
-  }
-
-  /* Pushes a node on to the stack. */
-  void pushNode(Node n) {
-    nodes.push(n);
-    ++sp;
-  }
-
-  /* Returns the node on the top of the stack, and remove it from the
-     stack.  */
-  Node popNode() {
-    if (--sp < mk) {
-      mk = marks.pop().intValue();
-    }
-    return nodes.pop();
-  }
-
-  /* Returns the node currently on the top of the stack. */
-  Node peekNode() {
-    return nodes.peek();
-  }
-
-  /* Returns the number of children on the stack in the current node
-     scope. */
-  int nodeArity() {
-    return sp - mk;
-  }
-
-
-  void clearNodeScope(Node n) {
-    while (sp > mk) {
-      popNode();
-    }
-    mk = marks.pop().intValue();
-  }
-
-
-  void openNodeScope(Node n) {
-    marks.push(new Integer(mk));
-    mk = sp;
-    n.jjtOpen();
-  }
-
-
-  /* A definite node is constructed from a specified number of
-     children.  That number of nodes are popped from the stack and
-     made the children of the definite node.  Then the definite node
-     is pushed on to the stack. */
-  void closeNodeScope(Node n, int num) {
-    mk = marks.pop().intValue();
-    while (num-- > 0) {
-      Node c = popNode();
-      c.jjtSetParent(n);
-      n.jjtAddChild(c, num);
-    }
-    n.jjtClose();
-    pushNode(n);
-    node_created = true;
-  }
-
-
-  /* A conditional node is constructed if its condition is true.  All
-     the nodes that have been pushed since the node was opened are
-     made children of the the conditional node, which is then pushed
-     on to the stack.  If the condition is false the node is not
-     constructed and they are left on the stack. */
-  void closeNodeScope(Node n, boolean condition) {
-    if (condition) {
-      int a = nodeArity();
-      mk = marks.pop().intValue();
-      while (a-- > 0) {
-	Node c = popNode();
-	c.jjtSetParent(n);
-	n.jjtAddChild(c, a);
-      }
-      n.jjtClose();
-      pushNode(n);
-      node_created = true;
-    } else {
-      mk = marks.pop().intValue();
-      node_created = false;
-    }
-  }
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/Node.java b/src/org/apache/james/mime4j/field/address/parser/Node.java
deleted file mode 100644
index 1588920..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/Node.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. Node.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-/* All AST nodes must implement this interface.  It provides basic
-   machinery for constructing the parent and child relationships
-   between nodes. */
-
-public interface Node {
-
-  /** This method is called after the node has been made the current
-    node.  It indicates that child nodes can now be added to it. */
-  public void jjtOpen();
-
-  /** This method is called after all the child nodes have been
-    added. */
-  public void jjtClose();
-
-  /** This pair of methods are used to inform the node of its
-    parent. */
-  public void jjtSetParent(Node n);
-  public Node jjtGetParent();
-
-  /** This method tells the node to add its argument to the node's
-    list of children.  */
-  public void jjtAddChild(Node n, int i);
-
-  /** This method returns a child node.  The children are numbered
-     from zero, left to right. */
-  public Node jjtGetChild(int i);
-
-  /** Return the number of children the node has. */
-  public int jjtGetNumChildren();
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data);
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/ParseException.java b/src/org/apache/james/mime4j/field/address/parser/ParseException.java
deleted file mode 100644
index e20146f..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
deleted file mode 100644
index c9ba0b4..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java b/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java
deleted file mode 100644
index 9bf537e..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/SimpleNode.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Generated By:JJTree: Do not edit this line. SimpleNode.java */
-
-package org.apache.james.mime4j.field.address.parser;
-
-public class SimpleNode extends org.apache.james.mime4j.field.address.parser.BaseNode implements Node {
-  protected Node parent;
-  protected Node[] children;
-  protected int id;
-  protected AddressListParser parser;
-
-  public SimpleNode(int i) {
-    id = i;
-  }
-
-  public SimpleNode(AddressListParser p, int i) {
-    this(i);
-    parser = p;
-  }
-
-  public void jjtOpen() {
-  }
-
-  public void jjtClose() {
-  }
-  
-  public void jjtSetParent(Node n) { parent = n; }
-  public Node jjtGetParent() { return parent; }
-
-  public void jjtAddChild(Node n, int i) {
-    if (children == null) {
-      children = new Node[i + 1];
-    } else if (i >= children.length) {
-      Node c[] = new Node[i + 1];
-      System.arraycopy(children, 0, c, 0, children.length);
-      children = c;
-    }
-    children[i] = n;
-  }
-
-  public Node jjtGetChild(int i) {
-    return children[i];
-  }
-
-  public int jjtGetNumChildren() {
-    return (children == null) ? 0 : children.length;
-  }
-
-  /** Accept the visitor. **/
-  public Object jjtAccept(AddressListParserVisitor visitor, Object data) {
-    return visitor.visit(this, data);
-  }
-
-  /** Accept the visitor. **/
-  public Object childrenAccept(AddressListParserVisitor visitor, Object data) {
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-        children[i].jjtAccept(visitor, data);
-      }
-    }
-    return data;
-  }
-
-  /* You can override these two methods in subclasses of SimpleNode to
-     customize the way the node appears when the tree is dumped.  If
-     your output uses more than one line you should override
-     toString(String), otherwise overriding toString() is probably all
-     you need to do. */
-
-  public String toString() { return AddressListParserTreeConstants.jjtNodeName[id]; }
-  public String toString(String prefix) { return prefix + toString(); }
-
-  /* Override this method if you want to customize how the node dumps
-     out its children. */
-
-  public void dump(String prefix) {
-    System.out.println(toString(prefix));
-    if (children != null) {
-      for (int i = 0; i < children.length; ++i) {
-	SimpleNode n = (SimpleNode)children[i];
-	if (n != null) {
-	  n.dump(prefix + " ");
-	}
-      }
-    }
-  }
-}
-
diff --git a/src/org/apache/james/mime4j/field/address/parser/Token.java b/src/org/apache/james/mime4j/field/address/parser/Token.java
deleted file mode 100644
index 2382e8e..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
deleted file mode 100644
index 0299c85..0000000
--- a/src/org/apache/james/mime4j/field/address/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.address.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
deleted file mode 100644
index cacf3af..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParser.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParser.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-public class ContentTypeParser implements ContentTypeParserConstants {
-
-        private String type;
-        private String subtype;
-        private ArrayList<String> paramNames = new ArrayList<String>();
-        private ArrayList<String> paramValues = new ArrayList<String>();
-
-        public String getType() { return type; }
-        public String getSubType() { return subtype; }
-        public ArrayList<String> getParamNames() { return paramNames; }
-        public ArrayList<String> getParamValues() { return paramValues; }
-
-    public static void main(String args[]) throws ParseException {
-        while (true) {
-            try {
-                ContentTypeParser parser = new ContentTypeParser(System.in);
-                parser.parseLine();
-            } catch (Exception x) {
-                x.printStackTrace();
-                return;
-            }
-        }
-    }
-
-  final public void parseLine() throws ParseException {
-    parse();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-  }
-
-  final public void parseAll() throws ParseException {
-    parse();
-    jj_consume_token(0);
-  }
-
-  final public void parse() throws ParseException {
-        Token type;
-        Token subtype;
-    type = jj_consume_token(ATOKEN);
-    jj_consume_token(3);
-    subtype = jj_consume_token(ATOKEN);
-                this.type = type.image;
-                this.subtype = subtype.image;
-    label_1:
-    while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case 4:
-        ;
-        break;
-      default:
-        jj_la1[1] = jj_gen;
-        break label_1;
-      }
-      jj_consume_token(4);
-      parameter();
-    }
-  }
-
-  final public void parameter() throws ParseException {
-        Token attrib;
-        String val;
-    attrib = jj_consume_token(ATOKEN);
-    jj_consume_token(5);
-    val = value();
-                paramNames.add(attrib.image);
-                paramValues.add(val);
-  }
-
-  final public String value() throws ParseException {
- Token t;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ATOKEN:
-      t = jj_consume_token(ATOKEN);
-      break;
-    case QUOTEDSTRING:
-      t = jj_consume_token(QUOTEDSTRING);
-      break;
-    default:
-      jj_la1[2] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-          {if (true) return t.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  public ContentTypeParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[3];
-  static private int[] jj_la1_0;
-  static {
-      jj_la1_0();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x10,0x280000,};
-   }
-
-  public ContentTypeParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public ContentTypeParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new ContentTypeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public ContentTypeParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new ContentTypeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public ContentTypeParser(ContentTypeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(ContentTypeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 3; i++) jj_la1[i] = -1;
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private Vector<int[]> jj_expentries = new Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[24];
-    for (int i = 0; i < 24; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 3; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 24; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
deleted file mode 100644
index d933d80..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserConstants.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParserConstants.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-public interface ContentTypeParserConstants {
-
-  int EOF = 0;
-  int WS = 6;
-  int COMMENT = 8;
-  int QUOTEDSTRING = 19;
-  int DIGITS = 20;
-  int ATOKEN = 21;
-  int QUOTEDPAIR = 22;
-  int ANY = 23;
-
-  int DEFAULT = 0;
-  int INCOMMENT = 1;
-  int NESTED_COMMENT = 2;
-  int INQUOTEDSTRING = 3;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\"/\"",
-    "\";\"",
-    "\"=\"",
-    "<WS>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 9>",
-    "\"(\"",
-    "<token of kind 11>",
-    "<token of kind 12>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 15>",
-    "\"\\\"\"",
-    "<token of kind 17>",
-    "<token of kind 18>",
-    "\"\\\"\"",
-    "<DIGITS>",
-    "<ATOKEN>",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java b/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
deleted file mode 100644
index 25b7aba..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/ContentTypeParserTokenManager.java
+++ /dev/null
@@ -1,877 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ContentTypeParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-import java.util.ArrayList;
-
-public class ContentTypeParserTokenManager implements ContentTypeParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStartNfaWithStates_0(0, 2, 2);
-      case 13:
-         return jjStartNfaWithStates_0(0, 1, 2);
-      case 34:
-         return jjStopAtPos(0, 16);
-      case 40:
-         return jjStopAtPos(0, 7);
-      case 47:
-         return jjStopAtPos(0, 3);
-      case 59:
-         return jjStopAtPos(0, 4);
-      case 61:
-         return jjStopAtPos(0, 5);
-      default :
-         return jjMoveNfa_0(3, 0);
-   }
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-                  if ((0x3ff6cfafffffdffL & l) != 0L)
-                  {
-                     if (kind > 21)
-                        kind = 21;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 6)
-                        kind = 6;
-                     jjCheckNAdd(0);
-                  }
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 20)
-                        kind = 20;
-                     jjCheckNAdd(1);
-                  }
-                  break;
-               case 0:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 6;
-                  jjCheckNAdd(0);
-                  break;
-               case 1:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  if (kind > 20)
-                     kind = 20;
-                  jjCheckNAdd(1);
-                  break;
-               case 2:
-                  if ((0x3ff6cfafffffdffL & l) == 0L)
-                     break;
-                  if (kind > 21)
-                     kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-               case 2:
-                  if ((0xffffffffc7fffffeL & l) == 0L)
-                     break;
-                  kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 3:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 21)
-                     kind = 21;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 10);
-      case 41:
-         return jjStopAtPos(0, 8);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 11)
-                     kind = 11;
-                  break;
-               case 1:
-                  if (kind > 9)
-                     kind = 9;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 11)
-                     kind = 11;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 9)
-                     kind = 9;
-                  break;
-               case 2:
-                  if (kind > 11)
-                     kind = 11;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
-                     kind = 11;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
-                     kind = 9;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_3(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_3(int pos, long active0)
-{
-   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_3(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_3(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_3()
-{
-   switch(curChar)
-   {
-      case 34:
-         return jjStopAtPos(0, 19);
-      default :
-         return jjMoveNfa_3(0, 0);
-   }
-}
-private final int jjMoveNfa_3(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((0xfffffffbffffffffL & l) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                  {
-                     if (kind > 18)
-                        kind = 18;
-                     jjCheckNAdd(2);
-                  }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 17)
-                     kind = 17;
-                  break;
-               case 2:
-                  if ((0xffffffffefffffffL & l) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-               case 2:
-                  if ((jjbitVec0[i2] & l2) == 0L)
-                     break;
-                  if (kind > 18)
-                     kind = 18;
-                  jjCheckNAdd(2);
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 17)
-                     kind = 17;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 13);
-      case 41:
-         return jjStopAtPos(0, 14);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 15)
-                     kind = 15;
-                  break;
-               case 1:
-                  if (kind > 12)
-                     kind = 12;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 15)
-                     kind = 15;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 12)
-                     kind = 12;
-                  break;
-               case 2:
-                  if (kind > 15)
-                     kind = 15;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 15)
-                     kind = 15;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
-                     kind = 12;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\57", "\73", "\75", null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, null, null, null, null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-   "INQUOTEDSTRING", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, 3, -1, -1, 0, -1, -1, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x38003fL, 
-};
-static final long[] jjtoSkip = {
-   0x140L, 
-};
-static final long[] jjtoSpecial = {
-   0x40L, 
-};
-static final long[] jjtoMore = {
-   0x7fe80L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[3];
-private final int[] jjstateSet = new int[6];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public ContentTypeParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public ContentTypeParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 3; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 4 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-       case 3:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_3();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-           TokenLexicalActions(matchedToken);
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 9 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 10 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 12 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 13 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 14 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      case 16 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-               image.deleteCharAt(image.length() - 1);
-         break;
-      case 17 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      default : 
-         break;
-   }
-}
-void TokenLexicalActions(Token matchedToken)
-{
-   switch(jjmatchedKind)
-   {
-      case 19 :
-        if (image == null)
-            image = new StringBuffer();
-            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
-                                 matchedToken.image = image.substring(0, image.length() - 1);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java b/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
deleted file mode 100644
index d9b69b2..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
deleted file mode 100644
index ae035b7..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/Token.java b/src/org/apache/james/mime4j/field/contenttype/parser/Token.java
deleted file mode 100644
index 34e65ee..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
deleted file mode 100644
index ea5a782..0000000
--- a/src/org/apache/james/mime4j/field/contenttype/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.contenttype.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/DateTime.java b/src/org/apache/james/mime4j/field/datetime/DateTime.java
deleted file mode 100644
index 506ff54..0000000
--- a/src/org/apache/james/mime4j/field/datetime/DateTime.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.field.datetime;
-
-import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
-import org.apache.james.mime4j.field.datetime.parser.ParseException;
-import org.apache.james.mime4j.field.datetime.parser.TokenMgrError;
-
-import java.util.Date;
-import java.util.Calendar;
-import java.util.TimeZone;
-import java.util.GregorianCalendar;
-import java.io.StringReader;
-
-public class DateTime {
-    private final Date date;
-    private final int year;
-    private final int month;
-    private final int day;
-    private final int hour;
-    private final int minute;
-    private final int second;
-    private final int timeZone;
-
-    public DateTime(String yearString, int month, int day, int hour, int minute, int second, int timeZone) {
-        this.year = convertToYear(yearString);
-        this.date = convertToDate(year, month, day, hour, minute, second, timeZone);
-        this.month = month;
-        this.day = day;
-        this.hour = hour;
-        this.minute = minute;
-        this.second = second;
-        this.timeZone = timeZone;
-    }
-
-    private int convertToYear(String yearString) {
-        int year = Integer.parseInt(yearString);
-        switch (yearString.length()) {
-            case 1:
-            case 2:
-                if (year >= 0 && year < 50)
-                    return 2000 + year;
-                else
-                    return 1900 + year;
-            case 3:
-                return 1900 + year;
-            default:
-                return year;
-        }
-    }
-
-    public static Date convertToDate(int year, int month, int day, int hour, int minute, int second, int timeZone) {
-        Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
-        c.set(year, month - 1, day, hour, minute, second);
-        c.set(Calendar.MILLISECOND, 0);
-
-        if (timeZone != Integer.MIN_VALUE) {
-            int minutes = ((timeZone / 100) * 60) + timeZone % 100;
-            c.add(Calendar.MINUTE, -1 * minutes);
-        }
-
-        return c.getTime();
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public int getYear() {
-        return year;
-    }
-
-    public int getMonth() {
-        return month;
-    }
-
-    public int getDay() {
-        return day;
-    }
-
-    public int getHour() {
-        return hour;
-    }
-
-    public int getMinute() {
-        return minute;
-    }
-
-    public int getSecond() {
-        return second;
-    }
-
-    public int getTimeZone() {
-        return timeZone;
-    }
-
-    public void print() {
-        System.out.println(getYear() + " " + getMonth() + " " + getDay() + "; " + getHour() + " " + getMinute() + " " + getSecond() + " " + getTimeZone());
-    }
-
-
-    public static DateTime parse(String dateString) throws ParseException {
-        try {
-            return new DateTimeParser(new StringReader(dateString)).parseAll();
-        }
-        catch (TokenMgrError err) {
-            throw new ParseException(err.getMessage());
-        }
-    }
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
deleted file mode 100644
index 43edebb..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParser.java
+++ /dev/null
@@ -1,570 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParser.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-import org.apache.james.mime4j.field.datetime.DateTime;
-
-import java.util.Vector;
-
-public class DateTimeParser implements DateTimeParserConstants {
-    private static final boolean ignoreMilitaryZoneOffset = true;
-
-    public static void main(String args[]) throws ParseException {
-                while (true) {
-                    try {
-                                DateTimeParser parser = new DateTimeParser(System.in);
-                        parser.parseLine();
-                    } catch (Exception x) {
-                                x.printStackTrace();
-                                return;
-                    }
-                }
-    }
-
-    private static int parseDigits(Token token) {
-        return Integer.parseInt(token.image, 10);
-    }
-
-    private static int getMilitaryZoneOffset(char c) {
-        if (ignoreMilitaryZoneOffset)
-            return 0;
-
-        c = Character.toUpperCase(c);
-
-        switch (c) {
-            case 'A': return 1;
-            case 'B': return 2;
-            case 'C': return 3;
-            case 'D': return 4;
-            case 'E': return 5;
-            case 'F': return 6;
-            case 'G': return 7;
-            case 'H': return 8;
-            case 'I': return 9;
-            case 'K': return 10;
-            case 'L': return 11;
-            case 'M': return 12;
-
-            case 'N': return -1;
-            case 'O': return -2;
-            case 'P': return -3;
-            case 'Q': return -4;
-            case 'R': return -5;
-            case 'S': return -6;
-            case 'T': return -7;
-            case 'U': return -8;
-            case 'V': return -9;
-            case 'W': return -10;
-            case 'X': return -11;
-            case 'Y': return -12;
-
-            case 'Z': return 0;
-            default: return 0;
-        }
-    }
-
-    private static class Time {
-        private int hour;
-        private int minute;
-        private int second;
-        private int zone;
-
-        public Time(int hour, int minute, int second, int zone) {
-            this.hour = hour;
-            this.minute = minute;
-            this.second = second;
-            this.zone = zone;
-        }
-
-        public int getHour() { return hour; }
-        public int getMinute() { return minute; }
-        public int getSecond() { return second; }
-        public int getZone() { return zone; }
-    }
-
-    private static class Date {
-        private String year;
-        private int month;
-        private int day;
-
-        public Date(String year, int month, int day) {
-            this.year = year;
-            this.month = month;
-            this.day = day;
-        }
-
-        public String getYear() { return year; }
-        public int getMonth() { return month; }
-        public int getDay() { return day; }
-    }
-
-  final public DateTime parseLine() throws ParseException {
- DateTime dt;
-    dt = date_time();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 1:
-      jj_consume_token(1);
-      break;
-    default:
-      jj_la1[0] = jj_gen;
-      ;
-    }
-    jj_consume_token(2);
-          {if (true) return dt;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public DateTime parseAll() throws ParseException {
- DateTime dt;
-    dt = date_time();
-    jj_consume_token(0);
-          {if (true) return dt;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public DateTime date_time() throws ParseException {
- Date d; Time t;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 4:
-    case 5:
-    case 6:
-    case 7:
-    case 8:
-    case 9:
-    case 10:
-      day_of_week();
-      jj_consume_token(3);
-      break;
-    default:
-      jj_la1[1] = jj_gen;
-      ;
-    }
-    d = date();
-    t = time();
-            {if (true) return new DateTime(
-                    d.getYear(),
-                    d.getMonth(),
-                    d.getDay(),
-                    t.getHour(),
-                    t.getMinute(),
-                    t.getSecond(),
-                    t.getZone());}    // time zone offset
-
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String day_of_week() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 4:
-      jj_consume_token(4);
-      break;
-    case 5:
-      jj_consume_token(5);
-      break;
-    case 6:
-      jj_consume_token(6);
-      break;
-    case 7:
-      jj_consume_token(7);
-      break;
-    case 8:
-      jj_consume_token(8);
-      break;
-    case 9:
-      jj_consume_token(9);
-      break;
-    case 10:
-      jj_consume_token(10);
-      break;
-    default:
-      jj_la1[2] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return token.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public Date date() throws ParseException {
- int d, m; String y;
-    d = day();
-    m = month();
-    y = year();
-      {if (true) return new Date(y, m, d);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int day() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int month() throws ParseException {
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 11:
-      jj_consume_token(11);
-            {if (true) return 1;}
-      break;
-    case 12:
-      jj_consume_token(12);
-            {if (true) return 2;}
-      break;
-    case 13:
-      jj_consume_token(13);
-            {if (true) return 3;}
-      break;
-    case 14:
-      jj_consume_token(14);
-            {if (true) return 4;}
-      break;
-    case 15:
-      jj_consume_token(15);
-            {if (true) return 5;}
-      break;
-    case 16:
-      jj_consume_token(16);
-            {if (true) return 6;}
-      break;
-    case 17:
-      jj_consume_token(17);
-            {if (true) return 7;}
-      break;
-    case 18:
-      jj_consume_token(18);
-            {if (true) return 8;}
-      break;
-    case 19:
-      jj_consume_token(19);
-            {if (true) return 9;}
-      break;
-    case 20:
-      jj_consume_token(20);
-            {if (true) return 10;}
-      break;
-    case 21:
-      jj_consume_token(21);
-            {if (true) return 11;}
-      break;
-    case 22:
-      jj_consume_token(22);
-            {if (true) return 12;}
-      break;
-    default:
-      jj_la1[3] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-    throw new Error("Missing return statement in function");
-  }
-
-  final public String year() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return t.image;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public Time time() throws ParseException {
- int h, m, s=0, z;
-    h = hour();
-    jj_consume_token(23);
-    m = minute();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 23:
-      jj_consume_token(23);
-      s = second();
-      break;
-    default:
-      jj_la1[4] = jj_gen;
-      ;
-    }
-    z = zone();
-      {if (true) return new Time(h, m, s, z);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int hour() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int minute() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int second() throws ParseException {
- Token t;
-    t = jj_consume_token(DIGITS);
-                 {if (true) return parseDigits(t);}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int zone() throws ParseException {
-  Token t, u; int z;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case OFFSETDIR:
-      t = jj_consume_token(OFFSETDIR);
-      u = jj_consume_token(DIGITS);
-                                              z=parseDigits(u)*(t.image.equals("-") ? -1 : 1);
-      break;
-    case 25:
-    case 26:
-    case 27:
-    case 28:
-    case 29:
-    case 30:
-    case 31:
-    case 32:
-    case 33:
-    case 34:
-    case MILITARY_ZONE:
-      z = obs_zone();
-      break;
-    default:
-      jj_la1[5] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return z;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int obs_zone() throws ParseException {
- Token t; int z;
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case 25:
-      jj_consume_token(25);
-            z=0;
-      break;
-    case 26:
-      jj_consume_token(26);
-            z=0;
-      break;
-    case 27:
-      jj_consume_token(27);
-            z=-5;
-      break;
-    case 28:
-      jj_consume_token(28);
-            z=-4;
-      break;
-    case 29:
-      jj_consume_token(29);
-            z=-6;
-      break;
-    case 30:
-      jj_consume_token(30);
-            z=-5;
-      break;
-    case 31:
-      jj_consume_token(31);
-            z=-7;
-      break;
-    case 32:
-      jj_consume_token(32);
-            z=-6;
-      break;
-    case 33:
-      jj_consume_token(33);
-            z=-8;
-      break;
-    case 34:
-      jj_consume_token(34);
-            z=-7;
-      break;
-    case MILITARY_ZONE:
-      t = jj_consume_token(MILITARY_ZONE);
-                                                             z=getMilitaryZoneOffset(t.image.charAt(0));
-      break;
-    default:
-      jj_la1[6] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
-    }
-      {if (true) return z * 100;}
-    throw new Error("Missing return statement in function");
-  }
-
-  public DateTimeParserTokenManager token_source;
-  SimpleCharStream jj_input_stream;
-  public Token token, jj_nt;
-  private int jj_ntk;
-  private int jj_gen;
-  final private int[] jj_la1 = new int[7];
-  static private int[] jj_la1_0;
-  static private int[] jj_la1_1;
-  static {
-      jj_la1_0();
-      jj_la1_1();
-   }
-   private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x2,0x7f0,0x7f0,0x7ff800,0x800000,0xff000000,0xfe000000,};
-   }
-   private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0xf,0xf,};
-   }
-
-  public DateTimeParser(java.io.InputStream stream) {
-     this(stream, null);
-  }
-  public DateTimeParser(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source = new DateTimeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.InputStream stream) {
-     ReInit(stream, null);
-  }
-  public void ReInit(java.io.InputStream stream, String encoding) {
-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public DateTimeParser(java.io.Reader stream) {
-    jj_input_stream = new SimpleCharStream(stream, 1, 1);
-    token_source = new DateTimeParserTokenManager(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(java.io.Reader stream) {
-    jj_input_stream.ReInit(stream, 1, 1);
-    token_source.ReInit(jj_input_stream);
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public DateTimeParser(DateTimeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  public void ReInit(DateTimeParserTokenManager tm) {
-    token_source = tm;
-    token = new Token();
-    jj_ntk = -1;
-    jj_gen = 0;
-    for (int i = 0; i < 7; i++) jj_la1[i] = -1;
-  }
-
-  final private Token jj_consume_token(int kind) throws ParseException {
-    Token oldToken;
-    if ((oldToken = token).next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    if (token.kind == kind) {
-      jj_gen++;
-      return token;
-    }
-    token = oldToken;
-    jj_kind = kind;
-    throw generateParseException();
-  }
-
-  final public Token getNextToken() {
-    if (token.next != null) token = token.next;
-    else token = token.next = token_source.getNextToken();
-    jj_ntk = -1;
-    jj_gen++;
-    return token;
-  }
-
-  final public Token getToken(int index) {
-    Token t = token;
-    for (int i = 0; i < index; i++) {
-      if (t.next != null) t = t.next;
-      else t = t.next = token_source.getNextToken();
-    }
-    return t;
-  }
-
-  final private int jj_ntk() {
-    if ((jj_nt=token.next) == null)
-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
-    else
-      return (jj_ntk = jj_nt.kind);
-  }
-
-  private Vector<int[]> jj_expentries = new Vector<int[]>();
-  private int[] jj_expentry;
-  private int jj_kind = -1;
-
-  public ParseException generateParseException() {
-    jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[49];
-    for (int i = 0; i < 49; i++) {
-      la1tokens[i] = false;
-    }
-    if (jj_kind >= 0) {
-      la1tokens[jj_kind] = true;
-      jj_kind = -1;
-    }
-    for (int i = 0; i < 7; i++) {
-      if (jj_la1[i] == jj_gen) {
-        for (int j = 0; j < 32; j++) {
-          if ((jj_la1_0[i] & (1<<j)) != 0) {
-            la1tokens[j] = true;
-          }
-          if ((jj_la1_1[i] & (1<<j)) != 0) {
-            la1tokens[32+j] = true;
-          }
-        }
-      }
-    }
-    for (int i = 0; i < 49; i++) {
-      if (la1tokens[i]) {
-        jj_expentry = new int[1];
-        jj_expentry[0] = i;
-        jj_expentries.addElement(jj_expentry);
-      }
-    }
-    int[][] exptokseq = new int[jj_expentries.size()][];
-    for (int i = 0; i < jj_expentries.size(); i++) {
-      exptokseq[i] = jj_expentries.elementAt(i);
-    }
-    return new ParseException(token, exptokseq, tokenImage);
-  }
-
-  final public void enable_tracing() {
-  }
-
-  final public void disable_tracing() {
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
deleted file mode 100644
index 2c203db..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserConstants.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParserConstants.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-public interface DateTimeParserConstants {
-
-  int EOF = 0;
-  int OFFSETDIR = 24;
-  int MILITARY_ZONE = 35;
-  int WS = 36;
-  int COMMENT = 38;
-  int DIGITS = 46;
-  int QUOTEDPAIR = 47;
-  int ANY = 48;
-
-  int DEFAULT = 0;
-  int INCOMMENT = 1;
-  int NESTED_COMMENT = 2;
-
-  String[] tokenImage = {
-    "<EOF>",
-    "\"\\r\"",
-    "\"\\n\"",
-    "\",\"",
-    "\"Mon\"",
-    "\"Tue\"",
-    "\"Wed\"",
-    "\"Thu\"",
-    "\"Fri\"",
-    "\"Sat\"",
-    "\"Sun\"",
-    "\"Jan\"",
-    "\"Feb\"",
-    "\"Mar\"",
-    "\"Apr\"",
-    "\"May\"",
-    "\"Jun\"",
-    "\"Jul\"",
-    "\"Aug\"",
-    "\"Sep\"",
-    "\"Oct\"",
-    "\"Nov\"",
-    "\"Dec\"",
-    "\":\"",
-    "<OFFSETDIR>",
-    "\"UT\"",
-    "\"GMT\"",
-    "\"EST\"",
-    "\"EDT\"",
-    "\"CST\"",
-    "\"CDT\"",
-    "\"MST\"",
-    "\"MDT\"",
-    "\"PST\"",
-    "\"PDT\"",
-    "<MILITARY_ZONE>",
-    "<WS>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 39>",
-    "\"(\"",
-    "<token of kind 41>",
-    "<token of kind 42>",
-    "\"(\"",
-    "\")\"",
-    "<token of kind 45>",
-    "<DIGITS>",
-    "<QUOTEDPAIR>",
-    "<ANY>",
-  };
-
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java b/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
deleted file mode 100644
index 4b2d2fd..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/DateTimeParserTokenManager.java
+++ /dev/null
@@ -1,882 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DateTimeParserTokenManager.java */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-import org.apache.james.mime4j.field.datetime.DateTime;
-import java.util.Calendar;
-
-public class DateTimeParserTokenManager implements DateTimeParserConstants
-{
-        // Keeps track of how many levels of comment nesting
-        // we've encountered.  This is only used when the 2nd
-        // level is reached, for example ((this)), not (this).
-        // This is because the outermost level must be treated
-        // specially anyway, because the outermost ")" has a
-        // different token type than inner ")" instances.
-        static int commentNest;
-  public  java.io.PrintStream debugStream = System.out;
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      case 0:
-         if ((active0 & 0x7fe7cf7f0L) != 0L)
-         {
-            jjmatchedKind = 35;
-            return -1;
-         }
-         return -1;
-      case 1:
-         if ((active0 & 0x7fe7cf7f0L) != 0L)
-         {
-            if (jjmatchedPos == 0)
-            {
-               jjmatchedKind = 35;
-               jjmatchedPos = 0;
-            }
-            return -1;
-         }
-         return -1;
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
-private final int jjStopAtPos(int pos, int kind)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   return pos + 1;
-}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
-   switch(curChar)
-   {
-      case 10:
-         return jjStopAtPos(0, 2);
-      case 13:
-         return jjStopAtPos(0, 1);
-      case 40:
-         return jjStopAtPos(0, 37);
-      case 44:
-         return jjStopAtPos(0, 3);
-      case 58:
-         return jjStopAtPos(0, 23);
-      case 65:
-         return jjMoveStringLiteralDfa1_0(0x44000L);
-      case 67:
-         return jjMoveStringLiteralDfa1_0(0x60000000L);
-      case 68:
-         return jjMoveStringLiteralDfa1_0(0x400000L);
-      case 69:
-         return jjMoveStringLiteralDfa1_0(0x18000000L);
-      case 70:
-         return jjMoveStringLiteralDfa1_0(0x1100L);
-      case 71:
-         return jjMoveStringLiteralDfa1_0(0x4000000L);
-      case 74:
-         return jjMoveStringLiteralDfa1_0(0x30800L);
-      case 77:
-         return jjMoveStringLiteralDfa1_0(0x18000a010L);
-      case 78:
-         return jjMoveStringLiteralDfa1_0(0x200000L);
-      case 79:
-         return jjMoveStringLiteralDfa1_0(0x100000L);
-      case 80:
-         return jjMoveStringLiteralDfa1_0(0x600000000L);
-      case 83:
-         return jjMoveStringLiteralDfa1_0(0x80600L);
-      case 84:
-         return jjMoveStringLiteralDfa1_0(0xa0L);
-      case 85:
-         return jjMoveStringLiteralDfa1_0(0x2000000L);
-      case 87:
-         return jjMoveStringLiteralDfa1_0(0x40L);
-      default :
-         return jjMoveNfa_0(0, 0);
-   }
-}
-private final int jjMoveStringLiteralDfa1_0(long active0)
-{
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(0, active0);
-      return 1;
-   }
-   switch(curChar)
-   {
-      case 68:
-         return jjMoveStringLiteralDfa2_0(active0, 0x550000000L);
-      case 77:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);
-      case 83:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2a8000000L);
-      case 84:
-         if ((active0 & 0x2000000L) != 0L)
-            return jjStopAtPos(1, 25);
-         break;
-      case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0xaa00L);
-      case 99:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
-      case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x481040L);
-      case 104:
-         return jjMoveStringLiteralDfa2_0(active0, 0x80L);
-      case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0x200010L);
-      case 112:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
-      case 114:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100L);
-      case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0x70420L);
-      default :
-         break;
-   }
-   return jjStartNfa_0(0, active0);
-}
-private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
-{
-   if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(0, old0); 
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(1, active0);
-      return 2;
-   }
-   switch(curChar)
-   {
-      case 84:
-         if ((active0 & 0x4000000L) != 0L)
-            return jjStopAtPos(2, 26);
-         else if ((active0 & 0x8000000L) != 0L)
-            return jjStopAtPos(2, 27);
-         else if ((active0 & 0x10000000L) != 0L)
-            return jjStopAtPos(2, 28);
-         else if ((active0 & 0x20000000L) != 0L)
-            return jjStopAtPos(2, 29);
-         else if ((active0 & 0x40000000L) != 0L)
-            return jjStopAtPos(2, 30);
-         else if ((active0 & 0x80000000L) != 0L)
-            return jjStopAtPos(2, 31);
-         else if ((active0 & 0x100000000L) != 0L)
-            return jjStopAtPos(2, 32);
-         else if ((active0 & 0x200000000L) != 0L)
-            return jjStopAtPos(2, 33);
-         else if ((active0 & 0x400000000L) != 0L)
-            return jjStopAtPos(2, 34);
-         break;
-      case 98:
-         if ((active0 & 0x1000L) != 0L)
-            return jjStopAtPos(2, 12);
-         break;
-      case 99:
-         if ((active0 & 0x400000L) != 0L)
-            return jjStopAtPos(2, 22);
-         break;
-      case 100:
-         if ((active0 & 0x40L) != 0L)
-            return jjStopAtPos(2, 6);
-         break;
-      case 101:
-         if ((active0 & 0x20L) != 0L)
-            return jjStopAtPos(2, 5);
-         break;
-      case 103:
-         if ((active0 & 0x40000L) != 0L)
-            return jjStopAtPos(2, 18);
-         break;
-      case 105:
-         if ((active0 & 0x100L) != 0L)
-            return jjStopAtPos(2, 8);
-         break;
-      case 108:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStopAtPos(2, 17);
-         break;
-      case 110:
-         if ((active0 & 0x10L) != 0L)
-            return jjStopAtPos(2, 4);
-         else if ((active0 & 0x400L) != 0L)
-            return jjStopAtPos(2, 10);
-         else if ((active0 & 0x800L) != 0L)
-            return jjStopAtPos(2, 11);
-         else if ((active0 & 0x10000L) != 0L)
-            return jjStopAtPos(2, 16);
-         break;
-      case 112:
-         if ((active0 & 0x80000L) != 0L)
-            return jjStopAtPos(2, 19);
-         break;
-      case 114:
-         if ((active0 & 0x2000L) != 0L)
-            return jjStopAtPos(2, 13);
-         else if ((active0 & 0x4000L) != 0L)
-            return jjStopAtPos(2, 14);
-         break;
-      case 116:
-         if ((active0 & 0x200L) != 0L)
-            return jjStopAtPos(2, 9);
-         else if ((active0 & 0x100000L) != 0L)
-            return jjStopAtPos(2, 20);
-         break;
-      case 117:
-         if ((active0 & 0x80L) != 0L)
-            return jjStopAtPos(2, 7);
-         break;
-      case 118:
-         if ((active0 & 0x200000L) != 0L)
-            return jjStopAtPos(2, 21);
-         break;
-      case 121:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(2, 15);
-         break;
-      default :
-         break;
-   }
-   return jjStartNfa_0(1, active0);
-}
-private final void jjCheckNAdd(int state)
-{
-   if (jjrounds[state] != jjround)
-   {
-      jjstateSet[jjnewStateCnt++] = state;
-      jjrounds[state] = jjround;
-   }
-}
-private final void jjAddStates(int start, int end)
-{
-   do {
-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-   } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
-   jjCheckNAdd(state1);
-   jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
-   do {
-      jjCheckNAdd(jjnextStates[start]);
-   } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
-   jjCheckNAdd(jjnextStates[start]);
-   jjCheckNAdd(jjnextStates[start + 1]);
-}
-private final int jjMoveNfa_0(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 4;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 46)
-                        kind = 46;
-                     jjCheckNAdd(3);
-                  }
-                  else if ((0x100000200L & l) != 0L)
-                  {
-                     if (kind > 36)
-                        kind = 36;
-                     jjCheckNAdd(2);
-                  }
-                  else if ((0x280000000000L & l) != 0L)
-                  {
-                     if (kind > 24)
-                        kind = 24;
-                  }
-                  break;
-               case 2:
-                  if ((0x100000200L & l) == 0L)
-                     break;
-                  kind = 36;
-                  jjCheckNAdd(2);
-                  break;
-               case 3:
-                  if ((0x3ff000000000000L & l) == 0L)
-                     break;
-                  kind = 46;
-                  jjCheckNAdd(3);
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((0x7fffbfe07fffbfeL & l) != 0L)
-                     kind = 35;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_1(int pos, long active0)
-{
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 40);
-      case 41:
-         return jjStopAtPos(0, 38);
-      default :
-         return jjMoveNfa_1(0, 0);
-   }
-}
-static final long[] jjbitVec0 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};
-private final int jjMoveNfa_1(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 41)
-                     kind = 41;
-                  break;
-               case 1:
-                  if (kind > 39)
-                     kind = 39;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 41)
-                     kind = 41;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 39)
-                     kind = 39;
-                  break;
-               case 2:
-                  if (kind > 41)
-                     kind = 41;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 41)
-                     kind = 41;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 39)
-                     kind = 39;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
-{
-   switch (pos)
-   {
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_2(int pos, long active0)
-{
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
-}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_2(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_2()
-{
-   switch(curChar)
-   {
-      case 40:
-         return jjStopAtPos(0, 43);
-      case 41:
-         return jjStopAtPos(0, 44);
-      default :
-         return jjMoveNfa_2(0, 0);
-   }
-}
-private final int jjMoveNfa_2(int startState, int curPos)
-{
-   int[] nextStates;
-   int startsAt = 0;
-   jjnewStateCnt = 3;
-   int i = 1;
-   jjstateSet[0] = startState;
-   int j, kind = 0x7fffffff;
-   for (;;)
-   {
-      if (++jjround == 0x7fffffff)
-         ReInitRounds();
-      if (curChar < 64)
-      {
-         long l = 1L << curChar;
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 45)
-                     kind = 45;
-                  break;
-               case 1:
-                  if (kind > 42)
-                     kind = 42;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else if (curChar < 128)
-      {
-         long l = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if (kind > 45)
-                     kind = 45;
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
-               case 1:
-                  if (kind > 42)
-                     kind = 42;
-                  break;
-               case 2:
-                  if (kind > 45)
-                     kind = 45;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      else
-      {
-         int i2 = (curChar & 0xff) >> 6;
-         long l2 = 1L << (curChar & 077);
-         MatchLoop: do
-         {
-            switch(jjstateSet[--i])
-            {
-               case 0:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 45)
-                     kind = 45;
-                  break;
-               case 1:
-                  if ((jjbitVec0[i2] & l2) != 0L && kind > 42)
-                     kind = 42;
-                  break;
-               default : break;
-            }
-         } while(i != startsAt);
-      }
-      if (kind != 0x7fffffff)
-      {
-         jjmatchedKind = kind;
-         jjmatchedPos = curPos;
-         kind = 0x7fffffff;
-      }
-      ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
-         return curPos;
-      try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
-   }
-}
-static final int[] jjnextStates = {
-};
-public static final String[] jjstrLiteralImages = {
-"", "\15", "\12", "\54", "\115\157\156", "\124\165\145", "\127\145\144", 
-"\124\150\165", "\106\162\151", "\123\141\164", "\123\165\156", "\112\141\156", 
-"\106\145\142", "\115\141\162", "\101\160\162", "\115\141\171", "\112\165\156", 
-"\112\165\154", "\101\165\147", "\123\145\160", "\117\143\164", "\116\157\166", 
-"\104\145\143", "\72", null, "\125\124", "\107\115\124", "\105\123\124", "\105\104\124", 
-"\103\123\124", "\103\104\124", "\115\123\124", "\115\104\124", "\120\123\124", 
-"\120\104\124", null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, };
-public static final String[] lexStateNames = {
-   "DEFAULT", 
-   "INCOMMENT", 
-   "NESTED_COMMENT", 
-};
-public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, 
-};
-static final long[] jjtoToken = {
-   0x400fffffffffL, 
-};
-static final long[] jjtoSkip = {
-   0x5000000000L, 
-};
-static final long[] jjtoSpecial = {
-   0x1000000000L, 
-};
-static final long[] jjtoMore = {
-   0x3fa000000000L, 
-};
-protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[4];
-private final int[] jjstateSet = new int[8];
-StringBuffer image;
-int jjimageLen;
-int lengthOfMatch;
-protected char curChar;
-public DateTimeParserTokenManager(SimpleCharStream stream){
-   if (SimpleCharStream.staticFlag)
-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
-   input_stream = stream;
-}
-public DateTimeParserTokenManager(SimpleCharStream stream, int lexState){
-   this(stream);
-   SwitchTo(lexState);
-}
-public void ReInit(SimpleCharStream stream)
-{
-   jjmatchedPos = jjnewStateCnt = 0;
-   curLexState = defaultLexState;
-   input_stream = stream;
-   ReInitRounds();
-}
-private final void ReInitRounds()
-{
-   int i;
-   jjround = 0x80000001;
-   for (i = 4; i-- > 0;)
-      jjrounds[i] = 0x80000000;
-}
-public void ReInit(SimpleCharStream stream, int lexState)
-{
-   ReInit(stream);
-   SwitchTo(lexState);
-}
-public void SwitchTo(int lexState)
-{
-   if (lexState >= 3 || lexState < 0)
-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-   else
-      curLexState = lexState;
-}
-
-protected Token jjFillToken()
-{
-   Token t = Token.newToken(jjmatchedKind);
-   t.kind = jjmatchedKind;
-   String im = jjstrLiteralImages[jjmatchedKind];
-   t.image = (im == null) ? input_stream.GetImage() : im;
-   t.beginLine = input_stream.getBeginLine();
-   t.beginColumn = input_stream.getBeginColumn();
-   t.endLine = input_stream.getEndLine();
-   t.endColumn = input_stream.getEndColumn();
-   return t;
-}
-
-int curLexState = 0;
-int defaultLexState = 0;
-int jjnewStateCnt;
-int jjround;
-int jjmatchedPos;
-int jjmatchedKind;
-
-public Token getNextToken() 
-{
-  int kind;
-  Token specialToken = null;
-  Token matchedToken;
-  int curPos = 0;
-
-  EOFLoop :
-  for (;;)
-  {   
-   try   
-   {     
-      curChar = input_stream.BeginToken();
-   }     
-   catch(java.io.IOException e)
-   {        
-      jjmatchedKind = 0;
-      matchedToken = jjFillToken();
-      matchedToken.specialToken = specialToken;
-      return matchedToken;
-   }
-   image = null;
-   jjimageLen = 0;
-
-   for (;;)
-   {
-     switch(curLexState)
-     {
-       case 0:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_0();
-         break;
-       case 1:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_1();
-         break;
-       case 2:
-         jjmatchedKind = 0x7fffffff;
-         jjmatchedPos = 0;
-         curPos = jjMoveStringLiteralDfa0_2();
-         break;
-     }
-     if (jjmatchedKind != 0x7fffffff)
-     {
-        if (jjmatchedPos + 1 < curPos)
-           input_stream.backup(curPos - jjmatchedPos - 1);
-        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           matchedToken = jjFillToken();
-           matchedToken.specialToken = specialToken;
-       if (jjnewLexState[jjmatchedKind] != -1)
-         curLexState = jjnewLexState[jjmatchedKind];
-           return matchedToken;
-        }
-        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-        {
-           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
-           {
-              matchedToken = jjFillToken();
-              if (specialToken == null)
-                 specialToken = matchedToken;
-              else
-              {
-                 matchedToken.specialToken = specialToken;
-                 specialToken = (specialToken.next = matchedToken);
-              }
-           }
-         if (jjnewLexState[jjmatchedKind] != -1)
-           curLexState = jjnewLexState[jjmatchedKind];
-           continue EOFLoop;
-        }
-        MoreLexicalActions();
-      if (jjnewLexState[jjmatchedKind] != -1)
-        curLexState = jjnewLexState[jjmatchedKind];
-        curPos = 0;
-        jjmatchedKind = 0x7fffffff;
-        try {
-           curChar = input_stream.readChar();
-           continue;
-        }
-        catch (java.io.IOException e1) { }
-     }
-     int error_line = input_stream.getEndLine();
-     int error_column = input_stream.getEndColumn();
-     String error_after = null;
-     boolean EOFSeen = false;
-     try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
-        EOFSeen = true;
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-        if (curChar == '\n' || curChar == '\r') {
-           error_line++;
-           error_column = 0;
-        }
-        else
-           error_column++;
-     }
-     if (!EOFSeen) {
-        input_stream.backup(1);
-        error_after = curPos <= 1 ? "" : input_stream.GetImage();
-     }
-     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
-   }
-  }
-}
-
-void MoreLexicalActions()
-{
-   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
-   switch(jjmatchedKind)
-   {
-      case 39 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 40 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              commentNest = 1;
-         break;
-      case 42 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-                          image.deleteCharAt(image.length() - 2);
-         break;
-      case 43 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              ++commentNest;
-         break;
-      case 44 :
-         if (image == null)
-            image = new StringBuffer();
-         image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
-              --commentNest; if (commentNest == 0) SwitchTo(INCOMMENT);
-         break;
-      default : 
-         break;
-   }
-}
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java b/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java
deleted file mode 100644
index 13b3ff0..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/ParseException.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * This exception is thrown when parse errors are encountered.
- * You can explicitly create objects of this exception type by
- * calling the method generateParseException in the generated
- * parser.
- *
- * You can modify this class to customize your error reporting
- * mechanisms so long as you retain the public fields.
- */
-public class ParseException extends Exception {
-
-  /**
-   * This constructor is used by the method "generateParseException"
-   * in the generated parser.  Calling this constructor generates
-   * a new object of this type with the fields "currentToken",
-   * "expectedTokenSequences", and "tokenImage" set.  The boolean
-   * flag "specialConstructor" is also set to true to indicate that
-   * this constructor was used to create this object.
-   * This constructor calls its super class with the empty string
-   * to force the "toString" method of parent class "Throwable" to
-   * print the error message in the form:
-   *     ParseException: <result of getMessage>
-   */
-  public ParseException(Token currentTokenVal,
-                        int[][] expectedTokenSequencesVal,
-                        String[] tokenImageVal
-                       )
-  {
-    super("");
-    specialConstructor = true;
-    currentToken = currentTokenVal;
-    expectedTokenSequences = expectedTokenSequencesVal;
-    tokenImage = tokenImageVal;
-  }
-
-  /**
-   * The following constructors are for use by you for whatever
-   * purpose you can think of.  Constructing the exception in this
-   * manner makes the exception behave in the normal way - i.e., as
-   * documented in the class "Throwable".  The fields "errorToken",
-   * "expectedTokenSequences", and "tokenImage" do not contain
-   * relevant information.  The JavaCC generated code does not use
-   * these constructors.
-   */
-
-  public ParseException() {
-    super();
-    specialConstructor = false;
-  }
-
-  public ParseException(String message) {
-    super(message);
-    specialConstructor = false;
-  }
-
-  /**
-   * This variable determines which constructor was used to create
-   * this object and thereby affects the semantics of the
-   * "getMessage" method (see below).
-   */
-  protected boolean specialConstructor;
-
-  /**
-   * This is the last token that has been consumed successfully.  If
-   * this object has been created due to a parse error, the token
-   * followng this token will (therefore) be the first error token.
-   */
-  public Token currentToken;
-
-  /**
-   * Each entry in this array is an array of integers.  Each array
-   * of integers represents a sequence of tokens (by their ordinal
-   * values) that is expected at this point of the parse.
-   */
-  public int[][] expectedTokenSequences;
-
-  /**
-   * This is a reference to the "tokenImage" array of the generated
-   * parser within which the parse error occurred.  This array is
-   * defined in the generated ...Constants interface.
-   */
-  public String[] tokenImage;
-
-  /**
-   * This method has the standard behavior when this object has been
-   * created using the standard constructors.  Otherwise, it uses
-   * "currentToken" and "expectedTokenSequences" to generate a parse
-   * error message and returns it.  If this object has been created
-   * due to a parse error, and you do not catch it (it gets thrown
-   * from the parser), then this method is called during the printing
-   * of the final stack trace, and hence the correct error message
-   * gets displayed.
-   */
-  public String getMessage() {
-    if (!specialConstructor) {
-      return super.getMessage();
-    }
-    StringBuffer expected = new StringBuffer();
-    int maxSize = 0;
-    for (int i = 0; i < expectedTokenSequences.length; i++) {
-      if (maxSize < expectedTokenSequences[i].length) {
-        maxSize = expectedTokenSequences[i].length;
-      }
-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
-      }
-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-        expected.append("...");
-      }
-      expected.append(eol).append("    ");
-    }
-    String retval = "Encountered \"";
-    Token tok = currentToken.next;
-    for (int i = 0; i < maxSize; i++) {
-      if (i != 0) retval += " ";
-      if (tok.kind == 0) {
-        retval += tokenImage[0];
-        break;
-      }
-      retval += add_escapes(tok.image);
-      tok = tok.next; 
-    }
-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-    retval += "." + eol;
-    if (expectedTokenSequences.length == 1) {
-      retval += "Was expecting:" + eol + "    ";
-    } else {
-      retval += "Was expecting one of:" + eol + "    ";
-    }
-    retval += expected.toString();
-    return retval;
-  }
-
-  /**
-   * The end of line string for this machine.
-   */
-  protected String eol = System.getProperty("line.separator", "\n");
- 
-  /**
-   * Used to convert raw characters to their escaped version
-   * when these raw version cannot be used as part of an ASCII
-   * string literal.
-   */
-  protected String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java b/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
deleted file mode 100644
index 2724529..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/SimpleCharStream.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * An implementation of interface CharStream, where the stream is assumed to
- * contain only ASCII characters (without unicode processing).
- */
-
-public class SimpleCharStream
-{
-  public static final boolean staticFlag = false;
-  int bufsize;
-  int available;
-  int tokenBegin;
-  public int bufpos = -1;
-  protected int bufline[];
-  protected int bufcolumn[];
-
-  protected int column = 0;
-  protected int line = 1;
-
-  protected boolean prevCharIsCR = false;
-  protected boolean prevCharIsLF = false;
-
-  protected java.io.Reader inputStream;
-
-  protected char[] buffer;
-  protected int maxNextCharInd = 0;
-  protected int inBuf = 0;
-  protected int tabSize = 8;
-
-  protected void setTabSize(int i) { tabSize = i; }
-  protected int getTabSize(int i) { return tabSize; }
-
-
-  protected void ExpandBuff(boolean wrapAround)
-  {
-     char[] newbuffer = new char[bufsize + 2048];
-     int newbufline[] = new int[bufsize + 2048];
-     int newbufcolumn[] = new int[bufsize + 2048];
-
-     try
-     {
-        if (wrapAround)
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           System.arraycopy(buffer, 0, newbuffer,
-                                             bufsize - tokenBegin, bufpos);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-        }
-        else
-        {
-           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
-           buffer = newbuffer;
-
-           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
-           bufline = newbufline;
-
-           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
-           bufcolumn = newbufcolumn;
-
-           maxNextCharInd = (bufpos -= tokenBegin);
-        }
-     }
-     catch (Throwable t)
-     {
-        throw new Error(t.getMessage());
-     }
-
-
-     bufsize += 2048;
-     available = bufsize;
-     tokenBegin = 0;
-  }
-
-  protected void FillBuff() throws java.io.IOException
-  {
-     if (maxNextCharInd == available)
-     {
-        if (available == bufsize)
-        {
-           if (tokenBegin > 2048)
-           {
-              bufpos = maxNextCharInd = 0;
-              available = tokenBegin;
-           }
-           else if (tokenBegin < 0)
-              bufpos = maxNextCharInd = 0;
-           else
-              ExpandBuff(false);
-        }
-        else if (available > tokenBegin)
-           available = bufsize;
-        else if ((tokenBegin - available) < 2048)
-           ExpandBuff(true);
-        else
-           available = tokenBegin;
-     }
-
-     int i;
-     try {
-        if ((i = inputStream.read(buffer, maxNextCharInd,
-                                    available - maxNextCharInd)) == -1)
-        {
-           inputStream.close();
-           throw new java.io.IOException();
-        }
-        else
-           maxNextCharInd += i;
-        return;
-     }
-     catch(java.io.IOException e) {
-        --bufpos;
-        backup(0);
-        if (tokenBegin == -1)
-           tokenBegin = bufpos;
-        throw e;
-     }
-  }
-
-  public char BeginToken() throws java.io.IOException
-  {
-     tokenBegin = -1;
-     char c = readChar();
-     tokenBegin = bufpos;
-
-     return c;
-  }
-
-  protected void UpdateLineColumn(char c)
-  {
-     column++;
-
-     if (prevCharIsLF)
-     {
-        prevCharIsLF = false;
-        line += (column = 1);
-     }
-     else if (prevCharIsCR)
-     {
-        prevCharIsCR = false;
-        if (c == '\n')
-        {
-           prevCharIsLF = true;
-        }
-        else
-           line += (column = 1);
-     }
-
-     switch (c)
-     {
-        case '\r' :
-           prevCharIsCR = true;
-           break;
-        case '\n' :
-           prevCharIsLF = true;
-           break;
-        case '\t' :
-           column--;
-           column += (tabSize - (column % tabSize));
-           break;
-        default :
-           break;
-     }
-
-     bufline[bufpos] = line;
-     bufcolumn[bufpos] = column;
-  }
-
-  public char readChar() throws java.io.IOException
-  {
-     if (inBuf > 0)
-     {
-        --inBuf;
-
-        if (++bufpos == bufsize)
-           bufpos = 0;
-
-        return buffer[bufpos];
-     }
-
-     if (++bufpos >= maxNextCharInd)
-        FillBuff();
-
-     char c = buffer[bufpos];
-
-     UpdateLineColumn(c);
-     return (c);
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndColumn
-   */
-  @Deprecated
-  public int getColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  /**
-   * @deprecated 
-   * @see #getEndLine
-   */
-  @Deprecated
-  public int getLine() {
-     return bufline[bufpos];
-  }
-
-  public int getEndColumn() {
-     return bufcolumn[bufpos];
-  }
-
-  public int getEndLine() {
-     return bufline[bufpos];
-  }
-
-  public int getBeginColumn() {
-     return bufcolumn[tokenBegin];
-  }
-
-  public int getBeginLine() {
-     return bufline[tokenBegin];
-  }
-
-  public void backup(int amount) {
-
-    inBuf += amount;
-    if ((bufpos -= amount) < 0)
-       bufpos += bufsize;
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    available = bufsize = buffersize;
-    buffer = new char[buffersize];
-    bufline = new int[buffersize];
-    bufcolumn = new int[buffersize];
-  }
-
-  public SimpleCharStream(java.io.Reader dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.Reader dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.Reader dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-    inputStream = dstream;
-    line = startline;
-    column = startcolumn - 1;
-
-    if (buffer == null || buffersize != buffer.length)
-    {
-      available = bufsize = buffersize;
-      buffer = new char[buffersize];
-      bufline = new int[buffersize];
-      bufcolumn = new int[buffersize];
-    }
-    prevCharIsLF = prevCharIsCR = false;
-    tokenBegin = inBuf = maxNextCharInd = 0;
-    bufpos = -1;
-  }
-
-  public void ReInit(java.io.Reader dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-  int startcolumn, int buffersize)
-  {
-     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, int startline,
-                          int startcolumn)
-  {
-     this(dstream, startline, startcolumn, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     this(dstream, encoding, 1, 1, 4096);
-  }
-
-  public SimpleCharStream(java.io.InputStream dstream)
-  {
-     this(dstream, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
-  }
-
-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, 1, 1, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
-                     int startcolumn) throws java.io.UnsupportedEncodingException
-  {
-     ReInit(dstream, encoding, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                     int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public String GetImage()
-  {
-     if (bufpos >= tokenBegin)
-        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
-     else
-        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
-                              new String(buffer, 0, bufpos + 1);
-  }
-
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
-  public void Done()
-  {
-     buffer = null;
-     bufline = null;
-     bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/Token.java b/src/org/apache/james/mime4j/field/datetime/parser/Token.java
deleted file mode 100644
index 0927a09..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/Token.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-/**
- * Describes the input token stream.
- */
-
-public class Token {
-
-  /**
-   * An integer that describes the kind of this token.  This numbering
-   * system is determined by JavaCCParser, and a table of these numbers is
-   * stored in the file ...Constants.java.
-   */
-  public int kind;
-
-  /**
-   * beginLine and beginColumn describe the position of the first character
-   * of this token; endLine and endColumn describe the position of the
-   * last character of this token.
-   */
-  public int beginLine, beginColumn, endLine, endColumn;
-
-  /**
-   * The string image of the token.
-   */
-  public String image;
-
-  /**
-   * A reference to the next regular (non-special) token from the input
-   * stream.  If this is the last token from the input stream, or if the
-   * token manager has not read tokens beyond this one, this field is
-   * set to null.  This is true only if this token is also a regular
-   * token.  Otherwise, see below for a description of the contents of
-   * this field.
-   */
-  public Token next;
-
-  /**
-   * This field is used to access special tokens that occur prior to this
-   * token, but after the immediately preceding regular (non-special) token.
-   * If there are no such special tokens, this field is set to null.
-   * When there are more than one such special token, this field refers
-   * to the last of these special tokens, which in turn refers to the next
-   * previous special token through its specialToken field, and so on
-   * until the first special token (whose specialToken field is null).
-   * The next fields of special tokens refer to other special tokens that
-   * immediately follow it (without an intervening regular token).  If there
-   * is no such token, this field is null.
-   */
-  public Token specialToken;
-
-  /**
-   * Returns the image.
-   */
-  public String toString()
-  {
-     return image;
-  }
-
-  /**
-   * Returns a new Token object, by default. However, if you want, you
-   * can create and return subclass objects based on the value of ofKind.
-   * Simply add the cases to the switch for all those special cases.
-   * For example, if you have a subclass of Token called IDToken that
-   * you want to create if ofKind is ID, simlpy add something like :
-   *
-   *    case MyParserConstants.ID : return new IDToken();
-   *
-   * to the following switch statement. Then you can cast matchedToken
-   * variable to the appropriate type and use it in your lexical actions.
-   */
-  public static final Token newToken(int ofKind)
-  {
-     switch(ofKind)
-     {
-       default : return new Token();
-     }
-  }
-
-}
diff --git a/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java b/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
deleted file mode 100644
index e7043c1..0000000
--- a/src/org/apache/james/mime4j/field/datetime/parser/TokenMgrError.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
-/*
- *  Copyright 2004 the mime4j project
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.james.mime4j.field.datetime.parser;
-
-public class TokenMgrError extends Error
-{
-   /*
-    * Ordinals for various reasons why an Error of this type can be thrown.
-    */
-
-   /**
-    * Lexical error occured.
-    */
-   static final int LEXICAL_ERROR = 0;
-
-   /**
-    * An attempt wass made to create a second instance of a static token manager.
-    */
-   static final int STATIC_LEXER_ERROR = 1;
-
-   /**
-    * Tried to change to an invalid lexical state.
-    */
-   static final int INVALID_LEXICAL_STATE = 2;
-
-   /**
-    * Detected (and bailed out of) an infinite loop in the token manager.
-    */
-   static final int LOOP_DETECTED = 3;
-
-   /**
-    * Indicates the reason why the exception is thrown. It will have
-    * one of the above 4 values.
-    */
-   int errorCode;
-
-   /**
-    * Replaces unprintable characters by their espaced (or unicode escaped)
-    * equivalents in the given string
-    */
-   protected static final String addEscapes(String str) {
-      StringBuffer retval = new StringBuffer();
-      char ch;
-      for (int i = 0; i < str.length(); i++) {
-        switch (str.charAt(i))
-        {
-           case 0 :
-              continue;
-           case '\b':
-              retval.append("\\b");
-              continue;
-           case '\t':
-              retval.append("\\t");
-              continue;
-           case '\n':
-              retval.append("\\n");
-              continue;
-           case '\f':
-              retval.append("\\f");
-              continue;
-           case '\r':
-              retval.append("\\r");
-              continue;
-           case '\"':
-              retval.append("\\\"");
-              continue;
-           case '\'':
-              retval.append("\\\'");
-              continue;
-           case '\\':
-              retval.append("\\\\");
-              continue;
-           default:
-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                 String s = "0000" + Integer.toString(ch, 16);
-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-              } else {
-                 retval.append(ch);
-              }
-              continue;
-        }
-      }
-      return retval.toString();
-   }
-
-   /**
-    * Returns a detailed message for the Error when it is thrown by the
-    * token manager to indicate a lexical error.
-    * Parameters : 
-    *    EOFSeen     : indicates if EOF caused the lexicl error
-    *    curLexState : lexical state in which this error occured
-    *    errorLine   : line number when the error occured
-    *    errorColumn : column number when the error occured
-    *    errorAfter  : prefix that was seen before this error occured
-    *    curchar     : the offending character
-    * Note: You can customize the lexical error message by modifying this method.
-    */
-   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
-      return("Lexical error at line " +
-           errorLine + ", column " +
-           errorColumn + ".  Encountered: " +
-           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
-           "after : \"" + addEscapes(errorAfter) + "\"");
-   }
-
-   /**
-    * You can also modify the body of this method to customize your error messages.
-    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
-    * of end-users concern, so you can return something like : 
-    *
-    *     "Internal Error : Please file a bug report .... "
-    *
-    * from this method for such cases in the release version of your parser.
-    */
-   public String getMessage() {
-      return super.getMessage();
-   }
-
-   /*
-    * Constructors of various flavors follow.
-    */
-
-   public TokenMgrError() {
-   }
-
-   public TokenMgrError(String message, int reason) {
-      super(message);
-      errorCode = reason;
-   }
-
-   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
-      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
-   }
-}
diff --git a/src/org/apache/james/mime4j/util/CharsetUtil.java b/src/org/apache/james/mime4j/util/CharsetUtil.java
deleted file mode 100644
index 4e712fc..0000000
--- a/src/org/apache/james/mime4j/util/CharsetUtil.java
+++ /dev/null
@@ -1,1249 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mime4j.util;
-
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.TreeSet;
-
-//BEGIN android-changed: Stubbing out logging
-import org.apache.james.mime4j.Log;
-import org.apache.james.mime4j.LogFactory;
-//END android-changed
-
-/**
- * Utility class for working with character sets. It is somewhat similar to
- * the Java 1.4 <code>java.nio.charset.Charset</code> class but knows many
- * more aliases and is compatible with Java 1.3. It will use a simple detection
- * mechanism to detect what character sets the current VM supports. This will
- * be a sub-set of the character sets listed in the
- * <a href="http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html">
- * Java 1.5 (J2SE5.0) Supported Encodings</a> document.
- * <p>
- * The <a href="http://www.iana.org/assignments/character-sets">
- * IANA Character Sets</a> document has been used to determine the preferred
- * MIME character set names and to get a list of known aliases.
- * <p>
- * This is a complete list of the character sets known to this class:
- * <table>
- *     <tr>
- *         <td>Canonical (Java) name</td>
- *         <td>MIME preferred</td>
- *         <td>Aliases</td>
- *     </tr>
- *     <tr>
- *         <td>ASCII</td>
- *         <td>US-ASCII</td>
- *         <td>ANSI_X3.4-1968 iso-ir-6 ANSI_X3.4-1986 ISO_646.irv:1991 ISO646-US us IBM367 cp367 csASCII ascii7 646 iso_646.irv:1983 </td>
- *     </tr>
- *     <tr>
- *         <td>Big5</td>
- *         <td>Big5</td>
- *         <td>csBig5 CN-Big5 BIG-FIVE BIGFIVE </td>
- *     </tr>
- *     <tr>
- *         <td>Big5_HKSCS</td>
- *         <td>Big5-HKSCS</td>
- *         <td>big5hkscs </td>
- *     </tr>
- *     <tr>
- *         <td>Big5_Solaris</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp037</td>
- *         <td>IBM037</td>
- *         <td>ebcdic-cp-us ebcdic-cp-ca ebcdic-cp-wt ebcdic-cp-nl csIBM037 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1006</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1025</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1026</td>
- *         <td>IBM1026</td>
- *         <td>csIBM1026 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1046</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1047</td>
- *         <td>IBM1047</td>
- *         <td>IBM-1047 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1097</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1098</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1112</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1122</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1123</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1124</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1140</td>
- *         <td>IBM01140</td>
- *         <td>CCSID01140 CP01140 ebcdic-us-37+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1141</td>
- *         <td>IBM01141</td>
- *         <td>CCSID01141 CP01141 ebcdic-de-273+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1142</td>
- *         <td>IBM01142</td>
- *         <td>CCSID01142 CP01142 ebcdic-dk-277+euro ebcdic-no-277+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1143</td>
- *         <td>IBM01143</td>
- *         <td>CCSID01143 CP01143 ebcdic-fi-278+euro ebcdic-se-278+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1144</td>
- *         <td>IBM01144</td>
- *         <td>CCSID01144 CP01144 ebcdic-it-280+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1145</td>
- *         <td>IBM01145</td>
- *         <td>CCSID01145 CP01145 ebcdic-es-284+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1146</td>
- *         <td>IBM01146</td>
- *         <td>CCSID01146 CP01146 ebcdic-gb-285+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1147</td>
- *         <td>IBM01147</td>
- *         <td>CCSID01147 CP01147 ebcdic-fr-297+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1148</td>
- *         <td>IBM01148</td>
- *         <td>CCSID01148 CP01148 ebcdic-international-500+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1149</td>
- *         <td>IBM01149</td>
- *         <td>CCSID01149 CP01149 ebcdic-is-871+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp1250</td>
- *         <td>windows-1250</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1251</td>
- *         <td>windows-1251</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1252</td>
- *         <td>windows-1252</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1253</td>
- *         <td>windows-1253</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1254</td>
- *         <td>windows-1254</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1255</td>
- *         <td>windows-1255</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1256</td>
- *         <td>windows-1256</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1257</td>
- *         <td>windows-1257</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1258</td>
- *         <td>windows-1258</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1381</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp1383</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp273</td>
- *         <td>IBM273</td>
- *         <td>csIBM273 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp277</td>
- *         <td>IBM277</td>
- *         <td>EBCDIC-CP-DK EBCDIC-CP-NO csIBM277 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp278</td>
- *         <td>IBM278</td>
- *         <td>CP278 ebcdic-cp-fi ebcdic-cp-se csIBM278 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp280</td>
- *         <td>IBM280</td>
- *         <td>ebcdic-cp-it csIBM280 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp284</td>
- *         <td>IBM284</td>
- *         <td>ebcdic-cp-es csIBM284 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp285</td>
- *         <td>IBM285</td>
- *         <td>ebcdic-cp-gb csIBM285 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp297</td>
- *         <td>IBM297</td>
- *         <td>ebcdic-cp-fr csIBM297 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp33722</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp420</td>
- *         <td>IBM420</td>
- *         <td>ebcdic-cp-ar1 csIBM420 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp424</td>
- *         <td>IBM424</td>
- *         <td>ebcdic-cp-he csIBM424 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp437</td>
- *         <td>IBM437</td>
- *         <td>437 csPC8CodePage437 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp500</td>
- *         <td>IBM500</td>
- *         <td>ebcdic-cp-be ebcdic-cp-ch csIBM500 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp737</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp775</td>
- *         <td>IBM775</td>
- *         <td>csPC775Baltic </td>
- *     </tr>
- *     <tr>
- *         <td>Cp838</td>
- *         <td>IBM-Thai</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp850</td>
- *         <td>IBM850</td>
- *         <td>850 csPC850Multilingual </td>
- *     </tr>
- *     <tr>
- *         <td>Cp852</td>
- *         <td>IBM852</td>
- *         <td>852 csPCp852 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp855</td>
- *         <td>IBM855</td>
- *         <td>855 csIBM855 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp856</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp857</td>
- *         <td>IBM857</td>
- *         <td>857 csIBM857 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp858</td>
- *         <td>IBM00858</td>
- *         <td>CCSID00858 CP00858 PC-Multilingual-850+euro </td>
- *     </tr>
- *     <tr>
- *         <td>Cp860</td>
- *         <td>IBM860</td>
- *         <td>860 csIBM860 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp861</td>
- *         <td>IBM861</td>
- *         <td>861 cp-is csIBM861 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp862</td>
- *         <td>IBM862</td>
- *         <td>862 csPC862LatinHebrew </td>
- *     </tr>
- *     <tr>
- *         <td>Cp863</td>
- *         <td>IBM863</td>
- *         <td>863 csIBM863 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp864</td>
- *         <td>IBM864</td>
- *         <td>cp864 csIBM864 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp865</td>
- *         <td>IBM865</td>
- *         <td>865 csIBM865 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp866</td>
- *         <td>IBM866</td>
- *         <td>866 csIBM866 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp868</td>
- *         <td>IBM868</td>
- *         <td>cp-ar csIBM868 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp869</td>
- *         <td>IBM869</td>
- *         <td>cp-gr csIBM869 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp870</td>
- *         <td>IBM870</td>
- *         <td>ebcdic-cp-roece ebcdic-cp-yu csIBM870 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp871</td>
- *         <td>IBM871</td>
- *         <td>ebcdic-cp-is csIBM871 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp875</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp918</td>
- *         <td>IBM918</td>
- *         <td>ebcdic-cp-ar2 csIBM918 </td>
- *     </tr>
- *     <tr>
- *         <td>Cp921</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp922</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp930</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp933</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp935</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp937</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp939</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp942</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp942C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp943</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp943C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp948</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp949</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp949C</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp950</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp964</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>Cp970</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_CN</td>
- *         <td>GB2312</td>
- *         <td>x-EUC-CN csGB2312 euccn euc-cn gb2312-80 gb2312-1980 CN-GB CN-GB-ISOIR165 </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP</td>
- *         <td>EUC-JP</td>
- *         <td>csEUCPkdFmtJapanese Extended_UNIX_Code_Packed_Format_for_Japanese eucjis x-eucjp eucjp x-euc-jp </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP_LINUX</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_JP_Solaris</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>EUC_KR</td>
- *         <td>EUC-KR</td>
- *         <td>csEUCKR ksc5601 5601 ksc5601_1987 ksc_5601 ksc5601-1987 ks_c_5601-1987 euckr </td>
- *     </tr>
- *     <tr>
- *         <td>EUC_TW</td>
- *         <td>EUC-TW</td>
- *         <td>x-EUC-TW cns11643 euctw </td>
- *     </tr>
- *     <tr>
- *         <td>GB18030</td>
- *         <td>GB18030</td>
- *         <td>gb18030-2000 </td>
- *     </tr>
- *     <tr>
- *         <td>GBK</td>
- *         <td>windows-936</td>
- *         <td>CP936 MS936 ms_936 x-mswin-936 </td>
- *     </tr>
- *     <tr>
- *         <td>ISCII91</td>
- *         <td>?</td>
- *         <td>x-ISCII91 iscii </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022CN</td>
- *         <td>ISO-2022-CN</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022JP</td>
- *         <td>ISO-2022-JP</td>
- *         <td>csISO2022JP JIS jis_encoding csjisencoding </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022KR</td>
- *         <td>ISO-2022-KR</td>
- *         <td>csISO2022KR </td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022_CN_CNS</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO2022_CN_GB</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_1</td>
- *         <td>ISO-8859-1</td>
- *         <td>ISO_8859-1:1987 iso-ir-100 ISO_8859-1 latin1 l1 IBM819 CP819 csISOLatin1 8859_1 819 IBM-819 ISO8859-1 ISO_8859_1 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_13</td>
- *         <td>ISO-8859-13</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_15</td>
- *         <td>ISO-8859-15</td>
- *         <td>ISO_8859-15 Latin-9 8859_15 csISOlatin9 IBM923 cp923 923 L9 IBM-923 ISO8859-15 LATIN9 LATIN0 csISOlatin0 ISO8859_15_FDIS </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_2</td>
- *         <td>ISO-8859-2</td>
- *         <td>ISO_8859-2:1987 iso-ir-101 ISO_8859-2 latin2 l2 csISOLatin2 8859_2 iso8859_2 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_3</td>
- *         <td>ISO-8859-3</td>
- *         <td>ISO_8859-3:1988 iso-ir-109 ISO_8859-3 latin3 l3 csISOLatin3 8859_3 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_4</td>
- *         <td>ISO-8859-4</td>
- *         <td>ISO_8859-4:1988 iso-ir-110 ISO_8859-4 latin4 l4 csISOLatin4 8859_4 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_5</td>
- *         <td>ISO-8859-5</td>
- *         <td>ISO_8859-5:1988 iso-ir-144 ISO_8859-5 cyrillic csISOLatinCyrillic 8859_5 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_6</td>
- *         <td>ISO-8859-6</td>
- *         <td>ISO_8859-6:1987 iso-ir-127 ISO_8859-6 ECMA-114 ASMO-708 arabic csISOLatinArabic 8859_6 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_7</td>
- *         <td>ISO-8859-7</td>
- *         <td>ISO_8859-7:1987 iso-ir-126 ISO_8859-7 ELOT_928 ECMA-118 greek greek8 csISOLatinGreek 8859_7 sun_eu_greek </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_8</td>
- *         <td>ISO-8859-8</td>
- *         <td>ISO_8859-8:1988 iso-ir-138 ISO_8859-8 hebrew csISOLatinHebrew 8859_8 </td>
- *     </tr>
- *     <tr>
- *         <td>ISO8859_9</td>
- *         <td>ISO-8859-9</td>
- *         <td>ISO_8859-9:1989 iso-ir-148 ISO_8859-9 latin5 l5 csISOLatin5 8859_9 </td>
- *     </tr>
- *     <tr>
- *         <td>JISAutoDetect</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>JIS_C6626-1983</td>
- *         <td>JIS_C6626-1983</td>
- *         <td>x-JIS0208 JIS0208 csISO87JISX0208 x0208 JIS_X0208-1983 iso-ir-87 </td>
- *     </tr>
- *     <tr>
- *         <td>JIS_X0201</td>
- *         <td>JIS_X0201</td>
- *         <td>X0201 JIS0201 csHalfWidthKatakana </td>
- *     </tr>
- *     <tr>
- *         <td>JIS_X0212-1990</td>
- *         <td>JIS_X0212-1990</td>
- *         <td>iso-ir-159 x0212 JIS0212 csISO159JISX02121990 </td>
- *     </tr>
- *     <tr>
- *         <td>KOI8_R</td>
- *         <td>KOI8-R</td>
- *         <td>csKOI8R koi8 </td>
- *     </tr>
- *     <tr>
- *         <td>MS874</td>
- *         <td>windows-874</td>
- *         <td>cp874 </td>
- *     </tr>
- *     <tr>
- *         <td>MS932</td>
- *         <td>Windows-31J</td>
- *         <td>windows-932 csWindows31J x-ms-cp932 </td>
- *     </tr>
- *     <tr>
- *         <td>MS949</td>
- *         <td>windows-949</td>
- *         <td>windows949 ms_949 x-windows-949 </td>
- *     </tr>
- *     <tr>
- *         <td>MS950</td>
- *         <td>windows-950</td>
- *         <td>x-windows-950 </td>
- *     </tr>
- *     <tr>
- *         <td>MS950_HKSCS</td>
- *         <td></td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacArabic</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCentralEurope</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCroatian</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacCyrillic</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacDingbat</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacGreek</td>
- *         <td>MacGreek</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacHebrew</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacIceland</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacRoman</td>
- *         <td>MacRoman</td>
- *         <td>Macintosh MAC csMacintosh </td>
- *     </tr>
- *     <tr>
- *         <td>MacRomania</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacSymbol</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacThai</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacTurkish</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>MacUkraine</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>SJIS</td>
- *         <td>Shift_JIS</td>
- *         <td>MS_Kanji csShiftJIS shift-jis x-sjis pck </td>
- *     </tr>
- *     <tr>
- *         <td>TIS620</td>
- *         <td>TIS-620</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UTF-16</td>
- *         <td>UTF-16</td>
- *         <td>UTF_16 </td>
- *     </tr>
- *     <tr>
- *         <td>UTF8</td>
- *         <td>UTF-8</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeBig</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeBigUnmarked</td>
- *         <td>UTF-16BE</td>
- *         <td>X-UTF-16BE UTF_16BE ISO-10646-UCS-2 </td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeLittle</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- *     <tr>
- *         <td>UnicodeLittleUnmarked</td>
- *         <td>UTF-16LE</td>
- *         <td>UTF_16LE X-UTF-16LE </td>
- *     </tr>
- *     <tr>
- *         <td>x-Johab</td>
- *         <td>johab</td>
- *         <td>johab cp1361 ms1361 ksc5601-1992 ksc5601_1992 </td>
- *     </tr>
- *     <tr>
- *         <td>x-iso-8859-11</td>
- *         <td>?</td>
- *         <td></td>
- *     </tr>
- * </table>
- *
- *
- * @version $Id: CharsetUtil.java,v 1.1 2004/10/25 07:26:46 ntherning Exp $
- */
-public class CharsetUtil {
-    private static Log log = LogFactory.getLog(CharsetUtil.class);
-
-    private static class Charset implements Comparable<Charset> {
-        private String canonical = null;
-        private String mime = null;
-        private String[] aliases = null;
-
-        private Charset(String canonical, String mime, String[] aliases) {
-            this.canonical = canonical;
-            this.mime = mime;
-            this.aliases = aliases;
-        }
-
-        public int compareTo(Charset c) {
-            return this.canonical.compareTo(c.canonical);
-        }
-    }
-
-    private static Charset[] JAVA_CHARSETS = {
-        new Charset("ISO8859_1", "ISO-8859-1",
-                    new String[] {"ISO_8859-1:1987", "iso-ir-100", "ISO_8859-1",
-                                  "latin1", "l1", "IBM819", "CP819",
-                                  "csISOLatin1", "8859_1", "819", "IBM-819",
-                                  "ISO8859-1", "ISO_8859_1"}),
-        new Charset("ISO8859_2", "ISO-8859-2",
-                    new String[] {"ISO_8859-2:1987", "iso-ir-101", "ISO_8859-2",
-                                  "latin2", "l2", "csISOLatin2", "8859_2",
-                                  "iso8859_2"}),
-        new Charset("ISO8859_3", "ISO-8859-3", new String[] {"ISO_8859-3:1988", "iso-ir-109", "ISO_8859-3", "latin3", "l3", "csISOLatin3", "8859_3"}),
-        new Charset("ISO8859_4", "ISO-8859-4",
-                    new String[] {"ISO_8859-4:1988", "iso-ir-110", "ISO_8859-4",
-                                  "latin4", "l4", "csISOLatin4", "8859_4"}),
-        new Charset("ISO8859_5", "ISO-8859-5",
-                    new String[] {"ISO_8859-5:1988", "iso-ir-144", "ISO_8859-5",
-                                  "cyrillic", "csISOLatinCyrillic", "8859_5"}),
-        new Charset("ISO8859_6", "ISO-8859-6", new String[] {"ISO_8859-6:1987", "iso-ir-127", "ISO_8859-6", "ECMA-114", "ASMO-708", "arabic", "csISOLatinArabic", "8859_6"}),
-        new Charset("ISO8859_7", "ISO-8859-7",
-                    new String[] {"ISO_8859-7:1987", "iso-ir-126", "ISO_8859-7",
-                                  "ELOT_928", "ECMA-118", "greek", "greek8",
-                                  "csISOLatinGreek", "8859_7", "sun_eu_greek"}),
-        new Charset("ISO8859_8", "ISO-8859-8", new String[] {"ISO_8859-8:1988", "iso-ir-138", "ISO_8859-8", "hebrew", "csISOLatinHebrew", "8859_8"}),
-        new Charset("ISO8859_9", "ISO-8859-9",
-                    new String[] {"ISO_8859-9:1989", "iso-ir-148", "ISO_8859-9",
-                                  "latin5", "l5", "csISOLatin5", "8859_9"}),
-
-        new Charset("ISO8859_13", "ISO-8859-13", new String[] {}),
-        new Charset("ISO8859_15", "ISO-8859-15",
-                    new String[] {"ISO_8859-15", "Latin-9", "8859_15",
-                                  "csISOlatin9", "IBM923", "cp923", "923", "L9",
-                                  "IBM-923", "ISO8859-15", "LATIN9", "LATIN0",
-                                  "csISOlatin0", "ISO8859_15_FDIS"}),
-        new Charset("KOI8_R", "KOI8-R", new String[] {"csKOI8R", "koi8"}),
-        new Charset("ASCII", "US-ASCII",
-                    new String[] {"ANSI_X3.4-1968", "iso-ir-6",
-                                  "ANSI_X3.4-1986", "ISO_646.irv:1991",
-                                  "ISO646-US", "us", "IBM367", "cp367",
-                                  "csASCII", "ascii7", "646", "iso_646.irv:1983"}),
-        new Charset("UTF8", "UTF-8", new String[] {}),
-        new Charset("UTF-16", "UTF-16", new String[] {"UTF_16"}),
-        new Charset("UnicodeBigUnmarked", "UTF-16BE", new String[] {"X-UTF-16BE", "UTF_16BE", "ISO-10646-UCS-2"}),
-        new Charset("UnicodeLittleUnmarked", "UTF-16LE", new String[] {"UTF_16LE", "X-UTF-16LE"}),
-        new Charset("Big5", "Big5", new String[] {"csBig5", "CN-Big5", "BIG-FIVE", "BIGFIVE"}),
-        new Charset("Big5_HKSCS", "Big5-HKSCS", new String[] {"big5hkscs"}),
-        new Charset("EUC_JP", "EUC-JP",
-                    new String[] {"csEUCPkdFmtJapanese",
-                              "Extended_UNIX_Code_Packed_Format_for_Japanese",
-                              "eucjis", "x-eucjp", "eucjp", "x-euc-jp"}),
-        new Charset("EUC_KR", "EUC-KR",
-                    new String[] {"csEUCKR", "ksc5601", "5601", "ksc5601_1987",
-                                  "ksc_5601", "ksc5601-1987", "ks_c_5601-1987",
-                                  "euckr"}),
-        new Charset("GB18030", "GB18030", new String[] {"gb18030-2000"}),
-        new Charset("EUC_CN", "GB2312", new String[] {"x-EUC-CN", "csGB2312", "euccn", "euc-cn", "gb2312-80", "gb2312-1980", "CN-GB", "CN-GB-ISOIR165"}),
-        new Charset("GBK", "windows-936", new String[] {"CP936", "MS936", "ms_936", "x-mswin-936"}),
-
-        new Charset("Cp037", "IBM037", new String[] {"ebcdic-cp-us", "ebcdic-cp-ca", "ebcdic-cp-wt", "ebcdic-cp-nl", "csIBM037"}),
-        new Charset("Cp273", "IBM273", new String[] {"csIBM273"}),
-        new Charset("Cp277", "IBM277", new String[] {"EBCDIC-CP-DK", "EBCDIC-CP-NO", "csIBM277"}),
-        new Charset("Cp278", "IBM278", new String[] {"CP278", "ebcdic-cp-fi", "ebcdic-cp-se", "csIBM278"}),
-        new Charset("Cp280", "IBM280", new String[] {"ebcdic-cp-it", "csIBM280"}),
-        new Charset("Cp284", "IBM284", new String[] {"ebcdic-cp-es", "csIBM284"}),
-        new Charset("Cp285", "IBM285", new String[] {"ebcdic-cp-gb", "csIBM285"}),
-        new Charset("Cp297", "IBM297", new String[] {"ebcdic-cp-fr", "csIBM297"}),
-        new Charset("Cp420", "IBM420", new String[] {"ebcdic-cp-ar1", "csIBM420"}),
-        new Charset("Cp424", "IBM424", new String[] {"ebcdic-cp-he", "csIBM424"}),
-        new Charset("Cp437", "IBM437", new String[] {"437", "csPC8CodePage437"}),
-        new Charset("Cp500", "IBM500", new String[] {"ebcdic-cp-be", "ebcdic-cp-ch", "csIBM500"}),
-        new Charset("Cp775", "IBM775", new String[] {"csPC775Baltic"}),
-        new Charset("Cp838", "IBM-Thai", new String[] {}),
-        new Charset("Cp850", "IBM850", new String[] {"850", "csPC850Multilingual"}),
-        new Charset("Cp852", "IBM852", new String[] {"852", "csPCp852"}),
-        new Charset("Cp855", "IBM855", new String[] {"855", "csIBM855"}),
-        new Charset("Cp857", "IBM857", new String[] {"857", "csIBM857"}),
-        new Charset("Cp858", "IBM00858",
-                new String[] {"CCSID00858", "CP00858",
-                              "PC-Multilingual-850+euro"}),
-        new Charset("Cp860", "IBM860", new String[] {"860", "csIBM860"}),
-        new Charset("Cp861", "IBM861", new String[] {"861", "cp-is", "csIBM861"}),
-        new Charset("Cp862", "IBM862", new String[] {"862", "csPC862LatinHebrew"}),
-        new Charset("Cp863", "IBM863", new String[] {"863", "csIBM863"}),
-        new Charset("Cp864", "IBM864", new String[] {"cp864", "csIBM864"}),
-        new Charset("Cp865", "IBM865", new String[] {"865", "csIBM865"}),
-        new Charset("Cp866", "IBM866", new String[] {"866", "csIBM866"}),
-        new Charset("Cp868", "IBM868", new String[] {"cp-ar", "csIBM868"}),
-        new Charset("Cp869", "IBM869", new String[] {"cp-gr", "csIBM869"}),
-        new Charset("Cp870", "IBM870", new String[] {"ebcdic-cp-roece", "ebcdic-cp-yu", "csIBM870"}),
-        new Charset("Cp871", "IBM871", new String[] {"ebcdic-cp-is", "csIBM871"}),
-        new Charset("Cp918", "IBM918", new String[] {"ebcdic-cp-ar2", "csIBM918"}),
-        new Charset("Cp1026", "IBM1026", new String[] {"csIBM1026"}),
-        new Charset("Cp1047", "IBM1047", new String[] {"IBM-1047"}),
-        new Charset("Cp1140", "IBM01140",
-                    new String[] {"CCSID01140", "CP01140",
-                                  "ebcdic-us-37+euro"}),
-        new Charset("Cp1141", "IBM01141",
-                    new String[] {"CCSID01141", "CP01141",
-                                  "ebcdic-de-273+euro"}),
-        new Charset("Cp1142", "IBM01142", new String[] {"CCSID01142", "CP01142", "ebcdic-dk-277+euro", "ebcdic-no-277+euro"}),
-        new Charset("Cp1143", "IBM01143", new String[] {"CCSID01143", "CP01143", "ebcdic-fi-278+euro", "ebcdic-se-278+euro"}),
-        new Charset("Cp1144", "IBM01144", new String[] {"CCSID01144", "CP01144", "ebcdic-it-280+euro"}),
-        new Charset("Cp1145", "IBM01145", new String[] {"CCSID01145", "CP01145", "ebcdic-es-284+euro"}),
-        new Charset("Cp1146", "IBM01146", new String[] {"CCSID01146", "CP01146", "ebcdic-gb-285+euro"}),
-        new Charset("Cp1147", "IBM01147", new String[] {"CCSID01147", "CP01147", "ebcdic-fr-297+euro"}),
-        new Charset("Cp1148", "IBM01148", new String[] {"CCSID01148", "CP01148", "ebcdic-international-500+euro"}),
-        new Charset("Cp1149", "IBM01149", new String[] {"CCSID01149", "CP01149", "ebcdic-is-871+euro"}),
-        new Charset("Cp1250", "windows-1250", new String[] {}),
-        new Charset("Cp1251", "windows-1251", new String[] {}),
-        new Charset("Cp1252", "windows-1252", new String[] {}),
-        new Charset("Cp1253", "windows-1253", new String[] {}),
-        new Charset("Cp1254", "windows-1254", new String[] {}),
-        new Charset("Cp1255", "windows-1255", new String[] {}),
-        new Charset("Cp1256", "windows-1256", new String[] {}),
-        new Charset("Cp1257", "windows-1257", new String[] {}),
-        new Charset("Cp1258", "windows-1258", new String[] {}),
-        new Charset("ISO2022CN", "ISO-2022-CN", new String[] {}),
-        new Charset("ISO2022JP", "ISO-2022-JP", new String[] {"csISO2022JP", "JIS", "jis_encoding", "csjisencoding"}),
-        new Charset("ISO2022KR", "ISO-2022-KR", new String[] {"csISO2022KR"}),
-        new Charset("JIS_X0201", "JIS_X0201", new String[] {"X0201", "JIS0201", "csHalfWidthKatakana"}),
-        new Charset("JIS_X0212-1990", "JIS_X0212-1990", new String[] {"iso-ir-159", "x0212", "JIS0212", "csISO159JISX02121990"}),
-        new Charset("JIS_C6626-1983", "JIS_C6626-1983", new String[] {"x-JIS0208", "JIS0208", "csISO87JISX0208", "x0208", "JIS_X0208-1983", "iso-ir-87"}),
-        new Charset("SJIS", "Shift_JIS", new String[] {"MS_Kanji", "csShiftJIS", "shift-jis", "x-sjis", "pck"}),
-        new Charset("TIS620", "TIS-620", new String[] {}),
-        new Charset("MS932", "Windows-31J", new String[] {"windows-932", "csWindows31J", "x-ms-cp932"}),
-        new Charset("EUC_TW", "EUC-TW", new String[] {"x-EUC-TW", "cns11643", "euctw"}),
-        new Charset("x-Johab", "johab", new String[] {"johab", "cp1361", "ms1361", "ksc5601-1992", "ksc5601_1992"}),
-        new Charset("MS950_HKSCS", "", new String[] {}),
-        new Charset("MS874", "windows-874", new String[] {"cp874"}),
-        new Charset("MS949", "windows-949", new String[] {"windows949", "ms_949", "x-windows-949"}),
-        new Charset("MS950", "windows-950", new String[] {"x-windows-950"}),
-
-        new Charset("Cp737", null, new String[] {}),
-        new Charset("Cp856", null, new String[] {}),
-        new Charset("Cp875", null, new String[] {}),
-        new Charset("Cp921", null, new String[] {}),
-        new Charset("Cp922", null, new String[] {}),
-        new Charset("Cp930", null, new String[] {}),
-        new Charset("Cp933", null, new String[] {}),
-        new Charset("Cp935", null, new String[] {}),
-        new Charset("Cp937", null, new String[] {}),
-        new Charset("Cp939", null, new String[] {}),
-        new Charset("Cp942", null, new String[] {}),
-        new Charset("Cp942C", null, new String[] {}),
-        new Charset("Cp943", null, new String[] {}),
-        new Charset("Cp943C", null, new String[] {}),
-        new Charset("Cp948", null, new String[] {}),
-        new Charset("Cp949", null, new String[] {}),
-        new Charset("Cp949C", null, new String[] {}),
-        new Charset("Cp950", null, new String[] {}),
-        new Charset("Cp964", null, new String[] {}),
-        new Charset("Cp970", null, new String[] {}),
-        new Charset("Cp1006", null, new String[] {}),
-        new Charset("Cp1025", null, new String[] {}),
-        new Charset("Cp1046", null, new String[] {}),
-        new Charset("Cp1097", null, new String[] {}),
-        new Charset("Cp1098", null, new String[] {}),
-        new Charset("Cp1112", null, new String[] {}),
-        new Charset("Cp1122", null, new String[] {}),
-        new Charset("Cp1123", null, new String[] {}),
-        new Charset("Cp1124", null, new String[] {}),
-        new Charset("Cp1381", null, new String[] {}),
-        new Charset("Cp1383", null, new String[] {}),
-        new Charset("Cp33722", null, new String[] {}),
-        new Charset("Big5_Solaris", null, new String[] {}),
-        new Charset("EUC_JP_LINUX", null, new String[] {}),
-        new Charset("EUC_JP_Solaris", null, new String[] {}),
-        new Charset("ISCII91", null, new String[] {"x-ISCII91", "iscii"}),
-        new Charset("ISO2022_CN_CNS", null, new String[] {}),
-        new Charset("ISO2022_CN_GB", null, new String[] {}),
-        new Charset("x-iso-8859-11", null, new String[] {}),
-        new Charset("JISAutoDetect", null, new String[] {}),
-        new Charset("MacArabic", null, new String[] {}),
-        new Charset("MacCentralEurope", null, new String[] {}),
-        new Charset("MacCroatian", null, new String[] {}),
-        new Charset("MacCyrillic", null, new String[] {}),
-        new Charset("MacDingbat", null, new String[] {}),
-        new Charset("MacGreek", "MacGreek", new String[] {}),
-        new Charset("MacHebrew", null, new String[] {}),
-        new Charset("MacIceland", null, new String[] {}),
-        new Charset("MacRoman", "MacRoman", new String[] {"Macintosh", "MAC", "csMacintosh"}),
-        new Charset("MacRomania", null, new String[] {}),
-        new Charset("MacSymbol", null, new String[] {}),
-        new Charset("MacThai", null, new String[] {}),
-        new Charset("MacTurkish", null, new String[] {}),
-        new Charset("MacUkraine", null, new String[] {}),
-        new Charset("UnicodeBig", null, new String[] {}),
-        new Charset("UnicodeLittle", null, new String[] {})
-    };
-
-    /**
-     * Contains the canonical names of character sets which can be used to
-     * decode bytes into Java chars.
-     */
-    private static TreeSet<String> decodingSupported = null;
-
-    /**
-     * Contains the canonical names of character sets which can be used to
-     * encode Java chars into bytes.
-     */
-    private static TreeSet<String> encodingSupported = null;
-
-    /**
-     * Maps character set names to Charset objects. All possible names of
-     * a charset will be mapped to the Charset.
-     */
-    private static HashMap<String, Charset> charsetMap = null;
-
-    static {
-        decodingSupported = new TreeSet<String>();
-        encodingSupported = new TreeSet<String>();
-        byte[] dummy = new byte[] {'d', 'u', 'm', 'm', 'y'};
-        for (int i = 0; i < JAVA_CHARSETS.length; i++) {
-            try {
-                String s = new String(dummy, JAVA_CHARSETS[i].canonical);
-                decodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
-            } catch (UnsupportedOperationException e) {
-            } catch (UnsupportedEncodingException e) {
-            }
-            try {
-                "dummy".getBytes(JAVA_CHARSETS[i].canonical);
-                encodingSupported.add(JAVA_CHARSETS[i].canonical.toLowerCase(Locale.US));
-            } catch (UnsupportedOperationException e) {
-            } catch (UnsupportedEncodingException e) {
-            }
-        }
-
-        charsetMap = new HashMap<String, Charset>();
-        for (int i = 0; i < JAVA_CHARSETS.length; i++) {
-            Charset c = JAVA_CHARSETS[i];
-            charsetMap.put(c.canonical.toLowerCase(Locale.US), c);
-            if (c.mime != null) {
-                charsetMap.put(c.mime.toLowerCase(Locale.US), c);
-            }
-            if (c.aliases != null) {
-                for (int j = 0; j < c.aliases.length; j++) {
-                    charsetMap.put(c.aliases[j].toLowerCase(Locale.US), c);
-                }
-            }
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("Character sets which support decoding: "
-                        + decodingSupported);
-            log.debug("Character sets which support encoding: "
-                        + encodingSupported);
-        }
-    }
-
-    /**
-     * ANDROID:  THE FOLLOWING SET OF STATIC STRINGS ARE COPIED FROM A NEWER VERSION OF MIME4J
-     */
-
-    /** carriage return - line feed sequence */
-    public static final String CRLF = "\r\n";
-
-    /** US-ASCII CR, carriage return (13) */
-    public static final int CR = '\r';
-
-    /** US-ASCII LF, line feed (10) */
-    public static final int LF = '\n';
-
-    /** US-ASCII SP, space (32) */
-    public static final int SP = ' ';
-
-    /** US-ASCII HT, horizontal-tab (9)*/
-    public static final int HT = '\t';
-
-    public static final java.nio.charset.Charset US_ASCII = java.nio.charset.Charset
-            .forName("US-ASCII");
-
-    public static final java.nio.charset.Charset ISO_8859_1 = java.nio.charset.Charset
-            .forName("ISO-8859-1");
-
-    public static final java.nio.charset.Charset UTF_8 = java.nio.charset.Charset
-            .forName("UTF-8");
-
-    /**
-     * Returns <code>true</code> if the specified character is a whitespace
-     * character (CR, LF, SP or HT).
-     *
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     *
-     * @param ch
-     *            character to test.
-     * @return <code>true</code> if the specified character is a whitespace
-     *         character, <code>false</code> otherwise.
-     */
-    public static boolean isWhitespace(char ch) {
-        return ch == SP || ch == HT || ch == CR || ch == LF;
-    }
-
-    /**
-     * Returns <code>true</code> if the specified string consists entirely of
-     * whitespace characters.
-     *
-     * ANDROID:  COPIED FROM A NEWER VERSION OF MIME4J
-     *
-     * @param s
-     *            string to test.
-     * @return <code>true</code> if the specified string consists entirely of
-     *         whitespace characters, <code>false</code> otherwise.
-     */
-    public static boolean isWhitespace(final String s) {
-        if (s == null) {
-            throw new IllegalArgumentException("String may not be null");
-        }
-        final int len = s.length();
-        for (int i = 0; i < len; i++) {
-            if (!isWhitespace(s.charAt(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Determines if the VM supports encoding (chars to bytes) the
-     * specified character set. NOTE: the given character set name may
-     * not be known to the VM even if this method returns <code>true</code>.
-     * Use {@link #toJavaCharset(String)} to get the canonical Java character
-     * set name.
-     *
-     * @param charsetName the characters set name.
-     * @return <code>true</code> if encoding is supported, <code>false</code>
-     *         otherwise.
-     */
-    public static boolean isEncodingSupported(String charsetName) {
-        return encodingSupported.contains(charsetName.toLowerCase(Locale.US));
-    }
-
-    /**
-     * Determines if the VM supports decoding (bytes to chars) the
-     * specified character set. NOTE: the given character set name may
-     * not be known to the VM even if this method returns <code>true</code>.
-     * Use {@link #toJavaCharset(String)} to get the canonical Java character
-     * set name.
-     *
-     * @param charsetName the characters set name.
-     * @return <code>true</code> if decoding is supported, <code>false</code>
-     *         otherwise.
-     */
-    public static boolean isDecodingSupported(String charsetName) {
-        return decodingSupported.contains(charsetName.toLowerCase(Locale.US));
-    }
-
-    /**
-     * Gets the preferred MIME character set name for the specified
-     * character set or <code>null</code> if not known.
-     *
-     * @param charsetName the character set name to look for.
-     * @return the MIME preferred name or <code>null</code> if not known.
-     */
-    public static String toMimeCharset(String charsetName) {
-        Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
-        if (c != null) {
-            return c.mime;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the canonical Java character set name for the specified
-     * character set or <code>null</code> if not known. This should be
-     * called before doing any conversions using the Java API. NOTE:
-     * you must use {@link #isEncodingSupported(String)} or
-     * {@link #isDecodingSupported(String)} to make sure the returned
-     * Java character set is supported by the current VM.
-     *
-     * @param charsetName the character set name to look for.
-     * @return the canonical Java name or <code>null</code> if not known.
-     */
-    public static String toJavaCharset(String charsetName) {
-        Charset c = charsetMap.get(charsetName.toLowerCase(Locale.US));
-        if (c != null) {
-            return c.canonical;
-        }
-        return null;
-    }
-
-    public static java.nio.charset.Charset getCharset(String charsetName) {
-        String defaultCharset = "ISO-8859-1";
-
-        // Use the default chareset if given charset is null
-        if(charsetName == null) charsetName = defaultCharset;
-
-        try {
-            return java.nio.charset.Charset.forName(charsetName);
-        } catch (IllegalCharsetNameException e) {
-            log.info("Illegal charset " + charsetName + ", fallback to " +
-                    defaultCharset + ": " + e);
-            // Use default charset on exception
-            return java.nio.charset.Charset.forName(defaultCharset);
-        } catch (UnsupportedCharsetException ex) {
-            log.info("Unsupported charset " + charsetName + ", fallback to " +
-                    defaultCharset + ": " + ex);
-            // Use default charset on exception
-            return java.nio.charset.Charset.forName(defaultCharset);
-        }
-
-    }
-    /*
-     * Uncomment the code below and run the main method to regenerate the
-     * Javadoc table above when the known charsets change.
-     */
-
-    /*
-    private static String dumpHtmlTable() {
-        LinkedList l = new LinkedList(Arrays.asList(JAVA_CHARSETS));
-        Collections.sort(l);
-        StringBuffer sb = new StringBuffer();
-        sb.append(" * <table>\n");
-        sb.append(" *     <tr>\n");
-        sb.append(" *         <td>Canonical (Java) name</td>\n");
-        sb.append(" *         <td>MIME preferred</td>\n");
-        sb.append(" *         <td>Aliases</td>\n");
-        sb.append(" *     </tr>\n");
-
-        for (Iterator it = l.iterator(); it.hasNext();) {
-            Charset c = (Charset) it.next();
-            sb.append(" *     <tr>\n");
-            sb.append(" *         <td>" + c.canonical + "</td>\n");
-            sb.append(" *         <td>" + (c.mime == null ? "?" : c.mime)+ "</td>\n");
-            sb.append(" *         <td>");
-            for (int i = 0; c.aliases != null && i < c.aliases.length; i++) {
-                sb.append(c.aliases[i] + " ");
-            }
-            sb.append("</td>\n");
-            sb.append(" *     </tr>\n");
-        }
-        sb.append(" * </table>\n");
-        return sb.toString();
-    }
-
-    public static void main(String[] args) {
-        System.out.println(dumpHtmlTable());
-    }*/
-}
\ No newline at end of file
diff --git a/testapps/Android.mk b/testapps/Android.mk
new file mode 100644
index 0000000..5053e7d
--- /dev/null
+++ b/testapps/Android.mk
@@ -0,0 +1 @@
+include $(call all-subdir-makefiles)
diff --git a/testapps/EmbmsServiceTestApp/Android.mk b/testapps/EmbmsServiceTestApp/Android.mk
new file mode 100644
index 0000000..d8c4493
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Services
+include $(CLEAR_VARS)
+
+src_dirs := src
+res_dirs := res
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_PACKAGE_NAME := EmbmsTestService
+
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+# Uncomment the following line to build the EmbmsTestService into the userdebug build.
+# LOCAL_MODULE_TAGS := debug
+
+include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsServiceTestApp/AndroidManifest.xml b/testapps/EmbmsServiceTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..91d8508
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/AndroidManifest.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+        package="com.android.phone.testapps.embmsmw"
+        coreApp="true">
+  <uses-permission android:name="android.permission.SEND_EMBMS_INTENTS"/>
+
+  <application android:label="EmbmsTestMiddleware">
+    <service android:name="com.android.phone.testapps.embmsmw.EmbmsTestStreamingService"
+            android:launchMode="singleInstance"
+            androidprv:systemUserOnly="true">
+      <intent-filter>
+        <action android:name="android.telephony.action.EmbmsStreaming" />
+      </intent-filter>
+    </service>
+    <service android:name="com.android.phone.testapps.embmsmw.EmbmsSampleDownloadService"
+             android:launchMode="singleInstance"
+             androidprv:systemUserOnly="true">
+      <intent-filter>
+        <action android:name="android.telephony.action.EmbmsDownload" />
+      </intent-filter>
+    </service>
+
+    <receiver android:name="com.android.phone.testapps.embmsmw.SideChannelReceiver"
+              android:enabled="true"
+              android:exported="true"/>
+  </application>
+</manifest>
+
diff --git a/testapps/EmbmsServiceTestApp/res/raw/sheep.png b/testapps/EmbmsServiceTestApp/res/raw/sheep.png
new file mode 100644
index 0000000..650966c
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/raw/sheep.png
Binary files differ
diff --git a/testapps/EmbmsServiceTestApp/res/raw/snake.png b/testapps/EmbmsServiceTestApp/res/raw/snake.png
new file mode 100644
index 0000000..6fa6c8b
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/raw/snake.png
Binary files differ
diff --git a/testapps/EmbmsServiceTestApp/res/raw/suntree.png b/testapps/EmbmsServiceTestApp/res/raw/suntree.png
new file mode 100644
index 0000000..353e1b5
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/raw/suntree.png
Binary files differ
diff --git a/testapps/EmbmsServiceTestApp/res/raw/unicorn.png b/testapps/EmbmsServiceTestApp/res/raw/unicorn.png
new file mode 100644
index 0000000..3146344
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/raw/unicorn.png
Binary files differ
diff --git a/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml b/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..d33abb0
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/res/values/donottranslate_strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+</resources>
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
new file mode 100644
index 0000000..5da8145
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/AppActiveStreams.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceCallback;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+// Tracks the states of the streams for a single (uid, appName, subscriptionId) tuple
+public class AppActiveStreams {
+    // Wrapper for a pair (StreamingServiceCallback, streaming state)
+    private static class StreamCallbackWithState {
+        private final StreamingServiceCallback mCallback;
+        private int mState;
+        private int mMethod;
+        private boolean mMethodSet = false;
+
+        StreamCallbackWithState(StreamingServiceCallback callback, int state, int method) {
+            mCallback = callback;
+            mState = state;
+            mMethod = method;
+        }
+
+        public StreamingServiceCallback getCallback() {
+            return mCallback;
+        }
+
+        public int getState() {
+            return mState;
+        }
+
+        public void setState(int state) {
+            mState = state;
+        }
+
+        public int getMethod() {
+            return mMethod;
+        }
+
+        public void setMethod(int method) {
+            mMethod = method;
+            mMethodSet = true;
+        }
+
+        public boolean isMethodSet() {
+            return mMethodSet;
+        }
+    }
+
+    // Stores the state and callback per service ID.
+    private final Map<String, StreamCallbackWithState> mStreamStates = new HashMap<>();
+    private final FrontendAppIdentifier mAppIdentifier;
+    private final Random mRand = new Random();
+
+    public AppActiveStreams(FrontendAppIdentifier appIdentifier) {
+        mAppIdentifier = appIdentifier;
+    }
+
+    public int getStateForService(String serviceId) {
+        StreamCallbackWithState callbackWithState = mStreamStates.get(serviceId);
+        return callbackWithState == null ?
+                StreamingService.STATE_STOPPED : callbackWithState.getState();
+    }
+
+    public void startStreaming(String serviceId, StreamingServiceCallback callback, int reason) {
+        if (mStreamStates.get(serviceId) != null) {
+            // error - already started
+            return;
+        }
+        for (StreamCallbackWithState c : mStreamStates.values()) {
+            if (c.getCallback() == callback) {
+                // error - callback already in use
+                return;
+            }
+        }
+        mStreamStates.put(serviceId,
+                new StreamCallbackWithState(callback, StreamingService.STATE_STARTED,
+                        StreamingService.UNICAST_METHOD));
+        callback.onStreamStateUpdated(StreamingService.STATE_STARTED, reason);
+        updateStreamingMethod(serviceId);
+    }
+
+    public void stopStreaming(String serviceId, int reason) {
+        StreamCallbackWithState entry = mStreamStates.get(serviceId);
+
+        if (entry != null) {
+            if (entry.getState() != StreamingService.STATE_STOPPED) {
+                entry.setState(StreamingService.STATE_STOPPED);
+                entry.getCallback().onStreamStateUpdated(StreamingService.STATE_STOPPED, reason);
+            }
+        }
+    }
+
+    public void dispose(String serviceId) {
+        mStreamStates.remove(serviceId);
+    }
+
+    private void updateStreamingMethod(String serviceId) {
+        StreamCallbackWithState callbackWithState = mStreamStates.get(serviceId);
+        if (callbackWithState != null) {
+            int oldMethod = callbackWithState.getMethod();
+            int newMethod = oldMethod;
+            if (mRand.nextInt(99) < 50) {
+                newMethod = StreamingService.UNICAST_METHOD;
+            } else {
+                newMethod = StreamingService.BROADCAST_METHOD;
+            }
+            if (newMethod != oldMethod || callbackWithState.isMethodSet()) {
+                callbackWithState.setMethod(newMethod);
+                callbackWithState.getCallback().onStreamMethodUpdated(newMethod);
+            }
+        }
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
new file mode 100644
index 0000000..f1060e3
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsSampleDownloadService.java
@@ -0,0 +1,431 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.telephony.MbmsDownloadManager;
+import android.telephony.mbms.DownloadProgressListener;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileInfo;
+import android.telephony.mbms.FileServiceInfo;
+import android.telephony.mbms.IDownloadProgressListener;
+import android.telephony.mbms.IMbmsDownloadManagerCallback;
+import android.telephony.mbms.MbmsDownloadManagerCallback;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.UriPathPair;
+import android.telephony.mbms.vendor.IMbmsDownloadService;
+import android.telephony.mbms.vendor.MbmsDownloadServiceBase;
+import android.telephony.mbms.vendor.VendorIntents;
+import android.util.Log;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class EmbmsSampleDownloadService extends Service {
+    private static final Set<String> ALLOWED_PACKAGES = new HashSet<String>() {{
+        add("com.android.phone.testapps.embmsdownload");
+    }};
+
+    private static final String LOG_TAG = "EmbmsSampleDownload";
+    private static final long INITIALIZATION_DELAY = 200;
+    private static final long SEND_FILE_SERVICE_INFO_DELAY = 500;
+    private static final long DOWNLOAD_DELAY_MS = 1000;
+    private static final long FILE_SEPARATION_DELAY = 500;
+
+    private final IMbmsDownloadService mBinder = new MbmsDownloadServiceBase() {
+        @Override
+        public int initialize(int subId, MbmsDownloadManagerCallback callback) {
+            int packageUid = Binder.getCallingUid();
+            String[] packageNames = getPackageManager().getPackagesForUid(packageUid);
+            if (packageNames == null) {
+                return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+            }
+            boolean isUidAllowed = Arrays.stream(packageNames).anyMatch(ALLOWED_PACKAGES::contains);
+            if (!isUidAllowed) {
+                return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+            }
+
+            // Do initialization with a bit of a delay to simulate work being done.
+            mHandler.postDelayed(() -> {
+                FrontendAppIdentifier appKey = new FrontendAppIdentifier(packageUid, subId);
+                if (!mAppCallbacks.containsKey(appKey)) {
+                    mAppCallbacks.put(appKey, callback);
+                    ComponentName appReceiver = VendorIntents.getAppReceiverFromUid(
+                            EmbmsSampleDownloadService.this, packageUid);
+                    mAppReceivers.put(appKey, appReceiver);
+                } else {
+                    try {
+                        callback.error(
+                                MbmsException.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
+                    } catch (RemoteException e) {
+                        // ignore, it was an error anyway
+                    }
+                    return;
+                }
+                try {
+                    callback.middlewareReady();
+                } catch (RemoteException e) {
+                    // TODO: call dispose
+                }
+            }, INITIALIZATION_DELAY);
+
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int getFileServices(int subscriptionId,
+                List<String> serviceClasses) throws RemoteException {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+
+            List<FileServiceInfo> serviceInfos =
+                    FileServiceRepository.getInstance(EmbmsSampleDownloadService.this)
+                    .getFileServicesForClasses(serviceClasses);
+
+            mHandler.postDelayed(() -> {
+                try {
+                    IMbmsDownloadManagerCallback appCallback = mAppCallbacks.get(appKey);
+                    appCallback.fileServicesUpdated(serviceInfos);
+                } catch (RemoteException e) {
+                    // TODO: call dispose
+                }
+            }, SEND_FILE_SERVICE_INFO_DELAY);
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int setTempFileRootDirectory(int subscriptionId,
+                String rootDirectoryPath) throws RemoteException {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+
+            if (mActiveDownloadRequests.getOrDefault(appKey, Collections.emptySet()).size() > 0) {
+                return MbmsException.DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT;
+            }
+            mAppTempFileRoots.put(appKey, rootDirectoryPath);
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int download(DownloadRequest downloadRequest, DownloadProgressListener listener) {
+            FrontendAppIdentifier appKey = new FrontendAppIdentifier(
+                    Binder.getCallingUid(), downloadRequest.getSubscriptionId());
+            checkInitialized(appKey);
+
+            mHandler.post(() -> sendFdRequest(downloadRequest, appKey));
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int cancelDownload(DownloadRequest downloadRequest) {
+            FrontendAppIdentifier appKey = new FrontendAppIdentifier(
+                    Binder.getCallingUid(), downloadRequest.getSubscriptionId());
+            checkInitialized(appKey);
+            if (!mActiveDownloadRequests.getOrDefault(
+                    appKey, Collections.emptySet()).contains(downloadRequest)) {
+                return MbmsException.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST;
+            }
+            mActiveDownloadRequests.get(appKey).remove(downloadRequest);
+            return MbmsException.SUCCESS;
+        }
+    };
+
+    private static EmbmsSampleDownloadService sInstance = null;
+
+    private final Map<FrontendAppIdentifier, IMbmsDownloadManagerCallback> mAppCallbacks =
+            new HashMap<>();
+    private final Map<FrontendAppIdentifier, ComponentName> mAppReceivers = new HashMap<>();
+    private final Map<FrontendAppIdentifier, String> mAppTempFileRoots = new HashMap<>();
+    private final Map<FrontendAppIdentifier, Set<DownloadRequest>> mActiveDownloadRequests =
+            new ConcurrentHashMap<>();
+    // A map of app-identifiers to (maps of service-ids to sets of temp file uris in use)
+    private final Map<FrontendAppIdentifier, Map<String, Set<Uri>>> mTempFilesInUse =
+            new ConcurrentHashMap<>();
+
+    private HandlerThread mHandlerThread;
+    private Handler mHandler;
+    private int mDownloadDelayFactor = 1;
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        mHandlerThread = new HandlerThread("EmbmsTestDownloadServiceWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        sInstance = this;
+        return mBinder.asBinder();
+    }
+
+    public static EmbmsSampleDownloadService getInstance() {
+        return sInstance;
+    }
+
+    public void requestCleanup() {
+        // Assume that there's only one app, and do it for all the services.
+        FrontendAppIdentifier registeredAppId = mAppReceivers.keySet().iterator().next();
+        ComponentName appReceiver = mAppReceivers.values().iterator().next();
+        for (FileServiceInfo fileServiceInfo :
+                FileServiceRepository.getInstance(this).getAllFileServices()) {
+            Intent cleanupIntent = new Intent(VendorIntents.ACTION_CLEANUP);
+            cleanupIntent.setComponent(appReceiver);
+            cleanupIntent.putExtra(VendorIntents.EXTRA_SERVICE_INFO, fileServiceInfo);
+            cleanupIntent.putExtra(VendorIntents.EXTRA_TEMP_FILE_ROOT,
+                    mAppTempFileRoots.get(registeredAppId));
+            Set<Uri> tempFilesInUse =
+                    mTempFilesInUse.getOrDefault(registeredAppId, Collections.emptyMap())
+                            .getOrDefault(fileServiceInfo.getServiceId(), Collections.emptySet());
+            cleanupIntent.putExtra(VendorIntents.EXTRA_TEMP_FILES_IN_USE,
+                    new ArrayList<>(tempFilesInUse));
+            sendBroadcast(cleanupIntent);
+        }
+    }
+
+    public void requestExtraTempFiles(FileServiceInfo serviceInfo) {
+        // Assume one app, and do it for the specified service.
+        FrontendAppIdentifier registeredAppId = mAppReceivers.keySet().iterator().next();
+        ComponentName appReceiver = mAppReceivers.values().iterator().next();
+        Intent fdRequestIntent = new Intent(VendorIntents.ACTION_FILE_DESCRIPTOR_REQUEST);
+        fdRequestIntent.putExtra(VendorIntents.EXTRA_SERVICE_INFO, serviceInfo);
+        fdRequestIntent.putExtra(VendorIntents.EXTRA_FD_COUNT, 10);
+        fdRequestIntent.putExtra(VendorIntents.EXTRA_TEMP_FILE_ROOT,
+                mAppTempFileRoots.get(registeredAppId));
+        fdRequestIntent.setComponent(appReceiver);
+
+        sendOrderedBroadcast(fdRequestIntent,
+                null, // receiverPermission
+                new BroadcastReceiver() {
+                    @Override
+                    public void onReceive(Context context, Intent intent) {
+                        int result = getResultCode();
+                        Bundle extras = getResultExtras(false);
+                        Log.i(LOG_TAG, "Received extra temp files. Result " + result);
+                        if (extras != null) {
+                            Log.i(LOG_TAG, "Got "
+                                    + extras.getParcelableArrayList(
+                                    VendorIntents.EXTRA_FREE_URI_LIST).size()
+                                    + " fds");
+                        }
+                    }
+                },
+                null, // scheduler
+                Activity.RESULT_OK,
+                null, // initialData
+                null /* initialExtras */);
+    }
+
+    public void delayDownloads(int factor) {
+        mDownloadDelayFactor = factor;
+    }
+
+    private void sendFdRequest(DownloadRequest request, FrontendAppIdentifier appKey) {
+        int numFds = getNumFdsNeededForRequest(request);
+        // Compose the FILE_DESCRIPTOR_REQUEST_INTENT
+        Intent requestIntent = new Intent(VendorIntents.ACTION_FILE_DESCRIPTOR_REQUEST);
+        requestIntent.putExtra(VendorIntents.EXTRA_SERVICE_INFO,
+                FileServiceRepository.getInstance(this)
+                        .getFileServiceInfoForId(request.getFileServiceId()));
+        requestIntent.putExtra(VendorIntents.EXTRA_FD_COUNT, numFds);
+        requestIntent.putExtra(VendorIntents.EXTRA_TEMP_FILE_ROOT,
+                mAppTempFileRoots.get(appKey));
+        requestIntent.setComponent(mAppReceivers.get(appKey));
+
+        // Send as an ordered broadcast, using a BroadcastReceiver to capture the result
+        // containing UriPathPairs.
+        sendOrderedBroadcast(requestIntent,
+                null, // receiverPermission
+                new BroadcastReceiver() {
+                    @Override
+                    public void onReceive(Context context, Intent intent) {
+                        Bundle resultExtras = getResultExtras(false);
+                        // This delay is to emulate the time it'd usually take to fetch the file
+                        // off the network.
+                        mHandler.postDelayed(
+                                () -> performDownload(request, appKey, resultExtras),
+                                DOWNLOAD_DELAY_MS);
+                    }
+                },
+                null, // scheduler
+                Activity.RESULT_OK,
+                null, // initialData
+                null /* initialExtras */);
+    }
+
+    private void performDownload(DownloadRequest request, FrontendAppIdentifier appKey,
+            Bundle extras) {
+        List<UriPathPair> tempFiles = extras.getParcelableArrayList(
+                VendorIntents.EXTRA_FREE_URI_LIST);
+        List<FileInfo> filesToDownload = FileServiceRepository.getInstance(this)
+                .getFileServiceInfoForId(request.getFileServiceId())
+                .getFiles();
+
+        if (tempFiles.size() != filesToDownload.size()) {
+            Log.w(LOG_TAG, "Different numbers of temp files and files to download...");
+        }
+
+        if (!mActiveDownloadRequests.containsKey(appKey)) {
+            mActiveDownloadRequests.put(appKey, Collections.synchronizedSet(new HashSet<>()));
+        }
+        mActiveDownloadRequests.get(appKey).add(request);
+
+        // Go through the files one-by-one and send them to the frontend app with a delay between
+        // each one.
+        for (int i = 0; i < tempFiles.size(); i++) {
+            if (i >= filesToDownload.size()) {
+                break;
+            }
+            UriPathPair tempFile = tempFiles.get(i);
+            addTempFileInUse(appKey, request.getFileServiceId(),
+                    tempFile.getFilePathUri());
+            FileInfo fileToDownload = filesToDownload.get(i);
+            mHandler.postDelayed(() -> {
+                if (mActiveDownloadRequests.get(appKey) == null ||
+                        !mActiveDownloadRequests.get(appKey).contains(request)) {
+                    return;
+                }
+                downloadSingleFile(appKey, request, tempFile, fileToDownload);
+                removeTempFileInUse(appKey, request.getFileServiceId(),
+                        tempFile.getFilePathUri());
+            }, FILE_SEPARATION_DELAY * i * mDownloadDelayFactor);
+        }
+    }
+
+    private void downloadSingleFile(FrontendAppIdentifier appKey, DownloadRequest request,
+            UriPathPair tempFile, FileInfo fileToDownload) {
+        int result = MbmsDownloadManager.RESULT_SUCCESSFUL;
+        try {
+            // Get the ParcelFileDescriptor for the single temp file we requested
+            ParcelFileDescriptor tempFileFd = getContentResolver().openFileDescriptor(
+                    tempFile.getContentUri(), "rw");
+            OutputStream destinationStream =
+                    new ParcelFileDescriptor.AutoCloseOutputStream(tempFileFd);
+
+            // This is how you get the native fd
+            Log.i(LOG_TAG, "Native fd: " + tempFileFd.getFd());
+
+            int resourceId = FileServiceRepository.getInstance(this)
+                    .getResourceForFileUri(fileToDownload.getUri());
+            // Open the picture we have in our res/raw directory
+            InputStream image = getResources().openRawResource(resourceId);
+
+            // Copy it into the temp file in the app's file space (crudely)
+            byte[] imageBuffer = new byte[image.available()];
+            image.read(imageBuffer);
+            destinationStream.write(imageBuffer);
+            destinationStream.flush();
+        } catch (IOException e) {
+            result = MbmsDownloadManager.RESULT_CANCELLED;
+        }
+
+        // Take a round-trip through the download request serialization to exercise it
+        DownloadRequest request1 = new DownloadRequest.Builder()
+                .setSource(request.getSourceUri())
+                .setSubscriptionId(request.getSubscriptionId())
+                .setServiceId(request.getFileServiceId())
+                .setOpaqueData(request.getOpaqueData())
+                .build();
+
+        Intent downloadResultIntent =
+                new Intent(VendorIntents.ACTION_DOWNLOAD_RESULT_INTERNAL);
+        downloadResultIntent.putExtra(VendorIntents.EXTRA_REQUEST, request1);
+        downloadResultIntent.putExtra(VendorIntents.EXTRA_FINAL_URI,
+                tempFile.getFilePathUri());
+        downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_FILE_INFO, fileToDownload);
+        downloadResultIntent.putExtra(VendorIntents.EXTRA_TEMP_FILE_ROOT,
+                mAppTempFileRoots.get(appKey));
+        ArrayList<Uri> tempFileList = new ArrayList<>(1);
+        tempFileList.add(tempFile.getFilePathUri());
+        downloadResultIntent.getExtras().putParcelableArrayList(
+                VendorIntents.EXTRA_TEMP_LIST, tempFileList);
+        downloadResultIntent.putExtra(MbmsDownloadManager.EXTRA_RESULT, result);
+        downloadResultIntent.setComponent(mAppReceivers.get(appKey));
+
+        sendOrderedBroadcast(downloadResultIntent,
+                null, // receiverPermission
+                new BroadcastReceiver() {
+                    @Override
+                    public void onReceive(Context context, Intent intent) {
+                        int resultCode = getResultCode();
+                        Log.i(LOG_TAG, "Download result ack: " + resultCode);
+                    }
+                },
+                null, // scheduler
+                Activity.RESULT_OK,
+                null, // initialData
+                null /* initialExtras */);
+    }
+
+    private void checkInitialized(FrontendAppIdentifier appKey) {
+        if (!mAppCallbacks.containsKey(appKey)) {
+            throw new IllegalStateException("Not yet initialized");
+        }
+    }
+
+    private int getNumFdsNeededForRequest(DownloadRequest request) {
+        return FileServiceRepository.getInstance(this)
+                .getFileServiceInfoForId(request.getFileServiceId()).getFiles().size();
+    }
+
+    private void addTempFileInUse(FrontendAppIdentifier appKey, String serviceId, Uri tempFileUri) {
+        Map<String, Set<Uri>> tempFileByService = mTempFilesInUse.get(appKey);
+        if (tempFileByService == null) {
+            tempFileByService = new ConcurrentHashMap<>();
+            mTempFilesInUse.put(appKey, tempFileByService);
+        }
+        Set<Uri> tempFilesInUse = tempFileByService.get(serviceId);
+        if (tempFilesInUse == null) {
+            tempFilesInUse = ConcurrentHashMap.newKeySet();
+            tempFileByService.put(serviceId, tempFilesInUse);
+        }
+        tempFilesInUse.add(tempFileUri);
+    }
+
+    private void removeTempFileInUse(FrontendAppIdentifier appKey, String serviceId,
+            Uri tempFileUri) {
+        Set<Uri> tempFilesInUse = mTempFilesInUse.getOrDefault(appKey, Collections.emptyMap())
+                .getOrDefault(serviceId, Collections.emptySet());
+        if (tempFilesInUse.contains(tempFileUri)) {
+            tempFilesInUse.remove(tempFileUri);
+        } else {
+            Log.w(LOG_TAG, "Trying to remove unknown temp file in use " + tempFileUri + " for app" +
+                    appKey + " and service id " + serviceId);
+        }
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
new file mode 100644
index 0000000..3428e38
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/EmbmsTestStreamingService.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.app.Service;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.mbms.IMbmsStreamingManagerCallback;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.MbmsStreamingManagerCallback;
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceCallback;
+import android.telephony.mbms.StreamingServiceInfo;
+import android.telephony.mbms.vendor.IMbmsStreamingService;
+import android.telephony.mbms.vendor.MbmsStreamingServiceBase;
+import android.util.Log;
+
+import com.android.internal.os.SomeArgs;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class EmbmsTestStreamingService extends Service {
+    private static final Set<String> ALLOWED_PACKAGES = new HashSet<String>() {{
+        add("com.android.phone.testapps.embmsfrontend");
+    }};
+
+    private static final String TAG = "EmbmsTestStreaming";
+
+    private static final long INITIALIZATION_DELAY = 200;
+    private static final long SEND_SERVICE_LIST_DELAY = 300;
+    private static final long START_STREAMING_DELAY = 500;
+
+    private static final int SEND_STREAMING_SERVICES_LIST = 1;
+
+    private final Map<FrontendAppIdentifier, MbmsStreamingManagerCallback> mAppCallbacks =
+            new HashMap<>();
+
+    private HandlerThread mHandlerThread;
+    private Handler mHandler;
+    private Handler.Callback mWorkerCallback = (msg) -> {
+        switch (msg.what) {
+            case SEND_STREAMING_SERVICES_LIST:
+                SomeArgs args = (SomeArgs) msg.obj;
+                FrontendAppIdentifier appKey = (FrontendAppIdentifier) args.arg1;
+                List<StreamingServiceInfo> services = (List) args.arg2;
+                MbmsStreamingManagerCallback appCallback = mAppCallbacks.get(appKey);
+                if (appCallback != null) {
+                    appCallback.onStreamingServicesUpdated(services);
+                }
+                break;
+        }
+        return true;
+    };
+
+    private final MbmsStreamingServiceBase mBinder = new MbmsStreamingServiceBase() {
+        @Override
+        public int initialize(MbmsStreamingManagerCallback callback, int subId) {
+            int packageUid = Binder.getCallingUid();
+            String[] packageNames = getPackageManager().getPackagesForUid(packageUid);
+            if (packageNames == null) {
+                return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+            }
+            boolean isUidAllowed = Arrays.stream(packageNames).anyMatch(ALLOWED_PACKAGES::contains);
+            if (!isUidAllowed) {
+                return MbmsException.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+            }
+
+            mHandler.postDelayed(() -> {
+                FrontendAppIdentifier appKey = new FrontendAppIdentifier(packageUid, subId);
+                if (!mAppCallbacks.containsKey(appKey)) {
+                    mAppCallbacks.put(appKey, callback);
+                } else {
+                    callback.onError(
+                            MbmsException.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
+                    return;
+                }
+                callback.onMiddlewareReady();
+            }, INITIALIZATION_DELAY);
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int getStreamingServices(int subscriptionId, List<String> serviceClasses) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+
+            List<StreamingServiceInfo> serviceInfos =
+                    StreamingServiceRepository.getStreamingServicesForClasses(serviceClasses);
+
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = appKey;
+            args.arg2 = serviceInfos;
+
+            mHandler.removeMessages(SEND_STREAMING_SERVICES_LIST);
+            mHandler.sendMessageDelayed(
+                    mHandler.obtainMessage(SEND_STREAMING_SERVICES_LIST, args),
+                    SEND_SERVICE_LIST_DELAY);
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public int startStreaming(int subscriptionId, String serviceId,
+                StreamingServiceCallback callback) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+            checkServiceExists(serviceId);
+
+            if (StreamStateTracker.getStreamingState(appKey, serviceId) ==
+                    StreamingService.STATE_STARTED) {
+                return MbmsException.StreamingErrors.ERROR_DUPLICATE_START_STREAM;
+            }
+
+            mHandler.postDelayed(
+                    () -> StreamStateTracker.startStreaming(appKey, serviceId, callback,
+                            StreamingService.REASON_BY_USER_REQUEST),
+                    START_STREAMING_DELAY);
+            return MbmsException.SUCCESS;
+        }
+
+        @Override
+        public Uri getPlaybackUri(int subscriptionId, String serviceId) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+            checkServiceExists(serviceId);
+
+            Uri streamingUri = StreamingServiceRepository.getUriForService(serviceId);
+            if (streamingUri == null) {
+                throw new IllegalArgumentException("Invalid service ID");
+            }
+            return streamingUri;
+        }
+
+        @Override
+        public void stopStreaming(int subscriptionId, String serviceId) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+            checkServiceExists(serviceId);
+
+            mHandler.post(() -> StreamStateTracker.stopStreaming(appKey, serviceId,
+                    StreamingService.REASON_BY_USER_REQUEST));
+        }
+
+        @Override
+        public void disposeStream(int subscriptionId, String serviceId) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+            checkServiceExists(serviceId);
+
+            Log.i(TAG, "Disposing of stream " + serviceId);
+            StreamStateTracker.dispose(appKey, serviceId);
+        }
+
+        @Override
+        public void dispose(int subscriptionId) {
+            FrontendAppIdentifier appKey =
+                    new FrontendAppIdentifier(Binder.getCallingUid(), subscriptionId);
+            checkInitialized(appKey);
+
+            Log.i(TAG, "Disposing app with uid " + Binder.getCallingUid());
+            StreamStateTracker.disposeAll(appKey);
+            mAppCallbacks.remove(appKey);
+        }
+
+        @Override
+        public void onAppCallbackDied(int uid, int subscriptionId) {
+            FrontendAppIdentifier appKey = new FrontendAppIdentifier(uid, subscriptionId);
+
+            Log.i(TAG, "Disposing app " + appKey + " due to binder death");
+            StreamStateTracker.disposeAll(appKey);
+            mAppCallbacks.remove(appKey);
+        }
+    };
+
+    @Override
+    public void onDestroy() {
+        super.onCreate();
+        mHandlerThread.quitSafely();
+        logd("EmbmsTestStreamingService onDestroy");
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        logd("EmbmsTestStreamingService onBind");
+        mHandlerThread = new HandlerThread("EmbmsTestStreamingServiceWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper(), mWorkerCallback);
+        return mBinder;
+    }
+
+    private static void logd(String s) {
+        Log.d(TAG, s);
+    }
+
+    private void checkInitialized(FrontendAppIdentifier appKey) {
+        if (!mAppCallbacks.containsKey(appKey)) {
+            throw new IllegalStateException("Not yet initialized");
+        }
+    }
+
+    private void checkServiceExists(String serviceId) {
+        if (StreamingServiceRepository.getStreamingServiceInfoForId(serviceId) == null) {
+            throw new IllegalArgumentException("Invalid service ID");
+        }
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FileServiceRepository.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FileServiceRepository.java
new file mode 100644
index 0000000..7b8cbd5
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FileServiceRepository.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.content.Context;
+import android.net.Uri;
+import android.telephony.mbms.FileInfo;
+import android.telephony.mbms.FileServiceInfo;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class FileServiceRepository {
+    private int sServiceIdCounter = 0;
+    private final Map<String, FileServiceInfo> mIdToServiceInfo = new HashMap<>();
+    private final Map<Uri, Integer> mFileUriToResource = new HashMap<>();
+
+    private static final String FILE_DOWNLOAD_SCHEME = "filedownload";
+    private static final String FILE_AUTHORITY = "com.android.phone.testapps";
+
+    private static FileServiceRepository sInstance;
+    public static FileServiceRepository getInstance(Context context) {
+        if (sInstance == null) {
+            sInstance = new FileServiceRepository(context);
+        }
+        return sInstance;
+    }
+
+    private final Context mContext;
+
+    private FileServiceRepository(Context context) {
+        mContext = context;
+        Uri sunAndTree = initFile("sunAndTree.png", R.raw.suntree);
+        Uri snake = initFile("animals/snake.png", R.raw.snake);
+        Uri unicorn = initFile("animals/unicorn.png", R.raw.unicorn);
+        Uri sheep = initFile("animals/sheep.png", R.raw.sheep);
+
+        createFileService("Class1", sunAndTree);
+        createFileService("Class1", snake, unicorn, sheep);
+    }
+
+    public List<FileServiceInfo> getFileServicesForClasses(
+            List<String> serviceClasses) {
+        return mIdToServiceInfo.values().stream()
+                .filter((info) -> serviceClasses.contains(info.getClassName()))
+                .collect(Collectors.toList());
+    }
+
+    public List<FileServiceInfo> getAllFileServices() {
+        return new ArrayList<>(mIdToServiceInfo.values());
+    }
+
+    public FileServiceInfo getFileServiceInfoForId(String serviceId) {
+        return mIdToServiceInfo.getOrDefault(serviceId, null);
+    }
+
+    public int getResourceForFileUri(Uri uri) {
+        return mFileUriToResource.getOrDefault(uri, 0);
+    }
+
+    private void createFileService(String className, Uri... filesIncluded) {
+        sServiceIdCounter++;
+        String id = "FileServiceId[" + sServiceIdCounter + "]";
+        List<Locale> locales = new ArrayList<Locale>(2) {{
+            add(Locale.US);
+            add(Locale.UK);
+        }};
+        Map<Locale, String> localeDict = new HashMap<Locale, String>() {{
+            put(Locale.US, "File Source " + sServiceIdCounter);
+            put(Locale.UK, "File Source with extra vowels " + sServiceIdCounter);
+        }};
+        List<FileInfo> fileInfos = Arrays.stream(filesIncluded)
+                .map(this::getFileInfoForUri)
+                .collect(Collectors.toList());
+        FileServiceInfo info = new FileServiceInfo(localeDict, className, locales,
+                id, new Date(System.currentTimeMillis() - 10000),
+                new Date(System.currentTimeMillis() + 10000),
+                fileInfos);
+        mIdToServiceInfo.put(id, info);
+    }
+
+    private Uri initFile(String relPath, int resource) {
+        Uri uri = new Uri.Builder()
+                .scheme(FILE_DOWNLOAD_SCHEME)
+                .authority(FILE_AUTHORITY)
+                .path(relPath)
+                .build();
+        mFileUriToResource.put(uri, resource);
+        return uri;
+    }
+
+    private FileInfo getFileInfoForUri(Uri uri) {
+        if (!mFileUriToResource.containsKey(uri)) {
+            return null;
+        }
+
+        return new FileInfo(uri, "application/octet-stream");
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FrontendAppIdentifier.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FrontendAppIdentifier.java
new file mode 100644
index 0000000..53237ac
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/FrontendAppIdentifier.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+public class FrontendAppIdentifier {
+    private final int uid;
+    private final int subscriptionId;
+
+    public FrontendAppIdentifier(int uid, int subscriptionId) {
+        this.uid = uid;
+        this.subscriptionId = subscriptionId;
+    }
+
+    public int getUid() {
+        return uid;
+    }
+
+    public int getSubscriptionId() {
+        return subscriptionId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        FrontendAppIdentifier that = (FrontendAppIdentifier) o;
+
+        if (uid != that.uid) {
+            return false;
+        }
+        return this.subscriptionId == that.subscriptionId;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = uid;
+        result = 31 * result + subscriptionId;
+        return result;
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java
new file mode 100644
index 0000000..816921d
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/SideChannelReceiver.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.mbms.FileServiceInfo;
+import android.util.Log;
+
+/**
+ * Class for triggering artificial events from the frontend app. These would normally not come
+ * from the frontend app in a real embms implementation.
+ */
+public class SideChannelReceiver extends BroadcastReceiver {
+    public static final String ACTION_TRIGGER_CLEANUP =
+            "com.android.phone.testapps.embmsmw.TRIGGER_CLEANUP";
+    public static final String ACTION_REQUEST_SPURIOUS_TEMP_FILES =
+            "com.android.phone.testapps.embmsmw.REQUEST_SPURIOUS_TEMP_FILES";
+    public static final String ACTION_DELAY_DOWNLOAD =
+            "com.android.phone.testapps.embmsmw.DELAY_DOWNLOAD";
+
+    public static final String EXTRA_SERVICE_INFO =
+            "com.android.phone.testapps.embmsmw.SERVICE_INFO";
+    public static final String EXTRA_DELAY_FACTOR =
+            "com.android.phone.testapps.embmsmw.DELAY_FACTOR";
+
+    private static final String LOG_TAG = "EmbmsSampleMwSC";
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        EmbmsSampleDownloadService downloadService = EmbmsSampleDownloadService.getInstance();
+        if (downloadService == null) {
+            Log.w(LOG_TAG, "don't have instance of dl service");
+            return;
+        }
+        switch (intent.getAction()) {
+            case ACTION_TRIGGER_CLEANUP:
+                downloadService.requestCleanup();
+                break;
+            case ACTION_REQUEST_SPURIOUS_TEMP_FILES:
+                FileServiceInfo serviceInfo = intent.getParcelableExtra(EXTRA_SERVICE_INFO);
+                downloadService.requestExtraTempFiles(serviceInfo);
+                break;
+            case ACTION_DELAY_DOWNLOAD:
+                // Increase download latency by a certain factor
+                downloadService.delayDownloads(intent.getIntExtra(EXTRA_DELAY_FACTOR, 1));
+                break;
+        }
+    }
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java
new file mode 100644
index 0000000..6fde02b
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamStateTracker.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceCallback;
+import android.util.Log;
+
+import java.util.HashMap;
+import java.util.Map;
+
+// Singleton that keeps track of streaming states for all apps using the middleware.
+public class StreamStateTracker {
+    private static final String LOG_TAG = "MbmsStreamStateTracker";
+
+    private static final Map<FrontendAppIdentifier, AppActiveStreams>
+            sPerAppStreamStates = new HashMap<>();
+
+    public static int getStreamingState(FrontendAppIdentifier appIdentifier, String serviceId) {
+        AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
+        if (appStreams == null) {
+            return StreamingService.STATE_STOPPED;
+        }
+        return appStreams.getStateForService(serviceId);
+    }
+
+    public static void startStreaming(FrontendAppIdentifier appIdentifier, String serviceId,
+            StreamingServiceCallback callback, int reason) {
+        AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
+        if (appStreams == null) {
+            appStreams = new AppActiveStreams(appIdentifier);
+            sPerAppStreamStates.put(appIdentifier, appStreams);
+        }
+
+        appStreams.startStreaming(serviceId, callback, reason);
+    }
+
+    public static void stopStreaming(FrontendAppIdentifier appIdentifier, String serviceId,
+            int reason) {
+        Log.i(LOG_TAG, "Stopping stream " + serviceId);
+        AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
+        if (appStreams == null) {
+            // It was never started, so don't bother stopping.
+            return;
+        }
+        appStreams.stopStreaming(serviceId, reason);
+    }
+
+    public static void dispose(FrontendAppIdentifier appIdentifier, String serviceId) {
+        AppActiveStreams appStreams = sPerAppStreamStates.get(appIdentifier);
+        if (appStreams == null) {
+            // We have no record of this app, so we can just move on.
+            return;
+        }
+        appStreams.dispose(serviceId);
+    }
+
+    public static void disposeAll(FrontendAppIdentifier appIdentifier) {
+        sPerAppStreamStates.remove(appIdentifier);
+    }
+
+    // Do not instantiate
+    private StreamStateTracker() {}
+}
diff --git a/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamingServiceRepository.java b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamingServiceRepository.java
new file mode 100644
index 0000000..677f39b
--- /dev/null
+++ b/testapps/EmbmsServiceTestApp/src/com/android/phone/testapps/embmsmw/StreamingServiceRepository.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsmw;
+
+import android.net.Uri;
+import android.telephony.mbms.StreamingServiceInfo;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class StreamingServiceRepository {
+    private static final String STREAMING_SCHEME = "stream";
+    private static final String STREAMING_URI_SSP_PREFIX = "identifier/";
+
+    private static int sServiceIdCounter = 0;
+    private static final Map<String, StreamingServiceInfo> sIdToServiceInfo =
+            new HashMap<>();
+    private static final Map<String, Uri> sIdToStreamingUri = new HashMap<>();
+
+    static {
+        fetchStreamingServices();
+    }
+
+    public static List<StreamingServiceInfo> getStreamingServicesForClasses(
+            List<String> serviceClasses) {
+        return sIdToServiceInfo.values().stream()
+                .filter((info) -> serviceClasses.contains(info.getClassName()))
+                .collect(Collectors.toList());
+    }
+
+    public static Uri getUriForService(String serviceId) {
+        if (sIdToStreamingUri.containsKey(serviceId)) {
+            return sIdToStreamingUri.get(serviceId);
+        }
+        return null;
+    }
+
+    public static StreamingServiceInfo getStreamingServiceInfoForId(String serviceId) {
+        return sIdToServiceInfo.getOrDefault(serviceId, null);
+    }
+
+    private static void createStreamingService(String className) {
+        sServiceIdCounter++;
+        String id = "StreamingServiceId[" + sServiceIdCounter + "]";
+        Map<Locale, String> localeDict = new HashMap<Locale, String>() {{
+                put(Locale.US, "Entertainment Source " + sServiceIdCounter);
+                put(Locale.CANADA, "Entertainment Source, eh?" + sServiceIdCounter);
+        }};
+        List<Locale> locales = new ArrayList<Locale>() {{
+                add(Locale.CANADA);
+                add(Locale.US);
+        }};
+        StreamingServiceInfo info = new StreamingServiceInfo(localeDict, className, locales,
+                id, new Date(System.currentTimeMillis() - 10000),
+                new Date(System.currentTimeMillis() + 10000));
+        sIdToServiceInfo.put(id, info);
+        sIdToStreamingUri.put(id, Uri.fromParts(STREAMING_SCHEME,
+                STREAMING_URI_SSP_PREFIX + sServiceIdCounter,
+                null));
+    }
+
+    private static void fetchStreamingServices() {
+        createStreamingService("Class1");
+        createStreamingService("Class2");
+        createStreamingService("Class3");
+        createStreamingService("Class4");
+        createStreamingService("Class5");
+        createStreamingService("Class6");
+    }
+
+    // Do not instantiate
+    private StreamingServiceRepository() {}
+}
diff --git a/testapps/EmbmsTestDownloadApp/Android.mk b/testapps/EmbmsTestDownloadApp/Android.mk
new file mode 100644
index 0000000..080e5b0
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/Android.mk
@@ -0,0 +1,21 @@
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Download frontend
+include $(CLEAR_VARS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+        android-support-v7-recyclerview \
+        android-support-v4
+
+src_dirs := src
+res_dirs := res
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_PACKAGE_NAME := EmbmsTestDownloadApp
+
+LOCAL_CERTIFICATE := platform
+LOCAL_MODULE_TAGS := tests
+
+include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsTestDownloadApp/AndroidManifest.xml b/testapps/EmbmsTestDownloadApp/AndroidManifest.xml
new file mode 100644
index 0000000..e93cd19
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/AndroidManifest.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.android.phone.testapps.embmsdownload">
+    <application android:label="EmbmsTestDownloadApp">
+        <activity
+            android:name=".EmbmsTestDownloadApp"
+            android:label="EmbmsDownloadFrontend">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <!-- This is the receiver defined by the MBMS api. -->
+        <receiver
+            android:name="android.telephony.mbms.MbmsDownloadReceiver"
+            android:permission="android.permission.SEND_EMBMS_INTENTS"
+            android:enabled="true"
+            android:exported="true">
+        </receiver>
+
+        <!-- This is the receiver defined by app to receive the download-done intent that was
+         passed into DownloadRequest. -->
+        <receiver
+            android:name="com.android.phone.testapps.embmsdownload.DownloadCompletionReceiver"
+            android:enabled="true">
+        </receiver>
+
+        <!-- This is the provider that apps must declare in their manifest. It allows the
+        middleware to obtain file descriptors to temp files in the app's file space -->
+        <!-- grantUriPermissions must be set to true -->
+        <provider
+            android:name="android.telephony.mbms.MbmsTempFileProvider"
+            android:authorities="com.android.phone.testapps.embmsdownload"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <!-- This is a mandatory piece of metadata that contains the directory where temp
+            files should be put. It should be a relative path from Context.getFilesDir() or from
+            Context.getExternalStorageDir(null), depending on the value of the
+            use-external-storage metadata. -->
+            <meta-data android:name="temp-file-path" android:value="/mbms-temp/"/>
+
+            <!-- This tells the provider whether to use the sdcard partition for the temp files or
+            not. -->
+            <meta-data android:name="use-external-storage" android:value="false"/>
+        </provider>
+
+        <!-- This is a mandatory piece of metadata that contains the authority string for the
+        provider declared above -->
+        <meta-data
+            android:name="mbms-file-provider-authority"
+            android:value="com.android.phone.testapps.embmsdownload"/>
+    </application>
+</manifest>
+
diff --git a/testapps/EmbmsTestDownloadApp/res/layout/activity_main.xml b/testapps/EmbmsTestDownloadApp/res/layout/activity_main.xml
new file mode 100644
index 0000000..076bc37
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/res/layout/activity_main.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<ScrollView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/scrolling_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+    <LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+        <TextView
+            android:id="@+id/progress_window"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/downloaded_images"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:scrollbars="horizontal"
+            android:horizontalSpacing="10dp"
+            android:gravity="center"/>
+        <GridLayout
+            xmlns:android="http://schemas.android.com/apk/res/android"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:columnCount="2"
+            android:orientation="vertical" >
+            <Button
+                android:id="@+id/bind_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="0"
+                android:layout_column="0"
+                android:text="@string/bind_button" />
+            <Button
+                android:id="@+id/set_temp_root_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="0"
+                android:layout_column="1"
+                android:text="@string/set_temp_root_button" />
+            <Button
+                android:id="@+id/get_file_services_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="1"
+                android:layout_column="0"
+                android:text="@string/get_file_services_button" />
+            <Button
+                android:id="@+id/request_dl_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="1"
+                android:layout_column="1"
+                android:text="@string/request_dl_button" />
+            <Button
+                android:id="@+id/request_cleanup_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="2"
+                android:layout_column="0"
+                android:text="@string/request_cleanup_button" />
+            <Button
+                android:id="@+id/request_spurious_temp_files_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="2"
+                android:layout_column="1"
+                android:text="@string/request_spurious_temp_files_button" />
+            <Button
+                android:id="@+id/delay_download_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="3"
+                android:layout_column="0"
+                android:text="@string/delay_download_button" />
+            <NumberPicker
+                android:id="@+id/delay_factor"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="3"
+                android:layout_column="1"/>
+            <Button
+                android:id="@+id/cancel_download_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_row="4"
+                android:layout_column="0"
+                android:text="@string/cancel_download_button" />
+            <Spinner
+                android:id="@+id/active_downloads"
+                android:layout_row="4"
+                android:layout_column="1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"/>
+        </GridLayout>
+
+        <Spinner
+            android:id="@+id/available_file_services"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </LinearLayout>
+</ScrollView>
\ No newline at end of file
diff --git a/testapps/EmbmsTestDownloadApp/res/values/donottranslate_strings.xml b/testapps/EmbmsTestDownloadApp/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..13d9fc2
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/res/values/donottranslate_strings.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+    <string name="bind_button">Bind</string>
+    <string name="request_dl_button">Request DL</string>
+    <string name="get_file_services_button">Fetch file services</string>
+    <string name="set_temp_root_button">Set temp file root</string>
+    <string name="request_cleanup_button">Cleanup</string>
+    <string name="request_spurious_temp_files_button">Request more temp files</string>
+    <string name="delay_download_button">Delay download</string>
+    <string name="cancel_download_button">Cancel download</string>
+</resources>
\ No newline at end of file
diff --git a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java
new file mode 100644
index 0000000..ef9e672
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/DownloadCompletionReceiver.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsdownload;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.telephony.MbmsDownloadManager;
+
+public class DownloadCompletionReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (EmbmsTestDownloadApp.DOWNLOAD_DONE_ACTION.equals(intent.getAction())) {
+            int result = intent.getIntExtra(MbmsDownloadManager.EXTRA_RESULT,
+                    MbmsDownloadManager.RESULT_CANCELLED);
+            if (result != MbmsDownloadManager.RESULT_SUCCESSFUL) {
+                EmbmsTestDownloadApp.getInstance().onDownloadFailed(result);
+            }
+            Uri completedFile = intent.getParcelableExtra(
+                    MbmsDownloadManager.EXTRA_COMPLETED_FILE_URI);
+            EmbmsTestDownloadApp.getInstance().onDownloadDone(completedFile);
+        }
+    }
+}
diff --git a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
new file mode 100644
index 0000000..80045ce
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/EmbmsTestDownloadApp.java
@@ -0,0 +1,381 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsdownload;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.telephony.MbmsDownloadManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileServiceInfo;
+import android.telephony.mbms.MbmsDownloadManagerCallback;
+import android.telephony.mbms.MbmsException;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.NumberPicker;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class EmbmsTestDownloadApp extends Activity {
+    private static final String LOG_TAG = "EmbmsDownloadApp";
+
+    public static final String DOWNLOAD_DONE_ACTION =
+            "com.android.phone.testapps.embmsdownload.DOWNLOAD_DONE";
+
+    private static final String CUSTOM_EMBMS_TEMP_FILE_LOCATION = "customEmbmsTempFiles";
+
+    private static final String FILE_AUTHORITY = "com.android.phone.testapps";
+    private static final String FILE_DOWNLOAD_SCHEME = "filedownload";
+
+    private static EmbmsTestDownloadApp sInstance;
+
+    private static final class ImageAdapter
+            extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
+        static class ImageViewHolder extends RecyclerView.ViewHolder {
+            public ImageView imageView;
+            public ImageViewHolder(ImageView view) {
+                super(view);
+                imageView = view;
+            }
+        }
+
+        private final List<Uri> mImageUris = new ArrayList<>();
+
+        @Override
+        public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            ImageView view = new ImageView(parent.getContext());
+            view.setAdjustViewBounds(true);
+            view.setMaxHeight(500);
+            return new ImageViewHolder(view);
+        }
+
+        @Override
+        public void onBindViewHolder(ImageViewHolder holder, int position) {
+            holder.imageView.setImageURI(mImageUris.get(position));
+        }
+
+        @Override
+        public int getItemCount() {
+            return mImageUris.size();
+        }
+
+        public void addImage(Uri uri) {
+            mImageUris.add(uri);
+            notifyDataSetChanged();
+        }
+    }
+
+    private final class FileServiceInfoAdapter
+            extends ArrayAdapter<FileServiceInfo> {
+        public FileServiceInfoAdapter(Context context) {
+            super(context, android.R.layout.simple_spinner_item);
+            setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            FileServiceInfo info = getItem(position);
+            TextView result = new TextView(EmbmsTestDownloadApp.this);
+            result.setText(info.getNames().get(info.getLocales().get(0)));
+            return result;
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            FileServiceInfo info = getItem(position);
+            TextView result = new TextView(EmbmsTestDownloadApp.this);
+            String text = "name="
+                    + info.getNames().get(info.getLocales().get(0))
+                    + ", "
+                    + "numFiles="
+                    + info.getFiles().size();
+            result.setText(text);
+            return result;
+        }
+
+        public void update(List<FileServiceInfo> services) {
+            clear();
+            addAll(services);
+        }
+    }
+
+    private final class DownloadRequestAdapter
+            extends ArrayAdapter<DownloadRequest> {
+        public DownloadRequestAdapter(Context context) {
+            super(context, android.R.layout.simple_spinner_item);
+            setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            DownloadRequest request = getItem(position);
+            TextView result = new TextView(EmbmsTestDownloadApp.this);
+            result.setText(request.getSourceUri().toSafeString());
+            return result;
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            return getView(position, convertView, parent);
+        }
+    }
+
+
+    private MbmsDownloadManagerCallback mCallback = new MbmsDownloadManagerCallback() {
+        @Override
+        public void error(int errorCode, String message) {
+            runOnUiThread(() -> Toast.makeText(EmbmsTestDownloadApp.this,
+                    "Error " + errorCode + ": " + message, Toast.LENGTH_SHORT).show());
+        }
+
+        @Override
+        public void fileServicesUpdated(List<FileServiceInfo> services) {
+            EmbmsTestDownloadApp.this.runOnUiThread(() ->
+                    Toast.makeText(EmbmsTestDownloadApp.this,
+                            "Got services length " + services.size(),
+                            Toast.LENGTH_SHORT).show());
+            updateFileServicesList(services);
+        }
+
+        @Override
+        public void middlewareReady() {
+            runOnUiThread(() -> Toast.makeText(EmbmsTestDownloadApp.this,
+                    "Initialization done", Toast.LENGTH_SHORT).show());
+        }
+    };
+
+    private MbmsDownloadManager mDownloadManager;
+    private Handler mHandler;
+    private HandlerThread mHandlerThread;
+    private FileServiceInfoAdapter mFileServiceInfoAdapter;
+    private DownloadRequestAdapter mDownloadRequestAdapter;
+    private ImageAdapter mImageAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        sInstance = this;
+        mHandlerThread = new HandlerThread("EmbmsDownloadWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mFileServiceInfoAdapter = new FileServiceInfoAdapter(this);
+        mDownloadRequestAdapter = new DownloadRequestAdapter(this);
+
+        RecyclerView downloadedImages = (RecyclerView) findViewById(R.id.downloaded_images);
+        downloadedImages.setLayoutManager(
+                new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
+        mImageAdapter = new ImageAdapter();
+        downloadedImages.setAdapter(mImageAdapter);
+
+        Button bindButton = (Button) findViewById(R.id.bind_button);
+        bindButton.setOnClickListener((view) -> {
+            try {
+                mDownloadManager = MbmsDownloadManager.create(this, mCallback);
+            } catch (MbmsException e) {
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "caught MbmsException: " + e.getErrorCode(), Toast.LENGTH_SHORT).show();
+            }
+        });
+
+        Button setTempFileRootButton = (Button) findViewById(R.id.set_temp_root_button);
+        setTempFileRootButton.setOnClickListener((view) -> {
+            File downloadDir = new File(EmbmsTestDownloadApp.this.getFilesDir(),
+                    CUSTOM_EMBMS_TEMP_FILE_LOCATION);
+            downloadDir.mkdirs();
+            try {
+                mDownloadManager.setTempFileRootDirectory(downloadDir);
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "temp file root set to " + downloadDir, Toast.LENGTH_SHORT).show();
+            } catch (MbmsException e) {
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "caught MbmsException: " + e.getErrorCode(), Toast.LENGTH_SHORT).show();
+            }
+        });
+
+        Button getFileServicesButton = (Button) findViewById(R.id.get_file_services_button);
+        getFileServicesButton.setOnClickListener((view) -> mHandler.post(() -> {
+            try {
+                mDownloadManager.getFileServices(Collections.singletonList("Class1"));
+            } catch (MbmsException e) {
+                runOnUiThread(() -> Toast.makeText(EmbmsTestDownloadApp.this,
+                        "caught MbmsException: " + e.getErrorCode(), Toast.LENGTH_SHORT).show());
+            }
+        }));
+
+        final Spinner serviceSelector = (Spinner) findViewById(R.id.available_file_services);
+        serviceSelector.setAdapter(mFileServiceInfoAdapter);
+
+        Button requestDlButton = (Button) findViewById(R.id.request_dl_button);
+        requestDlButton.setOnClickListener((view) ->  {
+            if (mDownloadManager == null) {
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "No download service bound", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            FileServiceInfo serviceInfo =
+                    (FileServiceInfo) serviceSelector.getSelectedItem();
+            if (serviceInfo == null) {
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "No file service selected", Toast.LENGTH_SHORT).show();
+                return;
+            }
+
+            performDownload(serviceInfo);
+        });
+
+        Button requestCleanupButton = (Button) findViewById(R.id.request_cleanup_button);
+        requestCleanupButton.setOnClickListener((view) ->
+                SideChannel.triggerCleanup(EmbmsTestDownloadApp.this));
+
+        Button requestSpuriousTempFilesButton =
+                (Button) findViewById(R.id.request_spurious_temp_files_button);
+        requestSpuriousTempFilesButton.setOnClickListener((view) ->
+                SideChannel.requestSpuriousTempFiles(EmbmsTestDownloadApp.this,
+                        (FileServiceInfo) serviceSelector.getSelectedItem()));
+
+        NumberPicker downloadDelayPicker = (NumberPicker) findViewById(R.id.delay_factor);
+        downloadDelayPicker.setMinValue(1);
+        downloadDelayPicker.setMaxValue(50);
+
+        Button delayDownloadButton = (Button) findViewById(R.id.delay_download_button);
+        delayDownloadButton.setOnClickListener((view) ->
+                SideChannel.delayDownloads(EmbmsTestDownloadApp.this,
+                        downloadDelayPicker.getValue()));
+
+        final Spinner downloadRequestSpinner = (Spinner) findViewById(R.id.active_downloads);
+        downloadRequestSpinner.setAdapter(mDownloadRequestAdapter);
+
+        Button cancelDownloadButton = (Button) findViewById(R.id.cancel_download_button);
+        cancelDownloadButton.setOnClickListener((view) -> {
+            if (mDownloadManager == null) {
+                Toast.makeText(EmbmsTestDownloadApp.this,
+                        "No download service bound", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            try {
+                DownloadRequest request =
+                        (DownloadRequest) downloadRequestSpinner.getSelectedItem();
+                mDownloadManager.cancelDownload(request);
+                mDownloadRequestAdapter.remove(request);
+            } catch (MbmsException e) {
+                runOnUiThread(() -> Toast.makeText(EmbmsTestDownloadApp.this,
+                        "caught MbmsException: " + e.getErrorCode(), Toast.LENGTH_SHORT).show());
+            }
+        });
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mHandlerThread.quit();
+        sInstance = null;
+    }
+
+    public static EmbmsTestDownloadApp getInstance() {
+        return sInstance;
+    }
+
+    public void onDownloadFailed(int result) {
+        runOnUiThread(() ->
+                Toast.makeText(this, "Download failed: " + result, Toast.LENGTH_SHORT).show());
+    }
+
+    // TODO: assumes that process does not get killed. Replace with more robust alternative
+    public void onDownloadDone(Uri fileLocation) {
+        Log.i(LOG_TAG, "File completed: " + fileLocation);
+        File imageFile = new File(fileLocation.getPath());
+        if (!imageFile.exists()) {
+            Toast.makeText(this, "Download done but destination doesn't exist", Toast.LENGTH_SHORT)
+                    .show();
+            return;
+        }
+        mImageAdapter.addImage(fileLocation);
+    }
+
+    private void updateFileServicesList(List<FileServiceInfo> services) {
+        runOnUiThread(() -> mFileServiceInfoAdapter.update(services));
+    }
+
+    private void performDownload(FileServiceInfo info) {
+        File destination = null;
+        Uri.Builder sourceUriBuilder = new Uri.Builder()
+                .scheme(FILE_DOWNLOAD_SCHEME)
+                .authority(FILE_AUTHORITY);
+        try {
+            if (info.getFiles().size() > 1) {
+                destination = new File(getFilesDir(), "images/animals/").getCanonicalFile();
+                destination.mkdirs();
+                clearDirectory(destination);
+                sourceUriBuilder.path("/*");
+            } else {
+                destination = new File(getFilesDir(), "images/image.png").getCanonicalFile();
+                destination.delete();
+                sourceUriBuilder.path("/image.png");
+            }
+        } catch (IOException e) {
+            // ignore
+        }
+
+        Intent completionIntent = new Intent(DOWNLOAD_DONE_ACTION);
+        completionIntent.setClass(this, DownloadCompletionReceiver.class);
+
+        DownloadRequest request = new DownloadRequest.Builder()
+                .setServiceInfo(info)
+                .setSource(sourceUriBuilder.build())
+                .setDest(Uri.fromFile(destination))
+                .setAppIntent(completionIntent)
+                .setSubscriptionId(SubscriptionManager.getDefaultSubscriptionId())
+                .build();
+
+        try {
+            mDownloadManager.download(request, null);
+            mDownloadRequestAdapter.add(request);
+        } catch (MbmsException e) {
+            Toast.makeText(EmbmsTestDownloadApp.this,
+                    "caught MbmsException: " + e.getErrorCode(), Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    private static void clearDirectory(File directory) {
+        for (File file: directory.listFiles()) {
+            if (file.isDirectory()) {
+                clearDirectory(file);
+            }
+            file.delete();
+        }
+    }
+}
diff --git a/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/SideChannel.java b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/SideChannel.java
new file mode 100644
index 0000000..6e7ebe9
--- /dev/null
+++ b/testapps/EmbmsTestDownloadApp/src/com/android/phone/testapps/embmsdownload/SideChannel.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsdownload;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.mbms.FileServiceInfo;
+
+public class SideChannel {
+    public static final String ACTION_TRIGGER_CLEANUP =
+            "com.android.phone.testapps.embmsmw.TRIGGER_CLEANUP";
+    public static final String ACTION_REQUEST_SPURIOUS_TEMP_FILES =
+            "com.android.phone.testapps.embmsmw.REQUEST_SPURIOUS_TEMP_FILES";
+    public static final String ACTION_DELAY_DOWNLOAD =
+            "com.android.phone.testapps.embmsmw.DELAY_DOWNLOAD";
+
+    public static final String EXTRA_SERVICE_INFO =
+            "com.android.phone.testapps.embmsmw.SERVICE_INFO";
+    public static final String EXTRA_DELAY_FACTOR =
+            "com.android.phone.testapps.embmsmw.DELAY_FACTOR";
+
+    public static final ComponentName MIDDLEWARE_RECEIVER = new ComponentName(
+            "com.android.phone.testapps.embmsmw",
+            "com.android.phone.testapps.embmsmw.SideChannelReceiver");
+
+    public static void triggerCleanup(Context context) {
+        Intent intent  = new Intent(ACTION_TRIGGER_CLEANUP);
+        intent.setComponent(MIDDLEWARE_RECEIVER);
+        context.sendBroadcast(intent);
+    }
+
+    public static void requestSpuriousTempFiles(Context context, FileServiceInfo serviceInfo) {
+        Intent intent = new Intent(ACTION_REQUEST_SPURIOUS_TEMP_FILES);
+        intent.putExtra(EXTRA_SERVICE_INFO, serviceInfo);
+        intent.setComponent(MIDDLEWARE_RECEIVER);
+        context.sendBroadcast(intent);
+    }
+
+    public static void delayDownloads(Context context, int delay) {
+        Intent intent = new Intent(ACTION_DELAY_DOWNLOAD);
+        intent.putExtra(EXTRA_DELAY_FACTOR, delay);
+        intent.setComponent(MIDDLEWARE_RECEIVER);
+        context.sendBroadcast(intent);
+    }
+}
diff --git a/testapps/EmbmsTestStreamingApp/Android.mk b/testapps/EmbmsTestStreamingApp/Android.mk
new file mode 100644
index 0000000..45826b9
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/Android.mk
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Streaming frontend
+include $(CLEAR_VARS)
+
+src_dirs := src
+res_dirs := res
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+
+LOCAL_PACKAGE_NAME := EmbmsTestStreamingApp
+
+LOCAL_CERTIFICATE := platform
+LOCAL_MODULE_TAGS := tests
+#LOCAL_MODULE_TAGS := debug
+
+include $(BUILD_PACKAGE)
diff --git a/testapps/EmbmsTestStreamingApp/AndroidManifest.xml b/testapps/EmbmsTestStreamingApp/AndroidManifest.xml
new file mode 100644
index 0000000..d13425d
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.android.phone.testapps.embmsfrontend">
+    <application android:label="EmbmsTestStreamingApp">
+        <activity
+            android:name=".EmbmsTestStreamingApp"
+            android:label="EmbmsStreamingFrontend">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
+
diff --git a/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
new file mode 100644
index 0000000..b75a157
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/res/layout/activity_main.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+    <TextView
+        android:id="@+id/curr_streaming_uri_label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/streaming_uri_label"/>
+    <TextView
+        android:id="@+id/curr_streaming_uri"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/curr_streaming_method"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+    <TextView
+        android:id="@+id/tracked_streams_label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/tracked_streams_label"/>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <Spinner
+            android:id="@+id/curr_streams"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="match_parent"/>
+        <TextView
+            android:id="@+id/stream_state"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"/>
+    </LinearLayout>
+    <TextView
+        android:id="@+id/available_services_label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/available_streaming_services_label"/>
+    <Spinner
+        android:id="@+id/available_streaming_services"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"/>
+    <GridLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:columnCount="2"
+        android:orientation="vertical" >
+        <Button
+            android:id="@+id/bind_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="0"
+            android:layout_column="0"
+            android:text="@string/bind_button" />
+        <Button
+            android:id="@+id/get_streaming_services_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="0"
+            android:layout_column="1"
+            android:text="@string/get_streaming_services_button" />
+        <Button
+            android:id="@+id/start_streaming_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="1"
+            android:layout_column="0"
+            android:text="@string/start_streaming_button" />
+        <Button
+            android:id="@+id/stop_streaming_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="1"
+            android:layout_column="1"
+            android:text="@string/stop_streaming_button" />
+        <Button
+            android:id="@+id/dispose_stream_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="2"
+            android:layout_column="0"
+            android:text="@string/dispose_stream_button" />
+        <Button
+            android:id="@+id/dispose_manager_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_row="2"
+            android:layout_column="1"
+            android:text="@string/dispose_manager_button" />
+    </GridLayout>
+</LinearLayout>
diff --git a/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml b/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml
new file mode 100644
index 0000000..606fa25
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/res/values/donottranslate_strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+    <string name="bind_button">Bind to service</string>
+    <string name="streaming_uri_label">Current Streaming URIs</string>
+    <string name="get_streaming_services_button">Get streaming services</string>
+    <string name="start_streaming_button">Start Streaming</string>
+    <string name="stop_streaming_button">Stop Streaming</string>
+    <string name="available_streaming_services_label">Available Streaming Services</string>
+    <string name="dispose_stream_button">Dispose latest stream</string>
+    <string name="dispose_manager_button">Dispose streaming manager</string>
+    <string name="tracked_streams_label">Tracked Streams</string>
+</resources>
\ No newline at end of file
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
new file mode 100644
index 0000000..1505846
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/EmbmsTestStreamingApp.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsfrontend;
+
+import android.app.Activity;
+import android.content.Context;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.telephony.MbmsStreamingManager;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.MbmsStreamingManagerCallback;
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceInfo;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public class EmbmsTestStreamingApp extends Activity {
+    private MbmsStreamingManagerCallback mStreamingListener = new MbmsStreamingManagerCallback() {
+        @Override
+        public void onStreamingServicesUpdated(List<StreamingServiceInfo> services) {
+            EmbmsTestStreamingApp.this.runOnUiThread(() ->
+                    Toast.makeText(EmbmsTestStreamingApp.this,
+                            "Got services length " + services.size(),
+                            Toast.LENGTH_SHORT).show());
+            updateStreamingServicesList(services);
+        }
+
+        @Override
+        public void onMiddlewareReady() {
+            runOnUiThread(() -> Toast.makeText(EmbmsTestStreamingApp.this, "Successfully bound",
+                    Toast.LENGTH_SHORT).show());
+        }
+    };
+
+    private final class StreamingServiceInfoAdapter
+            extends ArrayAdapter<StreamingServiceInfo> {
+        public StreamingServiceInfoAdapter(Context context, int resource) {
+            super(context, resource);
+        }
+
+        private String getName(StreamingServiceInfo info) {
+            Map<Locale, String> names = info.getNames();
+            String name = "<No Name>";
+            if (!names.isEmpty()) {
+                Locale locale = Locale.getDefault();
+                if (!names.containsKey(locale)) {
+                    locale = names.keySet().iterator().next();
+                }
+                name = names.get(locale);
+            }
+            return name;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            StreamingServiceInfo info = getItem(position);
+            TextView result = new TextView(EmbmsTestStreamingApp.this);
+            result.setText(getName(info));
+            return result;
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            StreamingServiceInfo info = getItem(position);
+            TextView result = new TextView(EmbmsTestStreamingApp.this);
+            String text = "name="
+                    + getName(info)
+                    + ", "
+                    + "serviceId="
+                    + info.getServiceId();
+            result.setText(text);
+            return result;
+        }
+
+        public void update(List<StreamingServiceInfo> services) {
+            clear();
+            addAll(services);
+        }
+    }
+
+    private final class TrackedStreamAdapter extends ArrayAdapter<String> {
+        public TrackedStreamAdapter(Context context) {
+            super(context, android.R.layout.simple_spinner_item);
+            setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            String serviceId = getItem(position);
+            StreamingServiceTracker tracker = mStreamingServiceTrackerById.get(serviceId);
+            TextView result = new TextView(EmbmsTestStreamingApp.this);
+            result.setText(tracker == null ? "" : tracker.toString());
+            return result;
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            String serviceId = getItem(position);
+            StreamingServiceTracker tracker = mStreamingServiceTrackerById.get(serviceId);
+            TextView result = new TextView(EmbmsTestStreamingApp.this);
+            result.setText(tracker.toString());
+            return result;
+        }
+    }
+
+    private MbmsStreamingManager mStreamingManager = null;
+
+    private Handler mHandler;
+    private HandlerThread mHandlerThread;
+
+    private TrackedStreamAdapter mTrackedStreamingServiceAdapter;
+    private Spinner mStreamSelector;
+    private StreamingServiceInfoAdapter mStreamingServicesDisplayAdapter;
+    private final Map<String, StreamingServiceTracker> mStreamingServiceTrackerById =
+            new HashMap<>();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        mHandlerThread = new HandlerThread("EmbmsSampleFrontendWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mStreamingServicesDisplayAdapter =
+                new StreamingServiceInfoAdapter(this, android.R.layout.simple_spinner_item);
+        mTrackedStreamingServiceAdapter = new TrackedStreamAdapter(this);
+
+        Button bindButton = (Button) findViewById(R.id.bind_button);
+        bindButton.setOnClickListener((view) -> {
+            try {
+                mStreamingManager = MbmsStreamingManager.create(
+                        EmbmsTestStreamingApp.this, mStreamingListener, mHandler);
+            } catch (MbmsException e) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "Init error: " + e.getErrorCode(), Toast.LENGTH_SHORT).show();
+                return;
+            }
+        });
+
+        Button getStreamingServicesButton = (Button)
+                findViewById(R.id.get_streaming_services_button);
+        getStreamingServicesButton.setOnClickListener((view) -> {
+            if (mStreamingManager == null) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "No streaming service bound", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            try {
+                mStreamingManager.getStreamingServices(Collections.singletonList("Class1"));
+            } catch (MbmsException e) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "Error getting streaming services" + e.getErrorCode(),
+                        Toast.LENGTH_SHORT).show();
+            }
+        });
+
+        final Spinner serviceSelector = (Spinner) findViewById(R.id.available_streaming_services);
+        mStreamingServicesDisplayAdapter.setDropDownViewResource(
+                android.R.layout.simple_spinner_dropdown_item);
+        serviceSelector.setAdapter(mStreamingServicesDisplayAdapter);
+
+        mStreamSelector = (Spinner) findViewById(R.id.curr_streams);
+        mTrackedStreamingServiceAdapter.setDropDownViewResource(
+                android.R.layout.simple_spinner_dropdown_item);
+        mStreamSelector.setAdapter(mTrackedStreamingServiceAdapter);
+        mStreamSelector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                String serviceId = (String) mStreamSelector.getItemAtPosition(position);
+                StreamingServiceTracker tracker = mStreamingServiceTrackerById.get(serviceId);
+
+                setStreamStateDisplay(String.valueOf(tracker.getState()));
+                setUriDisplay(tracker.getUri());
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+                clearStateAndUriDisplay();
+            }
+        });
+
+        Button startStreamingButton = (Button) findViewById(R.id.start_streaming_button);
+        startStreamingButton.setOnClickListener((view) -> {
+            if (mStreamingManager == null) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "No streaming service bound", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            StreamingServiceInfo serviceInfo =
+                    (StreamingServiceInfo) serviceSelector.getSelectedItem();
+            if (serviceInfo == null) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "No streaming service selected", Toast.LENGTH_SHORT).show();
+                return;
+            }
+
+            StreamingServiceTracker tracker = new StreamingServiceTracker(this, serviceInfo);
+            if (tracker.startStreaming(mStreamingManager)) {
+                mStreamingServiceTrackerById.put(serviceInfo.getServiceId(), tracker);
+                mTrackedStreamingServiceAdapter.add(serviceInfo.getServiceId());
+            }
+        });
+
+        Button stopStreamingButton = (Button) findViewById(R.id.stop_streaming_button);
+        stopStreamingButton.setOnClickListener((view) -> {
+            if (getSelectedTrackedStream() == null) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "No streams selected", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            StreamingServiceTracker stream = getSelectedTrackedStream();
+            stream.stopStreaming();
+        });
+
+        Button disposeStreamButton = (Button) findViewById(R.id.dispose_stream_button);
+        disposeStreamButton.setOnClickListener((view) -> {
+            if (getSelectedTrackedStream() == null) {
+                Toast.makeText(EmbmsTestStreamingApp.this,
+                        "No streams selected", Toast.LENGTH_SHORT).show();
+                return;
+            }
+            clearStateAndUriDisplay();
+            StreamingServiceTracker stream = getSelectedTrackedStream();
+            mTrackedStreamingServiceAdapter.remove(stream.getServiceId());
+            mStreamingServiceTrackerById.remove(stream.getServiceId());
+            stream.dispose();
+        });
+
+        Button disposeManagerButton = (Button) findViewById(R.id.dispose_manager_button);
+        disposeManagerButton.setOnClickListener((view) -> {
+            clearStateAndUriDisplay();
+            mTrackedStreamingServiceAdapter.clear();
+            mStreamingServicesDisplayAdapter.update(Collections.emptyList());
+            mStreamingServiceTrackerById.clear();
+            mStreamingManager.dispose();
+        });
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mHandlerThread.quit();
+    }
+
+    private void updateStreamingServicesList(List<StreamingServiceInfo> services) {
+        runOnUiThread(() -> mStreamingServicesDisplayAdapter.update(services));
+    }
+
+    private StreamingServiceTracker getSelectedTrackedStream() {
+        String serviceId = (String) mStreamSelector.getSelectedItem();
+        return mStreamingServiceTrackerById.get(serviceId);
+    }
+
+    private void setUriDisplay(Uri uri) {
+        runOnUiThread(() -> {
+            TextView uriField = (TextView) findViewById(R.id.curr_streaming_uri);
+            uriField.setText(uri.toSafeString());
+        });
+    }
+
+    private void setStreamStateDisplay(String stateString) {
+        runOnUiThread(() -> {
+            TextView uriField = (TextView) findViewById(R.id.stream_state);
+            uriField.setText(stateString);
+        });
+    }
+
+    private void setStreamMethodDisplay(int method) {
+        runOnUiThread(() -> {
+            String methodString = "UNKNOWN METHOD";
+            switch (method) {
+                case StreamingService.BROADCAST_METHOD: {
+                    methodString = "BROADCAST";
+                    break;
+                }
+                case StreamingService.UNICAST_METHOD: {
+                    methodString = "UNICAST";
+                    break;
+                }
+            }
+            TextView methodField = (TextView) findViewById(R.id.curr_streaming_method);
+            methodField.setText(methodString);
+        });
+    }
+
+    private void clearStateAndUriDisplay() {
+        setUriDisplay(Uri.EMPTY);
+        setStreamStateDisplay("");
+        setStreamMethodDisplay(StreamingService.UNICAST_METHOD);
+    }
+
+    public void updateUri() {
+        Uri uri = getSelectedTrackedStream() == null ?
+            Uri.EMPTY : getSelectedTrackedStream().getUri();
+        setUriDisplay(uri);
+    }
+
+    public void updateStreamingState() {
+        String stateString = getSelectedTrackedStream() == null ?
+            "" : String.valueOf(getSelectedTrackedStream().getState());
+        setStreamStateDisplay(stateString);
+    }
+
+    /** implementation of updateMethod callback */
+    public void updateMethod() {
+        StreamingServiceTracker serviceTracker = getSelectedTrackedStream();
+        if (serviceTracker == null) {
+            setStreamMethodDisplay(StreamingService.UNICAST_METHOD);
+        } else {
+            setStreamMethodDisplay(serviceTracker.getMethod());
+        }
+    }
+}
diff --git a/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
new file mode 100644
index 0000000..4821bee
--- /dev/null
+++ b/testapps/EmbmsTestStreamingApp/src/com/android/phone/testapps/embmsfrontend/StreamingServiceTracker.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.phone.testapps.embmsfrontend;
+
+import android.net.Uri;
+import android.telephony.MbmsStreamingManager;
+import android.telephony.mbms.MbmsException;
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceCallback;
+import android.telephony.mbms.StreamingServiceInfo;
+import android.widget.Toast;
+
+public class StreamingServiceTracker {
+    private class Callback extends StreamingServiceCallback {
+        @Override
+        public void onError(int errorCode, String message) {
+            String toastMessage = "Error: " + errorCode + ": " + message;
+            mActivity.runOnUiThread(() ->
+                    Toast.makeText(mActivity, toastMessage, Toast.LENGTH_SHORT).show());
+        }
+
+        @Override
+        public void onStreamStateUpdated(int state, int reason) {
+            StreamingServiceTracker.this.onStreamStateUpdated(state, reason);
+        }
+
+        @Override
+        public void onStreamMethodUpdated(int method) {
+            StreamingServiceTracker.this.onStreamMethodUpdated(method);
+        }
+    }
+
+    private final EmbmsTestStreamingApp mActivity;
+    private final StreamingServiceInfo mStreamingServiceInfo;
+    private StreamingService mStreamingService;
+
+    private int mState = StreamingService.STATE_STOPPED;
+    private Uri mStreamingUri = Uri.EMPTY;
+    private int mMethod = StreamingService.UNICAST_METHOD;
+
+    public StreamingServiceTracker(EmbmsTestStreamingApp appActivity, StreamingServiceInfo info) {
+        mActivity = appActivity;
+        mStreamingServiceInfo = info;
+    }
+
+    public boolean startStreaming(MbmsStreamingManager streamingManager) {
+        try {
+            mStreamingService =
+                    streamingManager.startStreaming(mStreamingServiceInfo, new Callback(), null);
+            return true;
+        } catch (MbmsException e) {
+            Toast.makeText(mActivity,
+                    "Error starting streaming: " + e.getErrorCode(),
+                    Toast.LENGTH_SHORT).show();
+        }
+        return false;
+    }
+
+    public void stopStreaming() {
+        try {
+            mStreamingService.stopStreaming();
+        } catch (MbmsException e) {
+            Toast.makeText(mActivity,
+                    "Error stopping streaming: " + e.getErrorCode(),
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public void dispose() {
+        try {
+            mStreamingService.dispose();
+        } catch (MbmsException e) {
+            Toast.makeText(mActivity,
+                    "Error disposing stream" + e.getErrorCode(),
+                    Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public String getServiceId() {
+        return mStreamingServiceInfo.getServiceId();
+    }
+
+    public int getState() {
+        return mState;
+    }
+
+    public Uri getUri() {
+        return mStreamingUri;
+    }
+
+    public int getMethod() {
+        return mMethod;
+    }
+
+    private void onStreamStateUpdated(int state, int reason) {
+        if (state == StreamingService.STATE_STARTED && mState != StreamingService.STATE_STARTED) {
+            try {
+                mStreamingUri = mStreamingService.getPlaybackUri();
+                mActivity.updateUri();
+            } catch (MbmsException e) {
+                String errorToast = "Got error " + e.getErrorCode() + " while getting uri";
+                mActivity.runOnUiThread(() ->
+                        Toast.makeText(mActivity, errorToast, Toast.LENGTH_SHORT).show());
+            }
+        }
+        mState = state;
+        mActivity.updateStreamingState();
+        mActivity.runOnUiThread(() ->
+                Toast.makeText(mActivity, "State change reason: " + reason, Toast.LENGTH_SHORT)
+                        .show());
+    }
+
+    private void onStreamMethodUpdated(int method) {
+        if (mMethod != method) {
+            mMethod = method;
+            mActivity.updateMethod();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "Tracked service with ID " + getServiceId();
+    }
+}
diff --git a/tests/Android.mk b/tests/Android.mk
index a3a657b..850aca3 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -25,6 +25,15 @@
 
 LOCAL_MODULE_TAGS := tests
 
+LOCAL_JAVA_LIBRARIES := telephony-common android-support-test
+
 LOCAL_INSTRUMENTATION_FOR := TeleService
 
+LOCAL_STATIC_JAVA_LIBRARIES := \
+        android-support-test \
+        mockito-target-minus-junit4 \
+        espresso-core \
+        truth-prebuilt \
+        legacy-android-test
+
 include $(BUILD_PACKAGE)
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 8900568..0aa5be2 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -19,7 +19,6 @@
 
     <uses-permission android:name="android.permission.CALL_PHONE" />
     <uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
-    <uses-permission android:name="android.permission.PERFORM_SIM_ACTIVATION" />
 
     <application android:label="@string/app_name">
         <uses-library android:name="android.test.runner" />
@@ -39,16 +38,6 @@
             </intent-filter>
         </activity>
 
-        <!-- Test activity mimicking the PERFORM_CDMA_PROVISIONING behavior of
-             SetupWizard, useful for testing "non-interactive" OTASP. -->
-        <activity android:name="OtaspTestActivity"
-                  android:label="OtaspTest">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
         <service android:name="SendInstantTextTestService"
                  android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" >
             <intent-filter>
@@ -62,17 +51,16 @@
     </application>
 
     <!--
-        The prefered way is to use 'runtest':
-           runtest phone-unit
+        To run all tests:
+            adb shell am instrument -w
+                com.android.phone.tests/android.support.test.runner.AndroidJUnitRunner
 
-         runtest is a wrapper around 'adb shell'. The low level shell command is:
-           adb shell am instrument -w com.android.phone.tests/android.test.InstrumentationTestRunner
+        To run a single class test:
+            adb shell am instrument -e class com.android.phone.unit.FooUnitTest
+                -w com.android.phone.tests/android.support.test.runner.AndroidJUnitRunner
 
-         To run a single test case:
-           adb shell am instrument -w com.android.phone.tests/android.test.InstrumentationTestRunner
-                                   -e com.android.phone.unit.FooUnitTest
     -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
         android:targetPackage="com.android.phone"
         android:label="Phone application tests." />
 </manifest>
diff --git a/tests/src/com/android/TelephonyTestBase.java b/tests/src/com/android/TelephonyTestBase.java
new file mode 100644
index 0000000..a61ffe9
--- /dev/null
+++ b/tests/src/com/android/TelephonyTestBase.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.test.InstrumentationRegistry;
+
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Helper class to load Mockito Resources into a test.
+ */
+public class TelephonyTestBase {
+
+    protected Context mContext;
+
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+        MockitoAnnotations.initMocks(this);
+        // Set up the looper if it does not exist on the test thread.
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+            // Wait until the looper is not null anymore
+            for(int i = 0; i < 5; i++) {
+                if (Looper.myLooper() != null) {
+                    break;
+                }
+                Looper.prepare();
+                Thread.sleep(100);
+            }
+        }
+    }
+
+    public void tearDown() throws Exception {
+    }
+
+    protected final void waitForHandlerAction(Handler h, long timeoutMillis) {
+        final CountDownLatch lock = new CountDownLatch(1);
+        h.post(lock::countDown);
+        while (lock.getCount() > 0) {
+            try {
+                lock.await(timeoutMillis, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                // do nothing
+            }
+        }
+    }
+
+    protected final void waitForHandlerActionDelayed(Handler h, long timeoutMillis, long delayMs) {
+        final CountDownLatch lock = new CountDownLatch(1);
+        h.postDelayed(lock::countDown, delayMs);
+        while (lock.getCount() > 0) {
+            try {
+                lock.await(timeoutMillis, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                // do nothing
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/phone/RoamingDialogFragmentTest.java b/tests/src/com/android/phone/RoamingDialogFragmentTest.java
new file mode 100644
index 0000000..62633e0
--- /dev/null
+++ b/tests/src/com/android/phone/RoamingDialogFragmentTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.phone;
+
+import android.app.Activity;
+import android.content.pm.ActivityInfo;
+import android.provider.Settings.Global;
+import android.provider.Settings.SettingNotFoundException;
+import android.support.test.espresso.matcher.PreferenceMatchers;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.filters.FlakyTest;
+import com.google.common.truth.Truth;
+import junit.framework.AssertionFailedError;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import static android.support.test.espresso.Espresso.onData;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
+import static android.support.test.espresso.matcher.ViewMatchers.isChecked;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static com.google.common.truth.Truth.assertThat;
+
+/**
+ * Espresso tests to check some properties of the dialog that appears when a user
+ * tries to turn on data roaming.
+ */
+public class RoamingDialogFragmentTest {
+
+    @Rule
+    public ActivityTestRule<MobileNetworkSettings> mRule =
+            new ActivityTestRule<>(MobileNetworkSettings.class);
+    private Activity mActivity;
+
+    /**
+     * Make sure roaming is off before we start a test since this checks the dialog that only
+     * shows up when we try to turn it on.
+     */
+    @Before
+    public void disableRoaming() {
+        mActivity = mRule.getActivity();
+
+        // turn off data roaming if it is on
+        try {
+            onData(PreferenceMatchers.withTitle(R.string.roaming))
+                    .check(matches(hasDescendant(isChecked())))
+                    .perform(click());
+        } catch (AssertionFailedError e) {
+            // don't click the switch if it is already off.
+        }
+    }
+
+    @FlakyTest
+    @Test
+    public void dataRoamingDialogPersistsOnRotation() {
+        // click on the data roaming preference to trigger warning dialog
+        onData(PreferenceMatchers.withTitle(R.string.roaming)).perform(click());
+
+        // request both orientations to ensure at least one rotation occurs
+        mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+        mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+
+        // verify the title of the dialog is visible
+        onView(withText(R.string.roaming_alert_title)).check(matches(isDisplayed()));
+
+    }
+
+    @FlakyTest
+    @Test
+    public void dataRoamingEnabledWhenPositiveButtonClicked() throws SettingNotFoundException {
+        // click on the data roaming preference to trigger warning dialog
+        onData(PreferenceMatchers.withTitle(R.string.roaming)).perform(click());
+
+        // click to confirm we want to turn on data roaming
+        onView(withId(android.R.id.button1)).perform(click());
+
+        // verify that the the setting has actually been changed
+        assertThat(Global.getInt(mActivity.getApplicationContext().getContentResolver(),
+                Global.DATA_ROAMING)).isEqualTo(1);
+    }
+
+    @FlakyTest
+    @Test
+    public void dialogDismissedOnNegativeButtonClicked() {
+        // click on the data roaming preference to trigger warning dialog
+        onData(PreferenceMatchers.withTitle(R.string.roaming)).perform(click());
+
+        // click to cancel turning on data roaming
+        onView(withId(android.R.id.button2)).perform(click());
+
+        // verify the title of the dialog is gone
+        onView(withText(R.string.roaming_alert_title)).check(doesNotExist());
+    }
+
+    @FlakyTest
+    @Test
+    public void dataRoamingStaysDisabledWhenDialogCanceled() throws SettingNotFoundException {
+        // click on the data roaming preference to trigger warning dialog
+        onData(PreferenceMatchers.withTitle(R.string.roaming)).perform(click());
+
+        // click to cancel turning on data roaming
+        onView(withId(android.R.id.button2)).perform(click());
+
+        // verify that the the setting has not been changed
+        assertThat(Global.getInt(mActivity.getApplicationContext().getContentResolver(),
+                Global.DATA_ROAMING)).isEqualTo(0);
+
+    }
+}
diff --git a/tests/src/com/android/phone/tests/OtaspTestActivity.java b/tests/src/com/android/phone/tests/OtaspTestActivity.java
deleted file mode 100644
index ead86c3..0000000
--- a/tests/src/com/android/phone/tests/OtaspTestActivity.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone.tests;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.content.ActivityNotFoundException;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import com.android.phone.OtaUtils;
-
-/**
- * Test activity that mimics the PERFORM_CDMA_PROVISIONING behavior of
- * SetupWizard, useful for testing "non-interactive" OTASP.
- * @see OtaUtils.startNonInteractiveOtasp
- *
- */
-public class OtaspTestActivity extends Activity implements View.OnClickListener {
-    private static final String LOG_TAG = "OtaspTestActivity";
-
-    // Request code used with startActivityForResult()
-    private static final int PERFORM_CDMA_PROVISIONING_REQUEST_CODE = 1;
-
-    // UI elements
-    private TextView mLabel;
-    private ProgressBar mProgressBar;
-    private TextView mResult;
-    private Button mButton;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        Intent intent = getIntent();
-        Log.i(LOG_TAG, "##### onCreate: intent = " + intent);
-        Bundle extras = intent.getExtras();
-        if (extras != null) {
-            Log.i(LOG_TAG, "      - has extras: size = " + extras.size()); // forces an unparcel()
-            Log.i(LOG_TAG, "      - extras = " + extras);
-        }
-
-        // Construct our basic UI:
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.otasp_test_activity);
-
-        mLabel = (TextView) findViewById(R.id.label1);
-        mLabel.setText("OTA Test Activity");
-
-        mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
-        mResult = (TextView) findViewById(R.id.result1);
-
-        mButton = (Button) findViewById(R.id.button1);
-        mButton.setText("Make test call");
-        mButton.setOnClickListener(this);
-
-
-        // We can be launched either:
-        //
-        // (1) Directly from the launcher, in which case the current intent
-        //     will simply be an ACTION_MAIN intent
-        //
-        // (2) Via the PendingIntent that we sent along (when we originally
-        //     fired off the ACTION_PERFORM_CDMA_PROVISIONING intent) that
-        //     allows the phone app to send us back a result code.
-        //     We can identify this case by the presence of the
-        //     EXTRA_OTASP_RESULT_CODE extra.
-
-        if (intent.hasExtra(OtaUtils.EXTRA_OTASP_RESULT_CODE)) {
-            // Got a result from the OTASP call!
-            Log.i(LOG_TAG, "==> onCreate: got a result from the OTASP call!");
-
-            int resultCode = intent.getIntExtra(OtaUtils.EXTRA_OTASP_RESULT_CODE,
-                                                OtaUtils.OTASP_UNKNOWN);
-            Log.i(LOG_TAG, "    - resultCode = " + resultCode);
-
-            String resultString;
-            switch (resultCode) {
-                case OtaUtils.OTASP_USER_SKIPPED:
-                    resultString = "User skipped!";
-                    break;
-                case OtaUtils.OTASP_SUCCESS:
-                    resultString = "Success!";
-                    break;
-                case OtaUtils.OTASP_FAILURE:
-                    resultString = "FAILURE";
-                    break;
-                default:
-                    resultString = "Unexpected code: " + resultCode;
-                    break;
-            }
-            Log.i(LOG_TAG, "    - result: " + resultString);
-            mResult.setText(resultString);
-            mResult.setVisibility(View.VISIBLE);
-            mProgressBar.setVisibility(View.INVISIBLE);
-
-        } else {
-            // We must have gotten here directly from the launcher.
-            // Leave the UI in its initial state.
-            Log.i(LOG_TAG, "==> onCreate: entered from the launcher.");
-        }
-    }
-
-    @Override
-    protected void onNewIntent(Intent intent) {
-        Log.i(LOG_TAG, "onNewIntent: intent=" + intent);
-        Bundle extras = intent.getExtras();
-        if (extras != null) Log.i(LOG_TAG, "      - intent extras = " + extras);
-
-        // This method isn't actually used since this test activity is not
-        // launched in "singleTop" mode.
-
-        // Activities that *are* launched in singleTop mode, like the SetupWizard,
-        // would have to handle the various PendingIntents here just like
-        // we do above in onCreate().
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.i(LOG_TAG, "onActivityResult: request " + requestCode
-              + " result " + resultCode + " data " + data);
-
-        // Note we receive this call immediately before onResume(), when
-        // we get re-started after launching the PERFORM_CDMA_PROVISIONING
-        // intent.
-
-        if (requestCode == PERFORM_CDMA_PROVISIONING_REQUEST_CODE) {
-            // The InCallScreenShowActivation activity can set the following
-            // result codes:
-            //
-            //   RESULT_INTERACTIVE_OTASP_STARTED
-            //   RESULT_NONINTERACTIVE_OTASP_STARTED
-            //   RESULT_NONINTERACTIVE_OTASP_FAILED
-            //
-            // but note that in practice we won't ever *get* the
-            // RESULT_INTERACTIVE_OTASP_STARTED result code, since the
-            // "interactive" OTASP sequence never actually finish()es;
-            // it ends by directly launching the Home activity.
-            //
-            // However, in non-interactive OTASP, the
-            // InCallScreenShowActivation activity will set one of the
-            // RESULT_NONINTERACTIVE_* codes and immediately
-            // finish(), so we *will* see that result here.
-            //
-            // Also, resultCode will be RESULT_CANCELED (= 0) if the
-            // InCallScreenShowActivation activity didn't return any
-            // result, or crashed.
-
-            switch (resultCode) {
-                case OtaUtils.RESULT_INTERACTIVE_OTASP_STARTED:
-                    Log.i(LOG_TAG, "==> onActivityResult: INTERACTIVE_OTASP_STARTED");
-                    break;
-                case OtaUtils.RESULT_NONINTERACTIVE_OTASP_STARTED:
-                    Log.i(LOG_TAG, "==> onActivityResult: NONINTERACTIVE_OTASP_STARTED");
-                    break;
-                case OtaUtils.RESULT_NONINTERACTIVE_OTASP_FAILED:
-                    Log.w(LOG_TAG, "==> onActivityResult: NONINTERACTIVE_OTASP_FAILED");
-                    // This means we couldn't even *initiate* an outgoing call
-                    // to start the OTASP process.  Not sure what could cause this.
-                    // TODO: Update UI to indicate the error.
-                    break;
-                case RESULT_CANCELED:
-                    Log.i(LOG_TAG, "==> onActivityResult: CANCELED");
-                    break;
-                default:
-                    Log.i(LOG_TAG, "==> onActivityResult: unknown result: " + resultCode);
-                    break;
-            }
-        }
-    }
-
-    @Override
-    protected void onResume() {
-        Log.i(LOG_TAG, "onResume()...");
-        super.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        Log.i(LOG_TAG, "onPause()...");
-        super.onPause();
-    }
-
-    // View.OnClickListener implementation
-    @Override
-    public void onClick(View view) {
-        int id = view.getId();
-        Log.i(LOG_TAG, "onClick(View " + view + ", id " + id + ")...");
-
-        switch (id) {
-            case R.id.button1:
-                Log.i(LOG_TAG, "onClick: button1...");
-                makeTestCall();
-                break;
-            default:
-                Log.w(LOG_TAG, "onClick: unexpected View: " + view);
-                break;
-        }
-    }
-
-    private void makeTestCall() {
-        Log.i(LOG_TAG, "##### makeTestCall()...");
-
-        mProgressBar.setVisibility(View.VISIBLE);
-        mResult.setVisibility(View.INVISIBLE);
-
-        try {
-            Intent performProvisioningIntent =
-                    new Intent(OtaUtils.ACTION_PERFORM_CDMA_PROVISIONING);
-
-            // Set the magic extra to force "non-interactive mode" for the
-            // OTASP call.
-            performProvisioningIntent.putExtra(OtaUtils.EXTRA_OVERRIDE_INTERACTIVE_MODE, false);
-
-            // Pass a PendingIntent along with the
-            // ACTION_PERFORM_CDMA_PROVISIONING intent, which allows
-            // results to be sent back to us.
-            Intent resultIntent = new Intent(this, this.getClass());
-            PendingIntent pendingResultIntent =
-                    PendingIntent.getActivity(this, 0,
-                                              resultIntent, 0);
-            performProvisioningIntent.putExtra(OtaUtils.EXTRA_OTASP_RESULT_CODE_PENDING_INTENT,
-                                               pendingResultIntent);
-
-            Log.i(LOG_TAG, "- Firing off PERFORM_CDMA_PROVISIONING intent: "
-                  + performProvisioningIntent);
-            Bundle extras = performProvisioningIntent.getExtras();
-            if (extras != null) Log.i(LOG_TAG, "      - intent extras = " + extras);
-
-            // Originally, we would simply call
-            //     startActivity(performProvisioningIntent);
-            // to launch the InCallScreenShowActivation activity and *not* expect
-            // a result.  (Note that calling the plain startActivity()
-            // method *guarantees* that your onActivityResult() method
-            // will NOT be called at all.)
-
-            // Now, we ask for a result:
-            startActivityForResult(performProvisioningIntent,
-                                   PERFORM_CDMA_PROVISIONING_REQUEST_CODE);
-
-            // On a non-voice-capable device, the InCallScreenShowActivation activity
-            // will kick off the OTASP call and immediately return, passing
-            // the code RESULT_STARTED_NONINTERACTIVE_OTASP to our
-            // onActivityResult method.
-
-        } catch (ActivityNotFoundException e) {
-            Log.w(LOG_TAG, "Couldn't show activiation UI; ActivityNotFoundException: " + e);
-        }
-    }
-}
diff --git a/tests/src/com/android/services/telephony/ConferenceParticipantConnectionTest.java b/tests/src/com/android/services/telephony/ConferenceParticipantConnectionTest.java
new file mode 100644
index 0000000..73fe0af
--- /dev/null
+++ b/tests/src/com/android/services/telephony/ConferenceParticipantConnectionTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import android.net.Uri;
+import android.support.test.runner.AndroidJUnit4;
+import android.telecom.Conference;
+import android.telecom.ConferenceParticipant;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static com.android.services.telephony.ConferenceParticipantConnection.getParticipantAddress;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Tests proper parsing of conference event package participant addresses.
+ */
+@RunWith(AndroidJUnit4.class)
+public class ConferenceParticipantConnectionTest {
+
+    @Test
+    public void testParticipantParseSimpleTel() {
+        assertUrisEqual(Uri.parse("tel:+16505551212"),
+                getParticipantAddress(Uri.parse("tel:6505551212"), "US"));
+    }
+
+    @Test
+    public void testParticipantParseTelExtended() {
+        assertUrisEqual(Uri.parse("tel:+16505551212"),
+                getParticipantAddress(Uri.parse("tel:6505551212;phone-context=blah"), "US"));
+    }
+
+    @Test
+    public void testParticipantParseSip() {
+        assertUrisEqual(Uri.parse("tel:+16505551212"),
+                getParticipantAddress(Uri.parse("sip:16505551212;phone-context=blah.com@host.com"),
+                        "US"));
+    }
+
+    @Test
+    public void testParticipantParseSip2() {
+        assertUrisEqual(Uri.parse("tel:+12125551212"),
+                getParticipantAddress(Uri.parse("sip:+1-212-555-1212@something.com;user=phone"),
+                        "US"));
+    }
+
+    @Test
+    public void testParticipantParseTelJp() {
+        assertUrisEqual(Uri.parse("tel:+819066570660"),
+                getParticipantAddress(Uri.parse(
+                        "tel:09066570660;phone-context=ims.mnc020.mcc440.3gppnetwork.org"),
+                        "JP"));
+    }
+
+    @Test
+    public void testParticipantParseSipJp() {
+        assertUrisEqual(Uri.parse("tel:+819066571180"),
+                getParticipantAddress(Uri.parse(
+                        "sip:+819066571180@ims.mnc020.mcc440.3gppnetwork.org;user=phone"),
+                        "JP"));
+    }
+
+    private void assertUrisEqual(Uri expected, Uri actual) {
+        assertEquals(expected.getScheme(), actual.getScheme());
+        assertEquals(expected.getSchemeSpecificPart(), actual.getSchemeSpecificPart());
+    }
+}
diff --git a/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java b/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java
new file mode 100644
index 0000000..229bdee
--- /dev/null
+++ b/tests/src/com/android/services/telephony/ImsConferenceControllerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.times;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import android.os.Looper;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.internal.telephony.PhoneConstants;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests the functionality in ImsConferenceController.java
+ */
+
+public class ImsConferenceControllerTest {
+
+    @Mock
+    private TelephonyConnectionServiceProxy mMockTelephonyConnectionServiceProxy;
+
+    private TelecomAccountRegistry mTelecomAccountRegistry;
+
+    private TestTelephonyConnection mTestTelephonyConnectionA;
+    private TestTelephonyConnection mTestTelephonyConnectionB;
+
+    private ImsConferenceController mControllerTest;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mTelecomAccountRegistry = TelecomAccountRegistry.getInstance(null);
+        mTestTelephonyConnectionA = new TestTelephonyConnection();
+        mTestTelephonyConnectionB = new TestTelephonyConnection();
+
+        mControllerTest = new ImsConferenceController(mTelecomAccountRegistry,
+                mMockTelephonyConnectionServiceProxy);
+    }
+
+    /**
+     * Behavior: add telephony connections B and A to conference controller,
+     *           set status for connections, remove one call
+     * Assumption: after performing the behaviors, the status of Connection A is STATE_ACTIVE;
+     *             the status of Connection B is STATE_HOLDING
+     * Expected: Connection A and Connection B are conferenceable with each other;
+     *           Connection B is not conferenceable with Connection A after A is removed;
+     *           addConference for ImsConference is not called
+     */
+    @Test
+    @SmallTest
+    public void testConferenceable() {
+
+        mControllerTest.add(mTestTelephonyConnectionB);
+        mControllerTest.add(mTestTelephonyConnectionA);
+
+        mTestTelephonyConnectionA.setActive();
+        mTestTelephonyConnectionB.setOnHold();
+
+        assertTrue(mTestTelephonyConnectionA.getConferenceables()
+                .contains(mTestTelephonyConnectionB));
+        assertTrue(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+
+        // verify addConference method is never called
+        verify(mMockTelephonyConnectionServiceProxy, never())
+                .addConference(any(ImsConference.class));
+
+        // call A removed
+        mControllerTest.remove(mTestTelephonyConnectionA);
+        assertFalse(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+    }
+
+    /**
+     * Behavior: add telephony connection B and A to conference controller,
+     *           set status for merged connections
+     * Assumption: after performing the behaviors, the status of Connection A is STATE_ACTIVE;
+     *             the status of Connection B is STATE_HOLDING;
+     *             getPhoneType() in the original connection of the telephony connection
+     *             is PhoneConstants.PHONE_TYPE_IMS
+     * Expected: addConference for ImsConference is called twice
+     */
+    @Test
+    @SmallTest
+    public void testMergeMultiPartyCalls() {
+
+        when(mTestTelephonyConnectionA.mMockRadioConnection.getPhoneType())
+                .thenReturn(PhoneConstants.PHONE_TYPE_IMS);
+        when(mTestTelephonyConnectionB.mMockRadioConnection.getPhoneType())
+                .thenReturn(PhoneConstants.PHONE_TYPE_IMS);
+        when(mTestTelephonyConnectionA.mMockRadioConnection.isMultiparty()).thenReturn(true);
+        when(mTestTelephonyConnectionB.mMockRadioConnection.isMultiparty()).thenReturn(true);
+
+        mControllerTest.add(mTestTelephonyConnectionB);
+        mControllerTest.add(mTestTelephonyConnectionA);
+
+        mTestTelephonyConnectionA.setActive();
+        mTestTelephonyConnectionB.setOnHold();
+
+        verify(mMockTelephonyConnectionServiceProxy, times(2))
+                .addConference(any(ImsConference.class));
+
+    }
+}
diff --git a/tests/src/com/android/services/telephony/RadioOnStateListenerTest.java b/tests/src/com/android/services/telephony/RadioOnStateListenerTest.java
new file mode 100644
index 0000000..fb214cc
--- /dev/null
+++ b/tests/src/com/android/services/telephony/RadioOnStateListenerTest.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.services.telephony;
+
+import android.os.AsyncResult;
+import android.os.Handler;
+import android.telephony.ServiceState;
+import android.support.test.runner.AndroidJUnit4;
+import android.support.test.filters.FlakyTest;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.TelephonyTestBase;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
+import com.android.internal.telephony.ServiceStateTracker;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.when;
+
+/**
+ * Tests the RadioOnStateListener, which listens to one Phone and waits until its service
+ * state changes to accepting emergency calls or in service. If it can not find a tower to camp onto
+ * for emergency calls, then it will fail after a timeout period.
+ */
+@RunWith(AndroidJUnit4.class)
+public class RadioOnStateListenerTest extends TelephonyTestBase {
+
+    private static final long TIMEOUT_MS = 100;
+
+    @Mock Phone mMockPhone;
+    @Mock RadioOnStateListener.Callback mCallback;
+    RadioOnStateListener mListener;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        mListener = new RadioOnStateListener();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mListener.getHandler().removeCallbacksAndMessages(null);
+        super.tearDown();
+    }
+
+    /**
+     * Ensure that we successfully register for the ServiceState changed messages in Telephony.
+     */
+    @Test
+    @SmallTest
+    public void testRegisterForCallback() {
+        mListener.waitForRadioOn(mMockPhone, mCallback);
+
+        waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
+
+        verify(mMockPhone).unregisterForServiceStateChanged(any(Handler.class));
+        verify(mMockPhone).registerForServiceStateChanged(any(Handler.class),
+                eq(RadioOnStateListener.MSG_SERVICE_STATE_CHANGED), isNull());
+    }
+
+    /**
+     * {@link RadioOnStateListener.Callback#isOkToCall(int)} returns true, so we are expecting
+     * {@link RadioOnStateListener.Callback#onComplete(boolean)} to return true.
+     */
+    @Test
+    @SmallTest
+    public void testPhoneChangeState_OkToCallTrue() {
+        ServiceState state = new ServiceState();
+        state.setState(ServiceState.STATE_IN_SERVICE);
+        when(mMockPhone.getState()).thenReturn(PhoneConstants.State.IDLE);
+        when(mCallback.isOkToCall(eq(mMockPhone), anyInt())).thenReturn(true);
+        mListener.waitForRadioOn(mMockPhone, mCallback);
+        waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
+
+        mListener.getHandler().obtainMessage(RadioOnStateListener.MSG_SERVICE_STATE_CHANGED,
+                new AsyncResult(null, state, null)).sendToTarget();
+
+        waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
+        verify(mCallback).onComplete(eq(mListener), eq(true));
+    }
+
+    /**
+     * We never receive a {@link RadioOnStateListener.Callback#onComplete(boolean)} because
+     * {@link RadioOnStateListener.Callback#isOkToCall(int)} returns false.
+     */
+    @Test
+    @SmallTest
+    public void testPhoneChangeState_NoOkToCall_Timeout() {
+        ServiceState state = new ServiceState();
+        state.setState(ServiceState.STATE_OUT_OF_SERVICE);
+        when(mMockPhone.getState()).thenReturn(PhoneConstants.State.IDLE);
+        when(mCallback.isOkToCall(eq(mMockPhone), anyInt())).thenReturn(false);
+        when(mMockPhone.getServiceState()).thenReturn(state);
+        mListener.waitForRadioOn(mMockPhone, mCallback);
+        waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
+
+        mListener.getHandler().obtainMessage(RadioOnStateListener.MSG_SERVICE_STATE_CHANGED,
+                new AsyncResult(null, state, null)).sendToTarget();
+
+        waitForHandlerAction(mListener.getHandler(), TIMEOUT_MS);
+        verify(mCallback, never()).onComplete(any(RadioOnStateListener.class), anyBoolean());
+    }
+
+    /**
+     * Tests {@link RadioOnStateListener.Callback#isOkToCall(int)} returning false and hitting the
+     * max number of retries. This should result in
+     * {@link RadioOnStateListener.Callback#onComplete(boolean)} returning false.
+     */
+    @Test
+    @FlakyTest
+    public void testTimeout_RetryFailure() {
+        ServiceState state = new ServiceState();
+        state.setState(ServiceState.STATE_POWER_OFF);
+        when(mMockPhone.getState()).thenReturn(PhoneConstants.State.IDLE);
+        when(mMockPhone.getServiceState()).thenReturn(state);
+        when(mCallback.isOkToCall(eq(mMockPhone), anyInt())).thenReturn(false);
+        mListener.setTimeBetweenRetriesMillis(50);
+        mListener.setMaxNumRetries(2);
+
+        // Wait for the timer to expire and check state manually in onRetryTimeout
+        mListener.waitForRadioOn(mMockPhone, mCallback);
+        waitForHandlerActionDelayed(mListener.getHandler(), TIMEOUT_MS, 500);
+
+        verify(mCallback).onComplete(eq(mListener), eq(false));
+        verify(mMockPhone, times(2)).setRadioPower(eq(true));
+    }
+
+}
diff --git a/tests/src/com/android/services/telephony/TelephonyConferenceControllerTest.java b/tests/src/com/android/services/telephony/TelephonyConferenceControllerTest.java
new file mode 100644
index 0000000..275bcc6
--- /dev/null
+++ b/tests/src/com/android/services/telephony/TelephonyConferenceControllerTest.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import android.os.Looper;
+import android.telecom.Conference;
+import android.telecom.Connection;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.mockito.ArgumentCaptor;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.any;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * Tests the functionality in TelephonyConferenceController.java
+ * Assumption: these tests are based on setting status manually
+ */
+
+public class TelephonyConferenceControllerTest {
+
+    @Mock
+    private TelephonyConnectionServiceProxy mMockTelephonyConnectionServiceProxy;
+
+    @Mock
+    private Conference.Listener mMockListener;
+
+    private TestTelephonyConnection mTestTelephonyConnectionA;
+    private TestTelephonyConnection mTestTelephonyConnectionB;
+
+    private TelephonyConferenceController mControllerTest;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        if (Looper.myLooper() == null) {
+            Looper.prepare();
+        }
+        mTestTelephonyConnectionA = new TestTelephonyConnection();
+        mTestTelephonyConnectionB = new TestTelephonyConnection();
+
+        mControllerTest = new TelephonyConferenceController(mMockTelephonyConnectionServiceProxy);
+    }
+
+    /**
+     * Behavior: add telephony connections B and A to conference controller,
+     *           set status for connections and calls, remove one call
+     * Assumption: after performing the behaviours, the status of Connection A is STATE_ACTIVE;
+     *             the status of Connection B is STATE_HOLDING;
+     *             the call in the original connection is Call.State.ACTIVE;
+     *             isMultiparty of the call is false;
+     *             isConferenceSupported of the connection is True
+     * Expected: Connection A and Connection B are conferenceable with each other
+     */
+    @Test
+    @SmallTest
+    public void testConferenceable() {
+
+        when(mTestTelephonyConnectionA.mMockRadioConnection.getCall()
+                .isMultiparty()).thenReturn(false);
+        when(mTestTelephonyConnectionB.mMockRadioConnection.getCall()
+                .isMultiparty()).thenReturn(false);
+
+        // add telephony connection B
+        mControllerTest.add(mTestTelephonyConnectionB);
+
+        // add telephony connection A
+        mControllerTest.add(mTestTelephonyConnectionA);
+
+        mTestTelephonyConnectionA.setActive();
+        mTestTelephonyConnectionB.setOnHold();
+
+        assertTrue(mTestTelephonyConnectionA.getConferenceables()
+                .contains(mTestTelephonyConnectionB));
+        assertTrue(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+
+        // verify addConference method is never called
+        verify(mMockTelephonyConnectionServiceProxy, never())
+                .addConference(any(TelephonyConference.class));
+
+        // call A removed
+        mControllerTest.remove(mTestTelephonyConnectionA);
+        assertFalse(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+    }
+
+    /**
+     * Behavior: add telephony connection B and A to conference controller,
+     *           set status for connections and merged calls, remove one call
+     * Assumption: after performing the behaviours, the status of Connection A is STATE_ACTIVE;
+     *             the status of Connection B is STATE_HOLDING;
+     *             the call in the original connection is Call.State.ACTIVE;
+     *             isMultiparty of the call is True;
+     *             isConferenceSupported of the connection is True
+     * Expected: Connection A and Connection B are conferenceable with each other
+     *           addConference is called
+     */
+    @Test
+    @SmallTest
+    public void testMergeMultiPartyCalls() {
+
+        // set isMultiparty() true to create the same senario of merge behaviour
+        when(mTestTelephonyConnectionA.mMockRadioConnection.getCall()
+                .isMultiparty()).thenReturn(true);
+        when(mTestTelephonyConnectionB.mMockRadioConnection.getCall()
+                .isMultiparty()).thenReturn(true);
+
+        // Add connections into connection Service
+        Collection<Connection> allConnections = new ArrayList<Connection>();
+        allConnections.add(mTestTelephonyConnectionA);
+        allConnections.add(mTestTelephonyConnectionB);
+        when(mMockTelephonyConnectionServiceProxy.getAllConnections())
+                .thenReturn(allConnections);
+
+        // add telephony connection B
+        mControllerTest.add(mTestTelephonyConnectionB);
+
+        // add telephony connection A
+        mControllerTest.add(mTestTelephonyConnectionA);
+
+        mTestTelephonyConnectionA.setActive();
+        mTestTelephonyConnectionB.setOnHold();
+
+        assertTrue(mTestTelephonyConnectionA.getConferenceables()
+                .contains(mTestTelephonyConnectionB));
+        assertTrue(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+
+        // capture the argument in the addConference method, and verify it is called
+        ArgumentCaptor<TelephonyConference> argumentCaptor = ArgumentCaptor.
+                forClass(TelephonyConference.class);
+        verify(mMockTelephonyConnectionServiceProxy).addConference(argumentCaptor.capture());
+
+        // add a listener to the added conference
+        argumentCaptor.getValue().addListener(mMockListener);
+
+        verify(mMockListener, never()).onDestroyed(any(Conference.class));
+
+        // call A removed
+        mControllerTest.remove(mTestTelephonyConnectionA);
+        assertFalse(mTestTelephonyConnectionB.getConferenceables()
+                .contains(mTestTelephonyConnectionA));
+
+        //onDestroy should be called during the destroy
+        verify(mMockListener).onDestroyed(any(Conference.class));
+    }
+}
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
new file mode 100644
index 0000000..eb8c48a
--- /dev/null
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
@@ -0,0 +1,801 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.services.telephony;
+
+import android.net.Uri;
+import android.telecom.DisconnectCause;
+import android.telecom.TelecomManager;
+import android.telephony.RadioAccessFamily;
+import android.telephony.ServiceState;
+import android.support.test.filters.FlakyTest;
+import android.support.test.runner.AndroidJUnit4;
+import android.telephony.TelephonyManager;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.TelephonyTestBase;
+import com.android.internal.telephony.CallStateException;
+import com.android.internal.telephony.Connection;
+import com.android.internal.telephony.Phone;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+/**
+ * Unit tests for TelephonyConnectionService.
+ */
+
+@RunWith(AndroidJUnit4.class)
+public class TelephonyConnectionServiceTest extends TelephonyTestBase {
+
+    private static final int SLOT_0_PHONE_ID = 0;
+    private static final int SLOT_1_PHONE_ID = 1;
+
+    @Mock TelephonyConnectionService.TelephonyManagerProxy mTelephonyManagerProxy;
+    @Mock TelephonyConnectionService.SubscriptionManagerProxy mSubscriptionManagerProxy;
+    @Mock TelephonyConnectionService.PhoneFactoryProxy mPhoneFactoryProxy;
+
+    TelephonyConnectionService mTestConnectionService;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        mTestConnectionService = new TelephonyConnectionService();
+        mTestConnectionService.setPhoneFactoryProxy(mPhoneFactoryProxy);
+        mTestConnectionService.setTelephonyManagerProxy(mTelephonyManagerProxy);
+        mTestConnectionService.setSubscriptionManagerProxy(mSubscriptionManagerProxy);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mTestConnectionService = null;
+        super.tearDown();
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Users default Voice SIM choice is IN_SERVICE
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the default Voice SIM choice.
+     */
+    @Test
+    @SmallTest
+    public void testDefaultVoiceSimInService() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_IN_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                true /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 0 is OUT_OF_SERVICE, Slot 1 is OUT_OF_SERVICE (emergency calls only)
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone
+     */
+    @Test
+    @SmallTest
+    public void testSlot1EmergencyOnly() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                true /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 0 is OUT_OF_SERVICE, Slot 1 is IN_SERVICE
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone
+     */
+    @Test
+    @SmallTest
+    public void testSlot1InService() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_IN_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 0 is PUK locked, Slot 1 is ready
+     * - Slot 0 is LTE capable, Slot 1 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone. Although Slot 0 is more
+     * capable, it is locked, so use the other slot.
+     */
+    @Test
+    @SmallTest
+    public void testSlot0PukLocked() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        // Set Slot 0 to be PUK locked
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_PUK_REQUIRED);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Slot 0 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_GSM);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 0 is PIN locked, Slot 1 is ready
+     * - Slot 0 is LTE capable, Slot 1 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone. Although Slot 0 is more
+     * capable, it is locked, so use the other slot.
+     */
+    @Test
+    @SmallTest
+    public void testSlot0PinLocked() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        // Set Slot 0 to be PUK locked
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_PIN_REQUIRED);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Slot 0 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_GSM);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 1 is PUK locked, Slot 0 is ready
+     * - Slot 1 is LTE capable, Slot 0 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone. Although Slot 1 is more
+     * capable, it is locked, so use the other slot.
+     */
+    @Test
+    @SmallTest
+    public void testSlot1PukLocked() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        // Set Slot 1 to be PUK locked
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_PUK_REQUIRED);
+        // Make Slot 1 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_GSM);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 1 is PIN locked, Slot 0 is ready
+     * - Slot 1 is LTE capable, Slot 0 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone. Although Slot 1 is more
+     * capable, it is locked, so use the other slot.
+     */
+    @Test
+    @SmallTest
+    public void testSlot1PinLocked() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        // Set Slot 1 to be PUK locked
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_PIN_REQUIRED);
+        // Make Slot 1 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_GSM);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 1 is LTE capable, Slot 0 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone because it is more capable
+     */
+    @Test
+    @SmallTest
+    public void testSlot1HigherCapablity() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Slot 1 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_GSM);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Slot 1 is GSM/LTE capable, Slot 0 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone because it has more
+     * capabilities.
+     */
+    @Test
+    @SmallTest
+    public void testSlot1MoreCapabilities() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Slot 1 more capable
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone,
+                RadioAccessFamily.RAF_GSM | RadioAccessFamily.RAF_LTE);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Both SIMs PUK Locked
+     * - Slot 0 is LTE capable, Slot 1 is GSM capable
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone because it is more capable,
+     * ignoring that both SIMs are PUK locked.
+     */
+    @Test
+    @SmallTest
+    public void testSlot0MoreCapableBothPukLocked() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_PUK_REQUIRED);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_PUK_REQUIRED);
+        // Make Slot 0 higher capability
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_GSM);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, two slots with SIMs inserted
+     * - Both SIMs have the same capability
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone because it is the first slot.
+     */
+    @Test
+    @SmallTest
+    public void testEqualCapabilityTwoSimsInserted() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Capability the same
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+        // Two SIMs inserted
+        setSlotHasIccCard(SLOT_0_PHONE_ID, true /*isInserted*/);
+        setSlotHasIccCard(SLOT_1_PHONE_ID, true /*isInserted*/);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, only slot 0 inserted
+     * - Both SIMs have the same capability
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone because it is the only one
+     * with a SIM inserted
+     */
+    @Test
+    @SmallTest
+    public void testEqualCapabilitySim0Inserted() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        // Make Capability the same
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+        // Slot 0 has SIM inserted.
+        setSlotHasIccCard(SLOT_0_PHONE_ID, true /*isInserted*/);
+        setSlotHasIccCard(SLOT_1_PHONE_ID, false /*isInserted*/);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, only slot 1 inserted
+     * - Both SIMs have the same capability
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone because it is the only one
+     * with a SIM inserted
+     */
+    @Test
+    @SmallTest
+    public void testEqualCapabilitySim1Inserted() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_READY);
+        // Make Capability the same
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_LTE);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+        // Slot 1 has SIM inserted.
+        setSlotHasIccCard(SLOT_0_PHONE_ID, false /*isInserted*/);
+        setSlotHasIccCard(SLOT_1_PHONE_ID, true /*isInserted*/);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, no SIMs inserted
+     * - SIM 1 has the higher capability
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 1 phone, since it is a higher
+     * capability
+     */
+    @Test
+    @SmallTest
+    public void testSim1HigherCapabilityNoSimsInserted() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        // Make Capability the same
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_GSM);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_LTE);
+        // No SIMs inserted
+        setSlotHasIccCard(SLOT_0_PHONE_ID, false /*isInserted*/);
+        setSlotHasIccCard(SLOT_1_PHONE_ID, false /*isInserted*/);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot1Phone, resultPhone);
+    }
+
+    /**
+     * Prerequisites:
+     * - MSIM Device, no SIMs inserted
+     * - Both SIMs have the same capability (Unknown)
+     *
+     * Result: getFirstPhoneForEmergencyCall returns the slot 0 phone, since it is the first slot.
+     */
+    @Test
+    @SmallTest
+    public void testEqualCapabilityNoSimsInserted() {
+        Phone slot0Phone = makeTestPhone(SLOT_0_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setDefaultPhone(slot0Phone);
+        setupDeviceConfig(slot0Phone, slot1Phone, SLOT_0_PHONE_ID);
+        setPhoneSlotState(SLOT_0_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        setPhoneSlotState(SLOT_1_PHONE_ID, TelephonyManager.SIM_STATE_ABSENT);
+        // Make Capability the same
+        setPhoneRadioAccessFamily(slot0Phone, RadioAccessFamily.RAF_UNKNOWN);
+        setPhoneRadioAccessFamily(slot1Phone, RadioAccessFamily.RAF_UNKNOWN);
+        // No SIMs inserted
+        setSlotHasIccCard(SLOT_0_PHONE_ID, false /*isInserted*/);
+        setSlotHasIccCard(SLOT_1_PHONE_ID, false /*isInserted*/);
+
+        Phone resultPhone = mTestConnectionService.getFirstPhoneForEmergencyCall();
+
+        assertEquals(slot0Phone, resultPhone);
+    }
+
+    /**
+     * The modem has returned a temporary error when placing an emergency call on a phone with one
+     * SIM slot.
+     *
+     * Verify that dial is called on the same phone again when retryOutgoingOriginalConnection is
+     * called.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialTempFailOneSlot() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        List<Phone> phones = new ArrayList<>(1);
+        phones.add(slot0Phone);
+        setPhones(phones);
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+
+        mTestConnectionService.retryOutgoingOriginalConnection(c, false /*isPermanentFailure*/);
+
+        // We never need to be notified in telecom that the PhoneAccount has changed, because it
+        // was redialed on the same slot
+        assertEquals(0, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot0Phone).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+    }
+
+    /**
+     * The modem has returned a permanent failure when placing an emergency call on a phone with one
+     * SIM slot.
+     *
+     * Verify that the connection is set to disconnected with an error disconnect cause and dial is
+     * not called.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialPermFailOneSlot() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        List<Phone> phones = new ArrayList<>(1);
+        phones.add(slot0Phone);
+        setPhones(phones);
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+
+        mTestConnectionService.retryOutgoingOriginalConnection(c, true /*isPermanentFailure*/);
+
+        // We never need to be notified in telecom that the PhoneAccount has changed, because it
+        // was never redialed
+        assertEquals(0, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot0Phone, never()).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+        assertEquals(c.getState(), android.telecom.Connection.STATE_DISCONNECTED);
+        assertEquals(c.getDisconnectCause().getCode(), DisconnectCause.ERROR);
+    }
+
+    /**
+     * The modem has returned a temporary failure when placing an emergency call on a phone with two
+     * SIM slots.
+     *
+     * Verify that the emergency call is dialed on the other slot and telecom is notified of the new
+     * PhoneAccount.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialTempFailTwoSlot() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setPhonesDialConnection(slot1Phone, c.getOriginalConnection());
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+        List<Phone> phones = new ArrayList<>(2);
+        phones.add(slot0Phone);
+        phones.add(slot1Phone);
+        setPhones(phones);
+
+        mTestConnectionService.retryOutgoingOriginalConnection(c, false /*isPermanentFailure*/);
+
+        // The cache should still contain all of the Phones, since it was a temporary failure.
+        assertEquals(2, mTestConnectionService.mEmergencyRetryCache.second.size());
+        // We need to be notified in Telecom that the PhoneAccount has changed, because it was
+        // redialed on another slot
+        assertEquals(1, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot1Phone).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+    }
+
+    /**
+     * The modem has returned a temporary failure when placing an emergency call on a phone with two
+     * SIM slots.
+     *
+     * Verify that the emergency call is dialed on the other slot and telecom is notified of the new
+     * PhoneAccount.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialPermFailTwoSlot() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setPhonesDialConnection(slot1Phone, c.getOriginalConnection());
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+        List<Phone> phones = new ArrayList<>(2);
+        phones.add(slot0Phone);
+        phones.add(slot1Phone);
+        setPhones(phones);
+
+        mTestConnectionService.retryOutgoingOriginalConnection(c, true /*isPermanentFailure*/);
+
+        // The cache should only contain the slot1Phone.
+        assertEquals(1, mTestConnectionService.mEmergencyRetryCache.second.size());
+        // We need to be notified in Telecom that the PhoneAccount has changed, because it was
+        // redialed on another slot
+        assertEquals(1, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot1Phone).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+    }
+
+    /**
+     * The modem has returned a temporary failure twice while placing an emergency call on a phone
+     * with two SIM slots.
+     *
+     * Verify that the emergency call is dialed on slot 1 and then on slot 0 and telecom is
+     * notified of this twice.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialTempFailTwoSlot_twoFailure() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setPhonesDialConnection(slot1Phone, c.getOriginalConnection());
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+        List<Phone> phones = new ArrayList<>(2);
+        phones.add(slot0Phone);
+        phones.add(slot1Phone);
+        setPhones(phones);
+
+        // First Temporary failure
+        mTestConnectionService.retryOutgoingOriginalConnection(c, false /*isPermanentFailure*/);
+        // Set the Phone to the new phone that was just used to dial.
+        c.setMockPhone(slot1Phone);
+        // The cache should still contain all of the Phones, since it was a temporary failure.
+        assertEquals(2, mTestConnectionService.mEmergencyRetryCache.second.size());
+        // Make sure slot 1 is next in the queue.
+        assertEquals(slot1Phone, mTestConnectionService.mEmergencyRetryCache.second.peek());
+        // Second Temporary failure
+        mTestConnectionService.retryOutgoingOriginalConnection(c, false /*isPermanentFailure*/);
+        // Set the Phone to the new phone that was just used to dial.
+        c.setMockPhone(slot0Phone);
+        // The cache should still contain all of the Phones, since it was a temporary failure.
+        assertEquals(2, mTestConnectionService.mEmergencyRetryCache.second.size());
+        // Make sure slot 0 is next in the queue.
+        assertEquals(slot0Phone, mTestConnectionService.mEmergencyRetryCache.second.peek());
+
+        // We need to be notified in Telecom that the PhoneAccount has changed, because it was
+        // redialed on another slot
+        assertEquals(2, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot0Phone).dial(anyString(), any(), anyInt(), any());
+            verify(slot1Phone).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+    }
+
+    /**
+     * The modem has returned a permanent failure twice while placing an emergency call on a phone
+     * with two SIM slots.
+     *
+     * Verify that the emergency call is dialed on slot 1 and then disconnected and telecom is
+     * notified of the change to slot 1.
+     */
+    @Test
+    @FlakyTest
+    @SmallTest
+    public void testRetryOutgoingOriginalConnection_redialPermFailTwoSlot_twoFailure() {
+        TestTelephonyConnection c = new TestTelephonyConnection();
+        Phone slot0Phone = c.getPhone();
+        when(slot0Phone.getPhoneId()).thenReturn(SLOT_0_PHONE_ID);
+        Phone slot1Phone = makeTestPhone(SLOT_1_PHONE_ID, ServiceState.STATE_OUT_OF_SERVICE,
+                false /*isEmergencyOnly*/);
+        setPhonesDialConnection(slot1Phone, c.getOriginalConnection());
+        c.setAddress(Uri.parse("tel:+16505551212"), TelecomManager.PRESENTATION_ALLOWED);
+        List<Phone> phones = new ArrayList<>(2);
+        phones.add(slot0Phone);
+        phones.add(slot1Phone);
+        setPhones(phones);
+
+        // First Permanent failure
+        mTestConnectionService.retryOutgoingOriginalConnection(c, true /*isPermanentFailure*/);
+        // Set the Phone to the new phone that was just used to dial.
+        c.setMockPhone(slot1Phone);
+        // The cache should only contain one phone
+        assertEquals(1, mTestConnectionService.mEmergencyRetryCache.second.size());
+        // Make sure slot 1 is next in the queue.
+        assertEquals(slot1Phone, mTestConnectionService.mEmergencyRetryCache.second.peek());
+        // Second Permanent failure
+        mTestConnectionService.retryOutgoingOriginalConnection(c, true /*isPermanentFailure*/);
+        // The cache should be empty
+        assertEquals(true, mTestConnectionService.mEmergencyRetryCache.second.isEmpty());
+
+        assertEquals(c.getState(), android.telecom.Connection.STATE_DISCONNECTED);
+        assertEquals(c.getDisconnectCause().getCode(), DisconnectCause.ERROR);
+        // We need to be notified in Telecom that the PhoneAccount has changed, because it was
+        // redialed on another slot
+        assertEquals(1, c.getNotifyPhoneAccountChangedCount());
+        try {
+            verify(slot1Phone).dial(anyString(), any(), anyInt(), any());
+            verify(slot0Phone, never()).dial(anyString(), any(), anyInt(), any());
+        } catch (CallStateException e) {
+            // This shouldn't happen
+            fail();
+        }
+    }
+
+    private Phone makeTestPhone(int phoneId, int serviceState, boolean isEmergencyOnly) {
+        Phone phone = mock(Phone.class);
+        ServiceState testServiceState = new ServiceState();
+        testServiceState.setState(serviceState);
+        testServiceState.setEmergencyOnly(isEmergencyOnly);
+        when(phone.getServiceState()).thenReturn(testServiceState);
+        when(phone.getPhoneId()).thenReturn(phoneId);
+        return phone;
+    }
+
+    // Setup 2 SIM device
+    private void setupDeviceConfig(Phone slot0Phone, Phone slot1Phone, int defaultVoicePhoneId) {
+        when(mTelephonyManagerProxy.getPhoneCount()).thenReturn(2);
+        when(mSubscriptionManagerProxy.getDefaultVoicePhoneId()).thenReturn(defaultVoicePhoneId);
+        when(mPhoneFactoryProxy.getPhone(eq(SLOT_0_PHONE_ID))).thenReturn(slot0Phone);
+        when(mPhoneFactoryProxy.getPhone(eq(SLOT_1_PHONE_ID))).thenReturn(slot1Phone);
+    }
+
+    private void setPhoneRadioAccessFamily(Phone phone, int radioAccessFamily) {
+        when(phone.getRadioAccessFamily()).thenReturn(radioAccessFamily);
+    }
+
+    private void setPhoneSlotState(int slotId, int slotState) {
+        when(mSubscriptionManagerProxy.getSimStateForSlotIdx(slotId)).thenReturn(slotState);
+    }
+
+    private void setSlotHasIccCard(int slotId, boolean isInserted) {
+        when(mTelephonyManagerProxy.hasIccCard(slotId)).thenReturn(isInserted);
+    }
+
+    private void setDefaultPhone(Phone phone) {
+        when(mPhoneFactoryProxy.getDefaultPhone()).thenReturn(phone);
+    }
+
+    private void setPhones(List<Phone> phones) {
+        when(mPhoneFactoryProxy.getPhones()).thenReturn(phones.toArray(new Phone[phones.size()]));
+    }
+
+    private void setPhonesDialConnection(Phone phone, Connection c) {
+        try {
+            when(phone.dial(anyString(), anyInt())).thenReturn(c);
+        } catch (CallStateException e) {
+            // this shouldn't happen
+            fail();
+        }
+    }
+}
diff --git a/tests/src/com/android/services/telephony/TestTelephonyConnection.java b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
new file mode 100644
index 0000000..ea0f965
--- /dev/null
+++ b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.services.telephony;
+
+import android.telecom.PhoneAccountHandle;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import com.android.internal.telephony.Call;
+import com.android.internal.telephony.Phone;
+
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Mock Telephony Connection used in TelephonyConferenceController.java for testing purpose
+ */
+
+public class TestTelephonyConnection extends TelephonyConnection {
+
+    @Mock
+    com.android.internal.telephony.Connection mMockRadioConnection;
+
+    @Mock
+    Call mMockCall;
+
+    private Phone mMockPhone;
+    private int mNotifyPhoneAccountChangedCount = 0;
+
+    @Override
+    public com.android.internal.telephony.Connection getOriginalConnection() {
+        return mMockRadioConnection;
+    }
+
+    public TestTelephonyConnection() {
+        super(null, null, false);
+        MockitoAnnotations.initMocks(this);
+
+        mMockPhone = mock(Phone.class);
+        // Set up mMockRadioConnection and mMockPhone to contain an active call
+        when(mMockRadioConnection.getState()).thenReturn(Call.State.ACTIVE);
+        when(mMockRadioConnection.getCall()).thenReturn(mMockCall);
+        when(mMockPhone.getRingingCall()).thenReturn(mMockCall);
+        when(mMockCall.getState()).thenReturn(Call.State.ACTIVE);
+    }
+
+    @Override
+    public boolean isConferenceSupported() {
+        return true;
+    }
+
+    public void setMockPhone(Phone newPhone) {
+        mMockPhone = newPhone;
+    }
+
+    @Override
+    public Phone getPhone() {
+        return mMockPhone;
+    }
+
+    public TelephonyConnection cloneConnection() {
+        return this;
+    }
+
+    @Override
+    public void notifyPhoneAccountChanged(PhoneAccountHandle pHandle) {
+        mNotifyPhoneAccountChangedCount++;
+    }
+
+    public int getNotifyPhoneAccountChangedCount() {
+        return mNotifyPhoneAccountChangedCount;
+    }
+}
diff --git a/tests/src/com/android/services/telephony/activation/ResponseReceiver.java b/tests/src/com/android/services/telephony/activation/ResponseReceiver.java
deleted file mode 100644
index 33e7f00..0000000
--- a/tests/src/com/android/services/telephony/activation/ResponseReceiver.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-
-import com.android.services.telephony.Log;
-
-public class ResponseReceiver extends BroadcastReceiver {
-    volatile public static boolean responseReceived = false;
-    public static final String ACTION_ACTIVATION_RESPONSE =
-            "com.android.services.telephony.ACTIVATION_RESPONSE";
-
-    private final Object mLock;
-    private Context mContext;
-
-    ResponseReceiver(Object lock) {
-        mLock = lock;
-    }
-
-    /** ${inheritDoc} */
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        if (!ACTION_ACTIVATION_RESPONSE.equals(intent.getAction())) {
-            Log.e(this, null, "Unexpected intent: " + intent.getAction());
-            return;
-        }
-
-        responseReceived = true;
-        Log.i(this, "received intent");
-
-        if (mLock != null) {
-            synchronized(mLock) {
-                Log.i(this, "notifying");
-                mLock.notify();
-            }
-        }
-    }
-
-    void register(Context context) {
-        context.registerReceiver(this, new IntentFilter(ACTION_ACTIVATION_RESPONSE));
-        mContext = context;
-    }
-
-    void unregister() {
-        mContext.unregisterReceiver(this);
-    }
-}
diff --git a/tests/src/com/android/services/telephony/activation/SimActivationTest.java b/tests/src/com/android/services/telephony/activation/SimActivationTest.java
deleted file mode 100644
index f6060dc..0000000
--- a/tests/src/com/android/services/telephony/activation/SimActivationTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.services.telephony.activation;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.services.telephony.Log;
-
-public class SimActivationTest extends AndroidTestCase {
-
-    private static Object mActivationLock = new Object();
-    private ResponseReceiver mResponseReceiver;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mResponseReceiver = new ResponseReceiver(mActivationLock);
-        mResponseReceiver.register(context());
-    }
-
-    /** ${inheritDoc} */
-    @Override
-    protected void tearDown() throws Exception {
-        mResponseReceiver.unregister();
-        super.tearDown();
-    }
-
-    @SmallTest
-    public void testSimActivationResponse() throws Exception {
-        Log.i(this, "Running activation test");
-
-        Intent responseIntent = new Intent(ResponseReceiver.ACTION_ACTIVATION_RESPONSE);
-        responseIntent.setPackage(context().getPackageName());
-        PendingIntent pendingResponse = PendingIntent.getBroadcast(
-                context(), 0, responseIntent, 0);
-
-        Intent intent = new Intent(Intent.ACTION_SIM_ACTIVATION_REQUEST);
-        intent.putExtra(Intent.EXTRA_SIM_ACTIVATION_RESPONSE, pendingResponse);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
-        Log.i(this, "sent intent");
-        context().startActivity(intent);
-        synchronized (mActivationLock) {
-            Log.i(this, "waiting ");
-            mActivationLock.wait(5000);
-            Log.i(this, "unwaiting");
-        }
-        assertTrue(ResponseReceiver.responseReceived);
-    }
-
-    private Context context() {
-        return getContext();
-    }
-}